二進制包(Generic Linux tarball)安裝是Linux部署MySQL最平衡「靈活度與便捷性」的方式。本文以MySQL 5.1為例,提供從下載、用戶建立、解壓、配置、初始化、權限、啟動、開機自啟、防火牆到驗證的標準化SOP,可直接作為運維手冊條目。
# 官方下載頁面選擇:Linux - Generic (glibc 2.12+)
# 文件名格式:mysql-VERSION-linux-glibc2.12-x86_64.tar.gz
wget https://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.73-linux-x86_64-glibc23.tar.gz
groupadd mysql
useradd -r -g mysql -s /bin/false mysql # -r系統用戶,-s禁止登入
cd /usr/local
tar zxvf /path/to/mysql-5.1.73-linux-x86_64-glibc23.tar.gz
ln -s mysql-5.1.73-linux-x86_64-glibc23 mysql # 版本無關的通用鏈接
cd mysql
cp support-files/my-medium.cnf /etc/my.cnf
# 依硬體調整:my-small/my-medium/my-large/my-huge.cnf
chown -R mysql:mysql .
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql:mysql data
⚠️ chown -R mysql:mysql .先給全目錄mysql權限,初始化後chown -R root .收回程序文件擁有權,僅data目錄保留mysql權限 —— 最小權限原則。
bin/mysqld_safe --user=mysql &
# 正常輸出:
# Starting mysqld daemon with databases from /usr/local/mysql/data
若顯示mysql ended,查看data/hostname.err錯誤日誌,90%為權限問題。
bin/mysqladmin -u root password 'StrongP@ssw0rd'
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
service mysqld start
service mysqld stop
service mysqld restart
service mysqld status
# 驗證端口監聽
netstat -tlnp | grep 3306
# iptables開放
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save
# 或firewall-cmd
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local
tar zxvf mysql-5.1.73-linux-x86_64-glibc23.tar.gz
ln -s mysql-5.1.73-linux-x86_64-glibc23 mysql
cd mysql
cp support-files/my-medium.cnf /etc/my.cnf
chown -R mysql:mysql .
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql:mysql data
bin/mysqld_safe --user=mysql &
bin/mysqladmin -u root password 'StrongP@ssw0rd'
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
service mysqld start
netstat -tlnp | grep 3306
| 現象 | 可能原因 | 解決 |
|---|---|---|
| mysql ended | data目錄權限錯誤 | 重執行chown步驟 |
| Can't connect to socket | socket路徑不匹配 | my.cnf指定socket、client同步 |
| Access denied | 密碼錯誤/權限表損壞 | --skip-grant-tables重置 |
| 端口衝突 | 3306被佔用 | 修改my.cnf port或停止衝突進程 |
mysql_install_db棄用,改用mysqld --initialize-insecurecaching_sha2_password認證、lower_case_table_names限制mysql_upgrade標準化SOP消除部署隨意性,配合版本控制的my.cnf模板與自動化腳本,實現MySQL基礎設施即代碼。