首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 用戶密碼設定四大方法與最佳實踐

     編輯:MySQL 資料庫相關知識

核心原則

mysql.user.Password **必須儲存 PASSWORD('plain') 雜湊值**,明文會導致認證永遠失敗。修改授權表後需 FLUSH PRIVILEGES 或 mysqladmin reload 生效。

四種設定密碼方法

1. 直接操作 user 表(不推薦)

USE mysql;
INSERT INTO user (Host,User,Password) VALUES ('%','newuser',PASSWORD('secret'));
FLUSH PRIVILEGES;

2. SET PASSWORD 語句

SET PASSWORD FOR 'newuser'@'%' = PASSWORD('secret');
-- 或更新自己密碼
SET PASSWORD = PASSWORD('newpass');

3. GRANT 建帳同時設密(推薦)

GRANT ALL ON db_name.* TO 'newuser'@'%' IDENTIFIED BY 'secret';
-- 自動加密、自動建 user 表記錄、自動生效

4. mysqladmin 命令列工具

# 設定 root 密碼(首次無舊密碼)
mysqladmin -u root password 'newpass'

# 修改既有密碼
mysqladmin -u root -p'oldpass' password 'newpass'

驗證密碼生效

mysql -u newuser -p'secret' -e "SELECT CURRENT_USER();"
# 成功回傳 newuser@%

避坑指南

  • 舊版 PASSWORD() 為 16 位,MySQL 4.1+ 為 41 位,客戶端協議必須匹配(參見文章 91190)。
  • FLUSH PRIVILEGES 僅在直接 DML 操作授權表時需要;GRANT/SET PASSWORD/mysqladmin 內建生效。
  • 生產環境**禁止**在命令列明文傳遞密碼(歷史紀錄洩露),改用 --defaults-extra-file 或交互式輸入。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved