全新安裝 MySQL 5.6(RPM 包)後,直接 mysql -u root -p 報錯:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
原因:5.6+ 版本不再預設空密碼,且未生成 .mysql_secret 檔案。需跳過權限表重置密碼。
/etc/rc.d/init.d/mysql stop
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# 此終端會阻塞,另開終端操作或 Ctrl+Z 後 bg
mysql -u root
# 進入 mysql> 提示符
UPDATE mysql.user SET password=PASSWORD('NewPass123#') WHERE user='root' AND host='localhost';
FLUSH PRIVILEGES;
QUIT;
/etc/rc.d/init.d/mysql restart
mysql -u root -p'NewPass123#'
# 成功進入
--skip-networking 非必需,但建議加上防止外部連入無權限實例。ERROR 1820 (HY000): You must SET PASSWORD before executing this statement,執行 SET PASSWORD = PASSWORD('NewPass123#'); 即可。FLUSH PRIVILEGES 或重啟服務生效。