首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 修改用戶密碼最簡單姿勢 (UPDATE mysql.user + FLUSH PRIVILEGES)

     編輯:MySQL 綜合教學

通用方法 (MySQL 5.7 之前 / 兼容模式)

mysql> UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='root';
mysql> FLUSH PRIVILEGES;

注意:MySQL 5.7+ password 欄位重命名為 authentication_string,且 PASSWORD() 函數在 8.0 移除。

現代標準方法 (MySQL 5.7.6+ / 8.0)

-- 方法 1:ALTER USER (推薦)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';

-- 方法 2:SET PASSWORD
SET PASSWORD FOR 'root'@'localhost' = 'newpass';

-- 方法 3:mysqladmin (命令列)
mysqladmin -uroot -p'oldpass' password 'newpass'

8.0 新增:雙因子認證、密碼策略、歷史記錄

-- 密碼過期策略
ALTER USER 'root'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;

-- 密碼複雜度 (validate_password 元件)
-- my.cnf: validate_password_policy=MEDIUM

忘記 root 密碼急救 (通用)

# 1. 停止服務
systemctl stop mysqld

# 2. 跳過權限表啟動
mysqld_safe --skip-grant-tables --skip-networking &

# 3. 免密登入修改
mysql -uroot
mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';

# 4. 正常重啟
mysqladmin shutdown
systemctl start mysqld

快速參考表

版本推薦語法舊語法兼容
≤ 5.6UPDATE mysql.user SET Password=PASSWORD('x')--
5.7ALTER USER / SET PASSWORDUPDATE mysql.user SET authentication_string=PASSWORD('x')
8.0ALTER USER / SET PASSWORDPASSWORD() 已移除,不可用

優先使用 ALTER USER,版本無關、語義清晰、安全合規。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved