Ubuntu 官方 MySQL 包安裝後,root 默認無密碼或密碼未知,直接 mysql -u root -p 報 Access denied。Ubuntu 預置維護帳戶 debian-sys-maint 擁有完全權限,密碼存於 /etc/mysql/debian.cnf,可作為「萬能鑰匙」重置 root 密碼。
cat /etc/mysql/debian.cnf # 輸出示例: # [client] # host = localhost # user = debian-sys-maint # password = xYzAbC123 # socket = /var/run/mysqld/mysqld.sock
mysql -u debian-sys-maint -p # 輸入上方 password(建議複製貼上,避免手輸錯誤)
USE mysql;
UPDATE user SET authentication_string=PASSWORD('NewRootPass123!') WHERE User='root';
FLUSH PRIVILEGES;
QUIT;
MySQL 5.7+ 字段為
authentication_string,5.6 為Password,8.0 建議ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewRootPass123!';
mysql -u root -p # 輸入 NewRootPass123! 登錄成功
debian-sys-maint 是 Ubuntu 維護腳本(logrotate、啟動檢查)使用的內部帳戶,擁有 RELOAD、SHUTDOWN、PROCESS、SUPER 等高權限。debian.cnf(僅 root 可讀),安全性可控。--skip-grant-tables 需重啟服務的停機時間。systemctl stop mysql。mysqld_safe --skip-grant-tables --skip-networking &。