.tar.gz),非 RPM/YUM# 官網下載
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz
# 檢查現有 MySQL 殘留
rpm -qa | grep -i mysql
# 徹底清理舊版本(忽略依賴)
rpm -e mysql-community-libs-5.7.16 --nodeps
rpm -e mysql-community-server-5.7.16 --nodeps
# ... 依次刪除所有相關包
# 再次確認
rpm -qa | grep -i mysql
# 刪除可能存在的舊用戶/組
userdel mysql 2>/dev/null
groupdel mysql 2>/dev/null
# 創建用戶組與用戶
groupadd mysql
useradd -r -g mysql -s /sbin/nologin -d /home/mysql mysql
# 創建目錄結構
mkdir -p /home/mysql/data
chown -R mysql:mysql /home/mysql
chmod 750 /home/mysql/data
tar -xzvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz
cd mysql-5.7.16-linux-glibc2.5-x86_64
mv * /home/mysql/
MySQL 5.7 棄用 mysql_install_db,改用 mysqld --initialize:
cd /home/mysql
# 清空 data 目錄(首次初始化可跳過)
rm -rf data/*
# 執行初始化(生成隨機 root 密碼)
./bin/mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data
關鍵輸出:
2016-04-08T01:48:00.440904Z 1 [Note] A temporary password is generated for root@localhost: mjT,#x_5sW
務必記錄此隨機密碼,後續修改密碼需用到。
vim /home/mysql/support-files/mysql.server
# 修改 basedir 和 datadir 為實際路徑
basedir=/home/mysql
datadir=/home/mysql/data
# 備份舊配置
mv /etc/my.cnf /etc/my.cnf.bak 2>/dev/null
# 複製模板並修改
cp /home/mysql/support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf
推薦配置:
[mysqld]
basedir = /home/mysql
datadir = /home/mysql/data
port = 3306
socket = /tmp/mysql.sock
character_set_server = utf8mb4
init_connect = 'SET NAMES utf8mb4'
default_storage_engine = InnoDB
innodb_buffer_pool_size = 1G
max_connections = 200
sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
[client]
default-character-set = utf8mb4
socket = /tmp/mysql.sock
# 測試啟動
/home/mysql/support-files/mysql.server start
# 註冊系統服務
cp /home/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
# 管理命令
service mysqld start|stop|restart|status
ln -sf /home/mysql/bin/mysql /usr/bin/mysql
ln -sf /home/mysql/bin/mysqldump /usr/bin/mysqldump
ln -sf /home/mysql/bin/mysqladmin /usr/bin/mysqladmin
# 登錄並修改密碼
mysql -u root -p'mjT,#x_5sW'
# MySQL 5.7.6+ 推薦語法
ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPass123!';
FLUSH PRIVILEGES;
# 或使用 mysqladmin
mysqladmin -u root -p'mjT,#x_5sW' password 'StrongPass123!'
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongPass123!' WITH GRANT OPTION;
FLUSH PRIVILEGES;
生產環境建議:創建專用業務賬號,限制訪問 IP 段,避免 root 遠程登錄。
# CentOS 6 iptables
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save
# 客戶端測試連接
mysql -h server_ip -u root -p
| 問題 | 原因 | 解決 |
|---|---|---|
| 啟動報找不到 /usr/local/mysql | mysql.server 腳本默認路徑 | 修改 basedir/datadir 為實際路徑 |
| initialize 報 data 目錄非空 | 殘留文件 | rm -rf data/* 後重試 |
| 忘記隨機密碼 | 未記錄 | 添加 skip-grant-tables 重置 |
| 中文亂碼 | 字符集不一致 | 統一設置 utf8mb4 |
本指南覆蓋了 CentOS 6.5 上 MySQL 5.7 二進制包部署的全流程,重點解決了 5.7 新初始化機制、路徑修正、隨機密碼處理等核心難點。生產環境部署時建議:參數調優、啟用審計日誌、配置主從復制、制定備份策略。