在生產環境中,遵循最小權限原則,通常只需授予應用賬號 SELECT 權限而非完整管理權限。本文詳細說明如何安全地配置只讀賬號。
GRANT SELECT ON *.* TO 'tianq'@'localhost' IDENTIFIED BY 'tianq';
| 參數 | 說明 |
|---|---|
SELECT | 僅授予查詢權限,禁止修改數據 |
*.* | 作用於所有數據庫的所有表;生產環境建議限定具體庫:db_name.* |
'tianq'@'localhost' | 用戶名與主機限制;% 表示任意主機,localhost 僅本地 |
IDENTIFIED BY 'tianq' | 設置密碼(MySQL 8.0+ 建議使用 CREATE USER 再 GRANT) |
-- 1. 創建用戶 CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'StrongPassw0rd!'; -- 2. 授予特定庫只讀權限 GRANT SELECT ON `production_db`.* TO 'readonly_user'@'%'; -- 3. 刷新權限生效 FLUSH PRIVILEGES;
GRANT SELECT ON *.* TO 'dev'@'%' IDENTIFIED BY '...';GRANT SELECT ON `dw_db`.* TO 'analyst'@'10.0.0.%' IDENTIFIED BY '...';GRANT SELECT ON `db`.`orders` TO 'api_user'@'%';SHOW GRANTS FOR 'tianq'@'localhost';
root 或通配符主機 % 配合弱密碼mysql.user 表,清理無用賬號caching_sha2_password 認證插件