$ mysql -u root -p
# 輸入 root 密碼
mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
驗證:
mysql> SELECT host, user, password FROM mysql.user WHERE user='myuser';
| 權限 | 說明 |
|---|---|
| ALL | 所有權限 |
| CREATE | 建立庫/表/索引 |
| SELECT | 查詢資料 |
| INSERT | 插入資料 |
| UPDATE | 修改資料 |
| DELETE | 刪除資料 |
| DROP | 刪除庫/表/視圖 |
| ALTER | 修改表結構 |
| LOCK_TABLES | 鎖定表 |
| CREATE_VIEW | 建立視圖 |
| SHOW_DATABASES | 列出資料庫 |
mysql> GRANT ON . TO 'myuser'@'localhost';
* 代表所有資料庫/所有表
範例
-- 所有庫/表給 CREATE, INSERT
mysql> GRANT CREATE, INSERT ON *.* TO 'myuser'@'localhost';
-- 所有權限
mysql> GRANT ALL ON *.* TO 'myuser'@'localhost';
驗證授權
mysql> SHOW GRANTS FOR 'myuser'@'localhost';
撤銷權限 (REVOKE)
mysql> REVOKE ON . FROM 'myuser'@'localhost';
資源限制 (WITH 子句)
限制項目 說明
MAX_QUERIES_PER_HOUR 每小時最大查詢數
MAX_UPDATES_PER_HOUR 每小時最大更新數
MAX_CONNECTIONS_PER_HOUR 每小時最大連線數
MAX_USER_CONNECTIONS 同時連線數上限
設定範例
mysql> GRANT USAGE ON *.* TO 'myuser'@'localhost'
WITH MAX_QUERIES_PER_HOUR 30 MAX_CONNECTIONS_PER_HOUR 6;
關鍵生效步驟
mysql> FLUSH PRIVILEGES;
權限變更必須執行此指令才生效。
完整掌握使用者生命週期管理:建立 → 授權 → 限制 → 重載,是 MySQL 安全運維基礎。
- 上一篇文章: MySQL 分頁技術完整總結:6 種分頁方法優缺點對比、適用場景與效能優化建議 (LIMIT/索引/排序/Prepared Statement/存儲過程)
- 下一篇文章: Linux 命令列隱藏 MySQL 密碼實作:C 語言 memset 覆蓋 argv[1] 防 ps 洩露、getc 保持進程與免 setproctitle 替代方案
Copyright © 程式碼之家 All Rights Reserved