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

MySQL GRANT 權限管理實戰筆記

     編輯:MySQL 資料庫相關知識

踩坑記錄:用戶名長度限制

GRANT ALL PRIVILEGES ON mycheckpoint.* TO 'mycheckpoint_user'@'localhost' IDENTIFIED BY '123456';
-- ERROR 1470 (HY000): String 'mycheckpoint_user' is too long for user name (should be no longer than 16)

MySQL 5.7 前用戶名上限 16 字元,5.7+ 擴展至 32 字元。命名時需注意版本差異。

GRANT 核心概念

  • 權限類型:SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、ALTER 等。
  • 作用層級:全域 (*.*)、資料庫 (db.*)、資料表 (db.table)、欄位 (db.table.col)、存儲程序/函數。
  • 主體格式:'user'@'host',host 可為 %、localhost、具體 IP。

常用操作範例

建立用戶並授權

CREATE USER 'app_user'@'%' IDENTIFIED BY 'strong_password';
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app_user'@'%';

查看權限

SHOW GRANTS FOR 'app_user'@'%';
SHOW GRANTS; -- 當前用戶

撤銷權限

REVOKE INSERT ON mydb.* FROM 'app_user'@'%';

刪除用戶

DROP USER 'app_user'@'%';

安全最佳實踐

  1. 遵循最小權限原則,僅授予必要權限。
  2. 避免使用 GRANT ALL 與 % host 組合。
  3. 定期審計 mysql.user 與 information_schema.user_privileges。
  4. 生產環境啟用 skip_name_resolve 減少 DNS 依賴。
  5. 使用角色 管理權限群組(MySQL 8.0+)。

圖示參考

官方權限矩陣圖請參考:MySQL Privileges Provided

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