忘記 root 密碼是常見運維場景,本文演示跳過權限表驗證修改密碼的標準流程。
dpkg --list | grep mysql(Debian/Ubuntu)或 rpm -qa | grep mysql(CentOS/RHEL)。mysql -uroot -p 報 Access denied。

service mysql stop # 或 systemctl stop mysqld # 確認進程已終結 ps -ef | grep mysql

/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

/usr/local/mysql/bin/mysql -u root -p
# 提示密碼直接回車
mysql> USE mysql;
mysql> UPDATE user SET password=PASSWORD('新密碼') WHERE user='root';
mysql> FLUSH PRIVILEGES;

# 殺掉 --skip-grant-tables 進程 pkill -9 mysqld # 正常啟動 service mysql start # 測試新密碼 mysql -uroot -p'新密碼'

user 表無 password 列,改為 authentication_string:UPDATE user SET authentication_string=PASSWORD('新密碼') WHERE user='root';ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';(需正常啟動下執行)。--skip-grant-tables 模式下 8.0 需額外執行 FLUSH PRIVILEGES; 才能生效修改。密碼重置後立即檢查是否有異常賬號、遠程 root 登錄權限,執行 mysql_secure_installation 加固。