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

MySQL 用戶創建與權限分配完整語法速查表

     編輯:MySQL 資料庫相關知識

MySQL 5.7+ 推薦使用 CREATE USER + GRANT 分離語法,本文匯總創建用戶、授權、修改密碼、回收權限、刪除用戶的標準化操作模板。

核心操作模板

1. 創建用戶(5.7+ 標準語法)

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-- host: % (任意IP), localhost, 192.168.1.% (通配符), 具體IP

2. 授予權限

-- 全庫全表所有權限(慎用)
GRANT ALL PRIVILEGES ON *.* TO 'username'@'host' WITH GRANT OPTION;

-- 指定庫所有權限
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'host';

-- 指定庫表精細權限
GRANT SELECT, INSERT, UPDATE, DELETE ON dbname.tbl_name TO 'username'@'host';

-- 僅讀權限
GRANT SELECT ON dbname.* TO 'username'@'host';

3. 刷新權限生效

FLUSH PRIVILEGES;

4. 修改密碼

-- 5.7+ (推薦)
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

-- 5.6 兼容
SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');
-- 或
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='username' AND Host='host';
FLUSH PRIVILEGES;

5. 回收權限

REVOKE INSERT, UPDATE ON dbname.* FROM 'username'@'host';
REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'host';

6. 刪除用戶

DROP USER 'username'@'host';

7. 查看用戶權限

SHOW GRANTS FOR 'username'@'host';

權限層級對照表

層級語法適用對象
全域ON *.*所有庫所有表,含系統庫
庫級ON dbname.*指定庫下所有表
表級ON dbname.tbl_name指定表
列級GRANT SELECT(col1,col2) ON dbname.tbl_name ...指定列(極少用)

常用權限項說明

  • ALL PRIVILEGES:除 GRANT OPTION 外所有權限
  • SELECT/INSERT/UPDATE/DELETE:基礎 DML
  • CREATE/DROP/ALTER/INDEX:DDL 結構變更
  • EXECUTE:存儲過程/函數執行
  • CREATE VIEW/SHOW VIEW:視圖操作
  • CREATE ROUTINE/ALTER ROUTINE:存儲程序管理
  • TRIGGER:觸發器操作
  • REFERENCES:外鍵創建
  • LOCK TABLES:顯式鎖表
  • RELOAD/SHUTDOWN/PROCESS/SUPER:管理員權限(極度受限)

最佳實踐原則

  1. 最小權限原則:應用賬號僅授予業務必需的庫表 DML 權限,嚴禁 ALL ON *.*。
  2. 主機限制:優先指定具體 IP 或網段(192.168.1.%),避免 %。
  3. 分離管理與業務:DBA 使用單獨高權限賬號,應用使用只讀/讀寫分離賬號。
  4. 定期審計:SELECT User, Host FROM mysql.user; 掃描無用/過期賬號並清理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved