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

MySQL 使用者密碼管理與權限控制完整教學:六種修改密碼方法與 GRANT 授權實戰

     編輯:MySQL 資料庫相關知識

六種修改密碼方法

1. phpMyAdmin 圖形介面 (最直觀)

登入 phpMyAdmin → 選擇 mysql 資料庫 → 編輯 user 表 → Password 欄位使用 PASSWORD() 函數更新。

2. mysqladmin 指令列工具

# 修改 root 密碼 (舊密碼 → 新密碼)
mysqladmin -u root -p'oldpass' password 'newpass'

# 修改其他用戶
mysqladmin -u user -p'oldpass' password 'newpass'
  • 優點:簡單快速。
  • 缺點:無法清空密碼 (設為空字串);需知舊密碼。

3. INSERT INTO user 表 (需 FLUSH PRIVILEGES)

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

4. REPLACE INTO user 表 (避免重複鍵錯誤)

REPLACE INTO mysql.user (Host, User, Password)
VALUES ('%', 'newuser', PASSWORD('pass'));
FLUSH PRIVILEGES;

5. SET PASSWORD 語法 (無需 FLUSH)

SET PASSWORD FOR 'user'@'%' = PASSWORD('pass');

6. GRANT ... IDENTIFIED BY (自動加密、無需 FLUSH)

GRANT USAGE ON *.* TO 'user'@'%' IDENTIFIED BY 'pass';
  • 推薦:最符合 SQL 標準、自動處理加密、可同時授權。

權限授權實戰

建立超級用戶

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION;

建立應用程式唯讀帳號

GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'192.168.1.%' IDENTIFIED BY 'pass';

權限欄位對照表 (MySQL 3.22.34+)

權限欄位名說明層級
SELECTSelect_priv查詢資料表
INSERTInsert_priv新增資料表
UPDATEUpdate_priv修改資料表
DELETEDelete_priv刪除資料表
CREATECreate_priv建立庫/表/索引庫/表
DROPDrop_priv刪除庫/表庫/表
GRANTGrant_priv授權給他人庫/表
FILEFile_privLOAD/INTO OUTFILEServer
SHUTDOWNShutdown_priv關閉服務Server
PROCESSProcess_priv查看/殺死執行緒Server

直接操作授權表 (不推薦手動)

INSERT INTO mysql.user VALUES ('localhost','user',PASSWORD('pass'), 'Y','Y','Y','Y', ...);
FLUSH PRIVILEGES; -- 必須

安全清單

  • 刪除匿名用戶:DELETE FROM mysql.user WHERE User='';
  • 移除 Host='%' 的 root:DELETE FROM mysql.user WHERE Host='%' AND User='root';
  • 定期審計 SHOW GRANTS FOR 'user'@'host';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved