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

MySQL 使用者帳號與權限管理實戰:GRANT 語法、授權表直操、主機通配符、FLUSH PRIVILEGES

     編輯:MySQL 資料庫相關知識

MySQL 使用者管理可透過 GRANT 指令 (推薦) 或直接操作 mysql.user/db/host 授權表。本文詳細說明兩種方式語法、建立超級用戶/一般用戶/無權限用戶範例、主機通配符用法、以及修改授權表後必須 FLUSH PRIVILEGES 的鐵則。

方式一:GRANT 指令 (標準、安全、易讀)

建立三類典型用戶

-- 超級用戶 monty,任意主機、密碼 something
GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;
-- 注意:須同時建立 localhost 與 %,否則匿名用戶優先順序高於 % 導致本地連線失敗

-- 管理用戶 admin,本地免密、僅 RELOAD/PROCESS 權限
GRANT RELOAD, PROCESS ON *.* TO admin@localhost IDENTIFIED BY '';

-- 無權限用戶 dummy,本地免密、USAGE (佔位)
GRANT USAGE ON *.* TO dummy@localhost IDENTIFIED BY '';

細粒度權限範例:custom 用戶分資料庫/主機授權

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON bankaccount.* TO custom@localhost IDENTIFIED BY 'stupid';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON expenses.* TO custom@whitehouse.gov IDENTIFIED BY 'stupid';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON customer.* TO custom@'%' IDENTIFIED BY 'stupid';

方式二:直接操作授權表 (需 FLUSH PRIVILEGES)

INSERT INTO user (Host, User, Password) VALUES ('localhost','custom',PASSWORD('stupid'));
INSERT INTO user (Host, User, Password) VALUES ('server.domain','custom',PASSWORD('stupid'));
INSERT INTO user (Host, User, Password) VALUES ('whitehouse.gov','custom',PASSWORD('stupid'));

INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv)
VALUES ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
-- ... 其他資料庫同理

FLUSH PRIVILEGES;  -- 必須執行,否則修改不生效
  • user 表建立連線身分,db 表控制資料庫層級權限。
  • 直接修改授權表**必須**執行 FLUSH PRIVILEGES 重新載入記憶體快取。

主機通配符進階用法

  • %:任意主機。
  • %.mydomain.com:特定網域所有主機 (GRANT 或 INSERT 皆支援)。
  • 具體主機名/IP 優先順序高於通配符。

工具輔助

可使用 xmysqladmin、mysql_webadmin、xmysql (Contrib 目錄) 圖形化管理授權表。

總結

首選 GRANT 指令,語法清晰、自動生效、不易出錯。直接操作授權表僅用於批次匯入/遷移腳本,**切記結尾必加 FLUSH PRIVILEGES**。理解 user/db 兩層權限架構與主機優先順序,是 MySQL 安全管理基石。

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