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

MySQL 創建用戶並授權指定數據庫:標準化操作手冊

     編輯:MySQL 綜合教學

現代語法 (MySQL 5.7.6+ / 8.0 推薦)

分離創建用戶與授權,更清晰、安全:

-- 1. 創建用戶 (指定認證插件、密碼策略、過期策略)
CREATE USER 'hail'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Str0ngP@ss!'
  PASSWORD EXPIRE INTERVAL 90 DAY
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LOCK_TIME 2;

-- 2. 授權 (按最小權限原則)
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE
  ON `haildb`.* TO 'hail'@'localhost';

-- 3. 生效
FLUSH PRIVILEGES;  -- 8.0 通常隱式生效,但保留習慣無害

常用授權模板

角色權限列表說明
只讀用戶SELECT報表、備份、只讀服務
開發/寫入用戶SELECT, INSERT, UPDATE, DELETE業務應用賬號
DDL 用戶CREATE, ALTER, DROP, INDEX, REFERENCES遷移工具、Schema 管理
存儲過程用戶EXECUTE, CREATE ROUTINE, ALTER ROUTINE需配合 DEFINER 使用
完全控制 (慎用)ALL PRIVILEGES僅限 DBA/自動化運維帳號

主機通配符與網絡控制

  • 'user'@'localhost':僅本機 Unix Socket/127.0.0.1 連接。
  • 'user'@'192.168.1.%':允許特定網段。
  • 'user'@'%':允許任意主機 (**生產嚴禁**),需配合防火牆/安全組限制源 IP。

權限回收與用戶刪除

-- 回收特定權限
REVOKE INSERT, UPDATE ON `haildb`.* FROM 'hail'@'localhost';

-- 回收所有權限 (不刪除用戶)
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hail'@'localhost';

-- 徹底刪除用戶
DROP USER 'hail'@'localhost';

修改密碼 (8.0+)

-- 管理員重置
ALTER USER 'hail'@'localhost' IDENTIFIED BY 'NewStr0ngP@ss!';

-- 用戶自改 (需舊密碼)
SET PASSWORD = 'NewStr0ngP@ss!';

最佳實踐清單

  1. 專用賬號專用庫:嚴禁跨業務庫共用賬號。
  2. 最小權限:默認只給 SELECT, INSERT, UPDATE, DELETE,DDL 權限走變更流程臨時授予。
  3. 強密碼策略:啟用 validate_password 組件,強制長度、複雜度、過期輪換。
  4. 審計日誌:開啟 audit_log 記錄所有授權變更與敏感操作。
  5. 定期巡檢:SELECT User, Host FROM mysql.user; 排查無用/過期/弱密碼賬號。

避坑指南

  • 舊版 GRANT ... IDENTIFIED BY 隱式創建用戶在 8.0 已移除,**必須先 CREATE USER**。
  • FLUSH PRIVILEGES 在 8.0 多為無操作 (權限表改為 InnoDB 事務化),但兼容性保留。
  • 通配符主機 % 不包含 localhost (Unix Socket),需單獨授權 user@localhost。
  • GRANT OPTION 允許被授權者再授權,**極度危險**,非 DBA 禁止。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved