MySQL root 密碼管理是資料庫安全基石。本文涵蓋三大情境:知舊密碼在線修改、知舊密碼命令列修改、完全忘記密碼以 --skip-grant-tables 繞過驗證強制重設,並釐清 pkill 導致服務殭屍狀態的常見誤區。

mysql -uroot -p
# 輸入舊密碼
MariaDB [(none)]> USE mysql;
MariaDB [mysql]> UPDATE user SET password=PASSWORD('newpass') WHERE user='root';
MariaDB [mysql]> FLUSH PRIVILEGES;
MariaDB [mysql]> EXIT;
注意:MySQL 5.7+ 欄位為 authentication_string,指令為 UPDATE user SET authentication_string=PASSWORD('newpass') WHERE user='root';
mysqladmin -u root -p password "newpass123"
# 輸入舊密碼
systemctl stop mysqld 或 /etc/init.d/mysqld stoppkill mysql,會導致 mysqld dead but subsys locked 殭屍狀態mysqld_safe --skip-grant-tables && 表背景執行;或另開終端機mysql
MariaDB [(none)]> USE mysql;
MariaDB [mysql]> UPDATE user SET password=PASSWORD('newpass123') WHERE user='root';
MariaDB [mysql]> FLUSH PRIVILEGES;
MariaDB [mysql]> EXIT;
systemctl restart mysqld → mysql -uroot -pnewpass123ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';mysql.user 表時注意大小寫敏感度(表名、欄位名)