MySQL 5.7 密碼存儲字段從 Password 改為 authentication_string,舊教程失效。本文提供經驗證的重置流程,含官方隨機密碼方式對比。
service mysql stopmysqld_safe --skip-grant-tables &(生產加 --skip-networking)mysql -u root 免密進入UPDATE mysql.user SET authentication_string = PASSWORD('123qwe')
WHERE user = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES; QUIT;
service mysql restartALTER USER 'root'@'localhost' IDENTIFIED BY '123';
-- 或
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');
/root/.mysql_secret,cat 取得密碼。mysqladmin -u root -h localhost password '123456' -p 輸入隨機密碼修改。實測該方式在某些環境下不可靠,推薦上述 skip-grant-tables 通用法。
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
service mysqld restart
authentication_string** 字段。ALTER USER 或 SET PASSWORD** 刷新快取,否則功能受限(如無法建表、授權)。