方法一:SET PASSWORD 命令(需登入後執行)
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法二:mysqladmin 命令列工具(無需登入)
# 首次設定密碼
mysqladmin -u root password "newpass"
# 已有密碼時修改
mysqladmin -u root -p'oldpass' password "newpass"
方法三:直接更新 user 表(需登入)
mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
方法四:忘記 root 密碼時的緊急重置(跳過權限表)
# 1. 停止服務並以跳過權限模式啟動
mysqld_safe --skip-grant-tables &
# 2. 無密碼登入
mysql -u root mysql
# 3. 修改密碼
mysql> UPDATE user SET Password = PASSWORD("new password") WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
# 4. 重啟 MySQL 服務生效
注意事項
- MySQL 5.7+ 版本
Password 欄位已改為 authentication_string
- 修改後需執行
FLUSH PRIVILEGES 刷新權限快取
- 生產環境建議使用強密碼並限制 root 只允許本地連線