首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 用戶權限管理核心命令速查:創建、授權、查看、刷新四步走

     編輯:MySQL 綜合教學

核心操作四部曲

1. 創建用戶


CREATE USER 'username'@'host' IDENTIFIED BY 'StrongPass#2024';
-- host: '%' 任意主機, '10.0.0.%' 网段, 'localhost' 本地, 具体 IP

2. 授權(按需最小權限)


-- 庫級全權限
GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'host';

-- 表級權限
GRANT SELECT, INSERT, UPDATE, DELETE ON db_name.table_name TO 'username'@'host';

-- 僅讀權限
GRANT SELECT ON db_name.* TO 'readonly'@'%';

-- 跨庫只讀(監控/備份賬號)
GRANT SELECT, SHOW VIEW, PROCESS, REPLICATION CLIENT ON *.* TO 'monitor'@'10.0.0.%';

3. 刷新權限生效


FLUSH PRIVILEGES;
-- 修改 grant 表後必須執行,動態授權 (GRANT) 通常自動生效,但建議养成习惯

4. 查看用戶權限


-- 指定用戶
SHOW GRANTS FOR 'username'@'host';

-- 當前用戶
SHOW GRANTS;

-- 批量查看所有用戶權限(生成審計報表)
SELECT CONCAT("SHOW GRANTS FOR ", QUOTE(user), "@", QUOTE(host), ";") FROM mysql.user;

進階補充:MySQL 8.0 新特性與最佳實踐

場景命令/策略
創建用戶同時授權 (8.0+)CREATE USER 'u'@'%' IDENTIFIED BY 'p'; GRANT SELECT ON db.* TO 'u'@'%'; (不再支持 GRANT ... IDENTIFIED BY 一條語句)
密碼過期策略ALTER USER 'u'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;
帳號鎖定/解鎖ALTER USER 'u'@'%' ACCOUNT LOCK/UNLOCK;
雙因子認證 (8.0+)ALTER USER 'u'@'%' ADD 2FA AUTHENTICATION FACTOR;
角色管理 (8.0+)CREATE ROLE 'app_read'; GRANT SELECT ON db.* TO 'app_read'; GRANT 'app_read' TO 'u'@'%'; SET DEFAULT ROLE 'app_read' TO 'u'@'%';
權限審計導出SELECT user, host, JSON_EXTRACT(privileges, '$.global') FROM information_schema.user_privileges; (8.0+)

常見誤區與避坑

  • 通配符濫用:'user'@'%' 僅限開發/測試環境,生產必須限定 IP/網段。
  • 過度授權:避免 GRANT ALL ON *.*,按業務模塊拆分賬號(讀寫分離、只讀、DDL 專用)。
  • 匿名用戶:安裝後立即刪除 DROP USER ''@'%'; DROP USER ''@'localhost';。
  • 密碼明文傳輸:啟用 SSL/TLS (REQUIRE SSL),或 SSH 隧道訪問。

總結

MySQL 權限管理核心是 **「創建 → 授權 → 刷新 → 審計」** 閉環。MySQL 8.0 引入角色、密碼策略、雙因子認證,建議升級並採用 RBAC 模式簡化大規模權限治理。定期執行 SHOW GRANTS 審計,清理僵屍賬號,是合規運維基線動作。

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