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

MySQL 安全管理實戰:用戶創建、授權、回收與最佳實踐

     編輯:MySQL 綜合教學

登入 MySQL 基礎

# 進入安裝目錄
cd "C:\Program Files\MySQL\MySQL Server 5.6\bin"

# 用戶登入
mysql -h localhost -u abc -pabc
# -h: 主機名,localhost 為本機
# -u: 用戶名
# -p: 密碼(無密碼直接 -p 回車)

CREATE USER 創建用戶(推薦,職責單一)

CREATE USER 'li'@'localhost' IDENTIFIED BY 'li';

授權:GRANT

-- 授予 person 庫所有權限,含 GRANT OPTION
GRANT ALL ON person.* TO 'li'@'localhost' WITH GRANT OPTION;

-- 立即生效(5.6+ 修改即時生效,舊版本需 FLUSH PRIVILEGES)
FLUSH PRIVILEGES;

GRANT 隱式創建用戶(舊版本常用)

-- 授予 SELECT、INSERT,同時創建用戶 abc
GRANT SELECT, INSERT ON person.* TO 'abc'@'localhost' IDENTIFIED BY 'abc';

-- 允許 abc 將權限轉授他人
GRANT SELECT, INSERT ON person.* TO 'abc'@'localhost' IDENTIFIED BY 'abc' WITH GRANT OPTION;

權限查看

-- 當前用戶權限
SHOW GRANTS;

-- 指定用戶權限
SHOW GRANTS FOR 'abc'@'localhost';

權限回收:REVOKE

-- 回收 abc 對 person 庫的 INSERT
REVOKE INSERT ON person.* FROM 'abc'@'localhost';

-- 回收 person 庫所有權限
REVOKE ALL ON person.* FROM 'abc'@'localhost';

-- 回收所有庫所有權限(慎用!)
REVOKE ALL ON *.* FROM 'abc'@'localhost';

刪除用戶

-- 5.7+ 直接刪除,無需先回收權限
DROP USER 'abc'@'localhost';

最佳實踐清單

  1. 最小權限原則:業務賬號僅授予必要庫、必要表、必要操作 (SELECT/INSERT/UPDATE/DELETE)
  2. 按環境隔離:dev/test/prod 使用完全不同的賬號,密碼複雜度滿足策略
  3. 禁用 root 遠程登入:UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES;
  4. 定期審計:SELECT User, Host FROM mysql.user; 檢查殭屍賬號、過度授權賬號
  5. 密碼輪換:配合 validate_password 插件強制複雜度,定期 ALTER USER ... IDENTIFIED BY ...
  6. 審計日誌:開啟 audit_log 記錄所有 DDL/DML/登入操作

常見誤區

誤區正確做法
GRANT ALL ON *.* 給應用賬號按庫、按表、按列精細授權
通配符主機 '%' 滿天飛限制具體 IP 段或主機名
密碼明文寫在腳本/配置使用密碼管理工具、環境變數、密鑰保管庫
以為 FLUSH PRIVILEGES 總是必需5.6+ 修改即時生效,僅修改 grant 表直改時需刷新
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved