mysqldump -u root -p -E --all-databases > /home/db-backup.sql
cp /etc/my.cnf /home/my.cnf
service mysqld stop
yum remove mysql mysql-server mysql-devel mysql-embedded-devel mysql-libs mysql-embedded
依賴關係會自動處理,確認刪除 4~6 個套件。
getconf LONG_BIT / getconf WORD_BIT(均為 32 → 下載 i686)wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-common-5.7.10-1.el6.i686.rpm wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-5.7.10-1.el6.i686.rpm wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-client-5.7.10-1.el6.i686.rpm wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-server-5.7.10-1.el6.i686.rpm
yum install -y libnuma* rpm -ivh mysql-community-common-5.7.10-1.el6.i686.rpm rpm -ivh mysql-community-libs-5.7.10-1.el6.i686.rpm rpm -ivh mysql-community-client-5.7.10-1.el6.i686.rpm rpm -ivh mysql-community-server-5.7.10-1.el6.i686.rpm
驗證:
yum list installed | grep ^mysql mysql --version # mysql Ver 14.14 Distrib 5.7.10, for Linux (i686)
/etc/my.cnf 指向新目錄:
[mysqld] datadir=/var/lib/mysql5.7 socket=/var/lib/mysql5.7/mysql.sock [client] socket=/var/lib/mysql5.7/mysql.sock
/etc/init.d/mysqld 第 47 行:
get_mysql_option mysqld datadir "/var/lib/mysql5.7"
mysqld --initialize # 輸出臨時 root 密碼,如:sfW2h2*Y55IS
chown -R mysql:mysql /var/lib/mysql5.7 chmod -R 770 /var/lib/mysql5.7
service mysqld start → 正常啟動,netstat -ano | grep 3306 監聽成功service mysqld stop
mysqld_safe --skip-grant-tables & # 後台運行
mysql -u root # 免密進入
USE mysql;
UPDATE user SET authentication_string=PASSWORD('123456') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
chkconfig --add mysqld chkconfig --list mysqld # mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
根據需要從 /home/db-backup.sql 導入特定庫表,避免系統表衝突。
--initialize,不可直接覆蓋舊目錄secure_file_priv、explicit_defaults_for_timestamp 等新參數需關注authentication_string 取代 Password 欄位,密碼重置語法變更datadir 參數與 my.cnf 必須一致,否則 Socket 路徑錯誤mysqld_safe 需帶 --user=mysql 確保權限正確