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

MySQL 命令列建立用戶與授權完整教學(含權限模型詳解)

     編輯:MySQL 綜合教學

前置條件

  • 擁有 root 或具備 CREATE USER、GRANT OPTION 權限的管理帳號
  • MySQL 5.7+ 建議使用原生 CREATE USER / GRANT 語法,舊版 INSERT INTO mysql.user 已棄用

一、建立用戶(現代標準寫法 MySQL 5.7+)

-- 1. 登入管理端
mysql -u root -p

-- 2. 建立用戶(指定認證插件與密碼策略)
CREATE USER 'phplamp'@'localhost' IDENTIFIED WITH mysql_native_password BY 'StrongPass123!';

-- 3. 刷新權限(5.7+ 通常自動生效,但習慣執行)
FLUSH PRIVILEGES;

常見主機匹配模式:

主機值含義
localhost本機 Unix socket 連線
127.0.0.1本機 TCP/IP 連線
192.168.1.%允許 192.168.1.0/24 網段
%允許任意主機(生產慎用)

二、建立資料庫並授權

-- 1. 建立目標資料庫
CREATE DATABASE phplampDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 2. 授予該庫所有權限
GRANT ALL PRIVILEGES ON phplampDB.* TO 'phplamp'@'localhost';

-- 3. 授予特定權限(最小權限原則)
GRANT SELECT, INSERT, UPDATE, DELETE ON phplampDB.* TO 'phplamp'@'192.168.1.100';

-- 4. 授予全庫所有權限(超級管理員,極度慎用)
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'10.0.0.1' WITH GRANT OPTION;

-- 5. 刷新生效
FLUSH PRIVILEGES;

三、MySQL 權限體系詳解(14 類核心權限)

權限作用範圍典型操作
SELECT表/欄查詢資料
INSERT表/欄新增資料
UPDATE表/欄修改資料
DELETE表/欄刪除資料
CREATE庫/表/索引建立物件
DROP庫/表/視圖刪除物件
INDEX表建立/刪除索引
ALTER表修改表結構
REFERENCES表/欄建立外鍵
CREATE VIEW視圖建立視圖
SHOW VIEW視圖查看視圖定義
TRIGGER表建立觸發器
EXECUTE存儲程序/函數執行程序
LOCK TABLES表鎖表操作

管理類權限(僅全域 *.* 生效): RELOAD, SHUTDOWN, PROCESS, FILE, CREATE USER, SUPER, REPLICATION SLAVE/CLIENT 等。

四、實用授權範本

-- 唯讀帳號(報表、BI)
GRANT SELECT ON *.* TO 'readonly'@'10.0.%.%' IDENTIFIED BY 'ReadOnlyPass!';

-- 開發帳號(特定庫 DDL+DML)
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON dev_db.* TO 'dev'@'%' IDENTIFIED BY 'DevPass123!';

-- 遷移同步帳號(需 REPLICATION SLAVE)
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.0.1.%' IDENTIFIED BY 'ReplPass456!';

-- 監控帳號(僅 PROCESS, REPLICATION CLIENT)
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'monitor'@'10.0.0.%' IDENTIFIED BY 'MonPass789!';

五、查看與撤銷權限

-- 查看用戶權限
SHOW GRANTS FOR 'phplamp'@'localhost';

-- 撤銷特定權限
REVOKE DELETE ON phplampDB.* FROM 'phplamp'@'localhost';

-- 撤銷所有權限並刪除用戶
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'phplamp'@'localhost';
DROP USER 'phplamp'@'localhost';

六、安全最佳實踐

  1. 最小權限原則:僅授予業務必要權限,拒絕 GRANT ALL ON *.*
  2. 強制密碼策略:啟用 validate_password 元件,設定長度、複雜度、過期週期
  3. 禁用通配主機:避免 'user'@'%',改用具體 IP/網段
  4. 定期審計:SELECT user, host FROM mysql.user; 掃描無用帳號
  5. SSL 強制連線:GRANT ... REQUIRE SSL 加密傳輸

延伸閱讀

  • MySQL 查詢亂碼的解決方法
  • MySQL 刪除重複記錄的方法
  • MySQL 查詢快取機制簡介
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved