初次接觸 Linux 伺服器的開發者,往往會經歷「真香」與「蛋疼」並存的心路歷程。低配置的 Linux 機器跑起服務來輕快穩定,但全命令行的操作模式、複雜的依賴關係、以及動輒報錯的權限問題,確實讓人怨聲載道。本文記錄一次在華為雲 Linux 伺服器上,從零開始完成 MySQL 5.6 安全安裝、密碼重置、遠程授權到專案部署的完整實戰過程,旨在為同路人趟雷、填坑。
MySQL 官方提供打包好的 RPM Bundle,包含 Server、Client、Shared、Devel 等所有組件,適合離線或內網環境部署。使用 wget 支援斷點續傳,穩妥高效:
wget -c https://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle.tar
參數說明: -c 表示支援斷點續傳,網路波動時無需重頭下載。下載完成後,建議對比 MD5 校驗碼,確保文件完整性。
解壓 Bundle 包:
tar -xvf MySQL-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle.tar
解壓後會產生多個 .rpm 文件。雖然核心只有 server 和 client,但為避免後續缺庫報錯,建議一次性全裝:
yum install MySQL-*.rpm --nogpgcheck
關鍵點: --nogpgcheck 跳過 GPG 簽名驗證,否則常報「Public Key not found」。安裝過程會輸出大量日誌,**務必留意輸出**,其中藏著初始隨機密碼的關鍵線索。
許多教程稱 MySQL 5.6+ 默認密碼為空,**實測完全錯誤**。安裝過程會在 /root/.mysql_secret 生成一個隨機密碼:
cat /root/.mysql_secret
# 輸出範例:The random password set for root@localhost is: XyZ123!@#
複製該密碼登入:
mysql -uroot -p
# 輸入隨機密碼
首次登入後,系統強制要求修改密碼:
SET PASSWORD = PASSWORD('YourStrongP@ssw0rd');
為了讓應用伺服器(如 Tomcat)遠程連線,執行標準授權:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'YourStrongP@ssw0rd' WITH GRANT OPTION;
FLUSH PRIVILEGES;
**然而**,本地測試卻提示「密碼過期」。查詢 mysql.user 表發現 password_expired 為 Y:
SELECT host, user, password_expired FROM mysql.user WHERE user='root';
UPDATE mysql.user SET password_expired='N' WHERE user='root';
FLUSH PRIVILEGES;
以為大功告成,但用 mysql -h localhost -uroot -p 依然報錯。經排查,**localhost 在 MySQL 中走 Unix Socket,而 127.0.0.1 走 TCP/IP,權限記錄是分開的**。解決方案:
# 使用 127.0.0.1 登入重設一次密碼
mysql -h 127.0.0.1 -uroot -p
SET PASSWORD = PASSWORD('YourStrongP@ssw0rd');
至此,本地、遠程雙通道均正常。
多次密碼輸入錯誤導致伺服器防火牆封禁當前 IP,無法 SSH 登入。應急方案:
vim /etc/ssh/sshd_config,修改 Port 2222,重啟 service sshd restart。vim /etc/hosts.deny,刪除被封禁的 IP 行。fail2ban 或安全組規則長期防護。Linux 下 MySQL 安裝看似繁瑣,實則邏輯清晰:**官方 RPM + yum 解決依賴 → 讀取臨時密碼 → 強制改密 → 區分 localhost/127.0.0.1 權限 → 防火牆/安全組放行 3306**。掌握核心節點,避開常見坑點,一次部署,長期安穩。