MySQL 遠程訪問授權與 SQL 審計日誌配置指南
遠程用戶授權標準語法
GRANT ALL PRIVILEGES ON cakephp.* TO 'cakephp'@'192.168.14.1' IDENTIFIED BY 'lpfukia';
FLUSH PRIVILEGES;
指令解析
| 元素 | 說明 |
ALL PRIVILEGES | 授予所有權限(SELECT/INSERT/UPDATE/DELETE 等) |
cakephp.* | 目標資料庫.所有表 |
'cakephp'@'192.168.14.1' | 用戶名@允許連線的主機 IP(可用 % 通配) |
IDENTIFIED BY | 設定密碼 |
FLUSH PRIVILEGES | 重新載入授權表使生效 |
常見授權變體
-- 僅特定權限
GRANT SELECT, INSERT ON db.* TO 'user'@'%' IDENTIFIED BY 'pass';
-- 允許所有 IP (生產環境慎用)
GRANT ALL ON *.* TO 'admin'@'%' IDENTIFIED BY 'strong_pass';
-- 授予 GRANT OPTION (可再授權)
GRANT ALL ON db.* TO 'super'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;
SQL 審計日誌配置(通用查詢日誌)
參考資源:MySQL 記錄所有 SQL 語句到日誌檔案
配置方式
-- my.cnf [mysqld] 區段
general_log = 1
general_log_file = /var/log/mysql/mysql-query.log
log_output = FILE -- 或 TABLE 寫入 mysql.general_log 表
動態開啟/關閉 (無需重啟)
SET GLOBAL general_log = 1;
SET GLOBAL general_log = 0;
查詢結果轉視圖再聚合範例