# 首次設定密碼
mysqladmin -u root password 'newpass'
# 變更密碼
mysqladmin -u root -p'oldpass' password 'newpass'
mysql -u root -p
UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
※ MySQL 5.7+ 欄位為 authentication_string,5.6 為 password。
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
-- 或
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass'; -- 5.7.6+
systemctl stop mysqld 或 service mysql stopmysqld_safe --skip-grant-tables --skip-networking &mysql -u root
FLUSH PRIVILEGES; -- 必須先執行,否則 UPDATE 無效
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';
EXIT;
systemctl restart mysqldbin 目錄:mysqld --skip-grant-tables --skip-networkingmysql -u root → 同樣執行 FLUSH PRIVILEGES; ALTER USER...將已知密碼實例的 user.frm/.MYD/.MYI 複製覆蓋目標實例 datadir/mysql/,修正擁有者 chown mysql:mysql 與權限 chmod 660,重啟後登入再修改密碼。注意版本相容性與檔案權限問題。
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE Host='%';
FLUSH PRIVILEGES;
移除匿名帳號與通配符主機,縮小攻擊面。