MySQL 安裝後自帶 mysql 系統庫,user 表存儲帳號資訊,主鍵為 (Host, User)。無圖形工具時,完全可用 SQL 管理用戶。
CREATE USER 'app'@'192.168.1.%' IDENTIFIED BY 'StrongPass#2024';
-- 全庫全表最高權限,僅本地
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'Pass@123' WITH GRANT OPTION;
-- 特定庫特定表權限
GRANT SELECT, INSERT, UPDATE ON `shop`.`orders` TO 'reader'@'10.0.0.%' IDENTIFIED BY 'ReadOnly#1';
-- 欄位級權限
GRANT SELECT (`id`, `name`), UPDATE (`status`) ON `cms`.`articles` TO 'editor'@'%' IDENTIFIED BY 'Edit@2024';
| 權限 | 說明 |
|---|---|
| ALL PRIVILEGES | 除 GRANT OPTION 外所有權限 |
| SELECT / INSERT / UPDATE / DELETE | 增刪改查基礎權限 |
| CREATE / DROP / ALTER | 結構變更權限 |
| INDEX | 索引管理 |
| EXECUTE | 執行存儲過程/函數 |
| RELOAD / SHUTDOWN / SUPER | 管理員級權限 |
| REPLICATION SLAVE / CLIENT | 主從同步相關 |
| FILE | 讀寫服務器檔案(高風險) |
GRANT ... TO 'user'@'%'
WITH MAX_QUERIES_PER_HOUR 1000
MAX_UPDATES_PER_HOUR 500
MAX_CONNECTIONS_PER_HOUR 100
MAX_USER_CONNECTIONS 10;
DROP USER 'old_user'@'192.168.1.%';
會同步清理 tables_priv、columns_priv、procs_priv 等關聯表記錄。
RENAME USER 'dev'@'localhost' TO 'dev'@'%';
REVOKE UPDATE ON *.* FROM 'dev'@'localhost';
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'dev'@'localhost';
FLUSH PRIVILEGES;
-- 5.7.6+ 標準語法
ALTER USER 'app'@'%' IDENTIFIED BY 'NewStrongPass#2024';
-- 兼容舊版
SET PASSWORD FOR 'app'@'%' = PASSWORD('NewStrongPass#2024');
FLUSH PRIVILEGES;
-- 列出所有用戶
SELECT User, Host FROM mysql.user;
-- 查看特定用戶權限
SHOW GRANTS FOR 'app'@'%';
%@%` 萬用帳號。FLUSH PRIVILEGES 或重啟服務使權限生效(8.0+ 多數操作自動生效)。SELECT * FROM mysql.user WHERE Password = '' OR authentication_string = '';