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

MySQL GRANT 語句新增用戶與權限管理完整指南

     編輯:MySQL 資料庫相關知識

兩種新增用戶方式

  1. GRANT 語句:語法簡潔、自動刷新權限、不易出錯(推薦)
  2. 直接操作授權表:需手動 FLUSH PRIVILEGES、易遺漏欄位

前置條件

  • 在 MySQL 伺服器本機操作
  • 以 root 用戶連線
  • root 擁有 INSERT(mysql.db)與 RELOAD 權限

一、GRANT 語句實戰範例

shell> mysql -u root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT RELOAD, PROCESS ON *.* TO 'admin'@'localhost';
mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';

建立的三類用戶

用戶連線來源密碼權限用途
monty任意主機(% + localhost)something全域所有權限 + GRANT OPTION超級管理員
adminlocalhost無RELOAD, PROCESS運維管理(flush、processlist)
dummylocalhost無USAGE(無實際權限)預留帳號,後續授權
關鍵點:必須同時建立 user@localhost 與 user@%,否則匿名用戶優先匹配導致本地連線失效。

二、複雜權限場景範例

用戶 custom 需求:

  • 允許從 localhost、server.domain、whitehouse.gov 連線
  • 密碼統一為 stupid
  • 權限:bankaccount 僅限 localhost、expenses 僅限 whitehouse.gov、customer 三主機皆可
GRANT SELECT,INSERT,UPDATE,DELETE ON bankaccount.* TO 'custom'@'localhost' IDENTIFIED BY 'stupid';
GRANT SELECT,INSERT,UPDATE,DELETE ON expenses.* TO 'custom'@'whitehouse.gov' IDENTIFIED BY 'stupid';
GRANT SELECT,INSERT,UPDATE,DELETE ON customer.* TO 'custom'@'localhost' IDENTIFIED BY 'stupid';
GRANT SELECT,INSERT,UPDATE,DELETE ON customer.* TO 'custom'@'server.domain' IDENTIFIED BY 'stupid';
GRANT SELECT,INSERT,UPDATE,DELETE ON customer.* TO 'custom'@'whitehouse.gov' IDENTIFIED BY 'stupid';

三、直接操作授權表(進階/遷移場景)

mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('something'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user VALUES('%','monty',PASSWORD('something'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost', User='admin', Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password) VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;
注意:MySQL 版本不同,user 表權限欄位數量不同(3.22.11 前較少)。建議優先使用 GRANT。

四、權限生效與驗證

# 立即生效(GRANT 自動觸發)
# 手動刷新(直接修改表後必須)
FLUSH PRIVILEGES;

# 驗證用戶權限
SHOW GRANTS FOR 'monty'@'localhost';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved