Linux 環境下以二進制包(tar.gz)安裝 MySQL 是生產部署常態。本文以 MySQL 5.5.48 為例,記錄解壓、用戶建立、目錄授權、初始化、服務註冊、啟動、密碼設定、Socket 修復、遠程授權全流程。
tar zxvf mysql-5.5.48-linux2.6-x86_64.tar.gz
cp -r mysql-5.5.48-linux2.6-x86_64 /usr/local/mysql
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local/mysql
chown -R mysql:mysql ./
./scripts/mysql_install_db --user=mysql
chown -R root:root ./
chown -R mysql:mysql data
cp support-files/mysql.server /etc/init.d/mysql
service mysql start
# 驗證
ps -ef | grep mysql
./bin/mysqladmin -u root -h localhost.localdomain password '新密碼'
ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql
錯誤:Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
原因:/etc/my.cnf 指定 socket=/var/lib/mysql/mysql.sock,但客戶端預設找 /tmp/mysql.sock。
解決:建立軟連結
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
或修改 /etc/my.cnf 統一為 /tmp/mysql.sock。
問題:Windows Navicat 無法連線 Linux MySQL。
根因:mysql.user 表中 Host 欄位限制連線來源。
解決:
mysql> USE mysql;
mysql> UPDATE user SET Host='%' WHERE User='root';
mysql> FLUSH PRIVILEGES;
驗證:
mysql> SELECT User, Host, Password FROM user;
+------+-----------+-------------------------------------------+
| User | Host | Password |
+------+-----------+-------------------------------------------+
| root | % | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+-----------+-------------------------------------------+
確認 Host='%' 且密碼一致即可遠程連線。
telnet 192.168.x.x 3306
# 顯示亂碼 + "mysql_native_password" 為正常協議握手過程,非錯誤
/usr/local/mysqlmysql 用戶/群組建立mysql_install_db 初始化成功data 目錄擁有者為 mysql:mysql/etc/init.d/mysql 並設定開機自啟root 密碼已設定user.Host='%' 允許遠程iptables -A INPUT -p tcp --dport 3306 -j ACCEPTLinux 二進制包安裝 MySQL 核心在於「目錄授權正確、Socket 路徑一致、用戶 Host 授權開放、防火牆放行」。建議將上述流程封裝為 Ansible Playbook 或 Shell 腳本,實現標準化、可重複的自動化部署。