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

MySQL 權限管理完全手冊:從建立用戶到精細授權實戰

     編輯:MySQL 綜合教學

MySQL 權限系統是資料庫安全的第一道防線。掌握用戶生命週期管理、分級授權機制、權限轉移控制及資源限制配置,是 DBA 與開發者的必修課。本文系統整理核心操作語法與最佳實踐,附帶實戰場景解析。

一、用戶生命週期管理

-- 建立用戶(指定主機與密碼)
CREATE USER 'mark'@'localhost' IDENTIFIED BY '123456';

-- 刪除用戶
DROP USER 'mark'@'localhost';

-- 重命名用戶
RENAME USER 'mark'@'localhost' TO 'mark1'@'localhost';

-- 修改密碼(5.7+ 建議用 ALTER USER)
SET PASSWORD FOR 'mark'@'localhost' = PASSWORD('111111');

二、分級授權體系

1. 表級權限

USE mysql;
GRANT SELECT ON user TO 'mark'@'localhost';

支援權限:SELECT、INSERT、DELETE、UPDATE、REFERENCES、CREATE、ALTER、INDEX、DROP、ALL/ALL PRIVILEGES

2. 資料庫級權限


GRANT SELECT ON mysql.* TO 'mark'@'localhost';

擴展權限:CREATE TEMPORARY TABLES、CREATE VIEW、SHOW VIEW、CREATE/ALTER/EXECUTE ROUTINE、LOCK TABLES 等

3. 全域管理權限


GRANT CREATE USER ON *.* TO 'mark'@'localhost';
GRANT CREATE, ALTER, DROP ON *.* TO 'mark'@'localhost';

三、權限轉移與資源限制

WITH GRANT OPTION 允許受授權用戶將自身權限再授予他人:


GRANT SELECT ON mysql.user TO 'mark'@'localhost' WITH GRANT OPTION;

資源限制子句 可防範濫用:

  • MAX_QUERIES_PER_HOUR 1:每小時查詢上限
  • MAX_CONNECTIONS_PER_HOUR 1:每小時連線上限
  • MAX_UPDATES_PER_HOUR 1:每小時更新上限
  • MAX_USER_CONNECTIONS 1:同步連線上限

GRANT SELECT ON mysql.user TO 'mark'@'localhost' WITH MAX_QUERIES_PER_HOUR 1;

四、權限回收與審計


REVOKE SELECT ON mysql.user FROM 'mark'@'localhost';

最佳實踐建議: 遵循最小權限原則,定期審計 mysql.user、mysql.db、mysql.tables_priv 等權限表;生產環境嚴禁使用 root@%,生產帳號需綁定具體 IP,並啟用 SSL 加密傳輸。

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