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

MySQL 用戶創建與授權實戰:GRANT 權限體系、主機匹配、權限回收與最佳實踐

     編輯:MySQL 資料庫相關知識

MySQL 權限體系基於「用戶@主機」二元組,GRANT 授權、REVOKE 回收、FLUSH PRIVILEGES 生效。本文實戰演示:創建本地/遠程用戶、授予庫級/表級/列級權限、查看權限、回收特定權限、ALL PRIVILEGES 具體包含權限清單、通配符主機匹配規則、安全加固建議。

一、創建用戶與基礎授權

-- 本地用戶
CREATE USER 'byrd'@'localhost' IDENTIFIED BY 'admin123';

-- 授予 gbk 庫所有權限
GRANT ALL ON gbk.* TO 'byrd'@'localhost';

-- 遠程用戶(指定 IP/網段/域名)
GRANT ALL ON gbk.* TO 'remote_user'@'192.168.1.%' IDENTIFIED BY 'admin123';

-- 刷新生效
FLUSH PRIVILEGES;

二、查看權限

SHOW GRANTS FOR 'byrd'@'localhost';

輸出解析:

  • GRANT USAGE ON *.*:連接權限(無實質操作權限)。
  • GRANT ALL PRIVILEGES ON `gbk`.*:庫級全權限。

三、ALL PRIVILEGES 包含的具體權限(18 項)

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX,
ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE,
CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER

注意:不含 GRANT OPTION(授權他人權限)、FILE、SHUTDOWN、PROCESS、SUPER、RELOAD 等管理權限。

四、精細授權與回收示例

-- 僅授予讀寫權限
GRANT SELECT, INSERT, UPDATE, DELETE ON gbk.* TO 'app_user'@'%';

-- 回收 INSERT 權限
REVOKE INSERT ON gbk.* FROM 'byrd'@'localhost';

-- 查看回收後權限
SHOW GRANTS FOR 'byrd'@'localhost';
-- 輸出:SELECT, UPDATE, DELETE, CREATE, DROP, ... (無 INSERT)

五、主機匹配規則與通配符

主機值匹配範圍優先級
'user'@'localhost'本地 Unix socket / 127.0.0.1高
'user'@'127.0.0.1'僅 TCP 本地回環高
'user'@'192.168.1.%'192.168.1.0/24 網段中
'user'@'%'任意主機(最寬鬆)低
'user'@'%.example.com'example.com 子域名中

原則:最小權限、最具體主機。避免 'root'@'%'。

六、安全加固清單

  1. 刪除匿名用戶:DROP USER ''@'%';
  2. 禁止 root 遠程登錄:RENAME USER 'root'@'%' TO 'root'@'localhost';
  3. 設置強密碼策略:VALIDATE_PASSWORD 插件(長度、混合字符、字典檢查)。
  4. 定期審計:SELECT user, host FROM mysql.user;、SHOW GRANTS 導出審計。
  5. 應用賬號拆分:讀寫分離賬號、只讀賬號、遷移賬號、監控賬號,權限最小化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved