MySQL 5.7 將 user 表的 Password 字段改為 authentication_string,舊版教學多失效。本文提供經驗證可行的修改流程。
skip-grant-tables 免密登入法(推薦)killall -TERM mysqldmysqld_safe --skip-grant-tables &--skip-networking 禁止遠程連線)mysql -u rootUPDATE mysql.user SET authentication_string = PASSWORD('123qwe') WHERE user = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
QUIT;
killall -TERM mysqld && mysqld_safe &ALTER USER 完成功能解鎖:ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
mysql_secure_installation 流程(5.6+ 版本)/root/.mysql_secret 生成隨機密碼。cat /root/.mysql_secret 取得密碼。mysqladmin -u root -h localhost password '123456' -p 輸入隨機密碼修改。service mysqld stop
mysqld_safe --skip-grant-tables &
mysql -u root -p # 直接 Enter
USE mysql;
UPDATE user SET password = PASSWORD('123456') WHERE user = 'root';
FLUSH PRIVILEGES;
QUIT
# 重啟服務
關鍵提醒:5.7 必須操作 authentication_string 字段,並配合 ALTER USER 或 SET PASSWORD 刷新快取,否則雖能登入但功能受限。