官方 Generic 二進制包自定義性強、無依賴地獄,但 5.7.6+ 初始化機制變更、SSL/RSA 自動生成、預設密碼策略等導致舊教程失效。本文記錄經驗證可行的完整流程。
cd /opt wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz ln -s mysql-5.7.11-linux-glibc2.5-x86_64 mysql cd mysql
groupadd mysql useradd -r -g mysql -s /bin/false mysql mkdir data chown -R root:root . chown -R mysql:mysql data
bin/mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data bin/mysql_ssl_rsa_setup --datadir=/opt/mysql/data
--initialize:產生隨機 root 密碼,輸出到 stderr(需捕獲)mysql_ssl_rsa_setup:生成 SSL 憑證與 RSA 金鑰,支援加密連線--basedir/--datadir 導致預設讀取 /etc/my.cnf 失敗,命令列指定最穩妥cp support-files/my-default.cnf /opt/mysql/my.cnf vim /opt/mysql/my.cnf
最小必要內容:
[mysqld] basedir=/opt/mysql datadir=/opt/mysql/data log-error=/var/log/mysql-error.log
bin/mysqld_safe --user=mysql &
驗證:netstat -nat | grep 3306 或 tail -f /var/log/mysql-error.log
# 從初始化輸出獲取隨機密碼,假設為 xxxxxx
bin/mysql --user=root --password=xxxxxx
mysql> SET PASSWORD = PASSWORD('1234');
# 或 5.7.6+ 推薦
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234'; FLUSH PRIVILEGES;
mysqladmin --user=root --password=1234 shutdown
| 項目 | 5.6 | 5.7.11 |
|---|---|---|
| 初始化指令 | mysql_install_db | mysqld --initialize |
| 預設密碼 | 空 | 隨機(需從日誌獲取) |
| SSL/RSA | 手動生成 | mysql_ssl_rsa_setup 自動 |
| 密碼修改 | UPDATE user SET password=... | ALTER USER / SET PASSWORD |
| GTID | 不支援 | 原生支援 |
掌握新版初始化與密碼流程,Generic 包部署即可得心應手。