全新安裝的 MySQL **默認 root 無密碼、存在匿名用戶、測試庫開放**,處於極度不安全狀態。本文詳細講解 Root 密碼設置、權限表重載、匿名用戶清理、測試庫移除、遠程訪問限制五大安全加固動作,構建生產級基線安全。
| 項目 | 默認狀態 | 風險 |
| root@localhost | 無密碼 | 任意本地用戶獲取最高權限 |
| 匿名用戶 ''@localhost | 存在 | 無帳號即可連接,操作 test 庫 |
| test 數據庫 | 存在,匿名可讀寫 | 數據洩露、垃圾數據污染 |
| 遠程 root 訪問 | 禁止 (僅 localhost) | 相對安全,但本地提權後可修改 |
二、 核心加固動作 (按順序執行)
1. 設置 Root 密碼 (三種等效方式)
-- 方式 A:mysqladmin (推薦,簡單)
mysqladmin -u root password 'StrongP@ssw0rd!'
-- 方式 B:UPDATE user 表 (通用,舊版兼容)
mysql -u root mysql -e "UPDATE user SET password=PASSWORD('StrongP@ssw0rd!') WHERE User='root'; FLUSH PRIVILEGES;"
-- 方式 C:SET PASSWORD (MySQL 5.7.6+ 推薦)
mysql -u root -e "SET PASSWORD FOR 'root'@'localhost' = 'StrongP@ssw0rd!';"
2. 重載權限表 (使密碼生效)
mysqladmin -u root -p reload
-- 或
mysql -u root -p -e "FLUSH PRIVILEGES;"
驗證:mysqladmin -u root -p status 應提示輸入密碼。
3. 移除匿名用戶
mysql -u root -p -e "DELETE FROM mysql.user WHERE User=''; FLUSH PRIVILEGES;"
4. 移除測試數據庫及其權限
mysql -u root -p -e "DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES;"
5. 禁止 Root 遠程登錄 (僅允許本地)
mysql -u root -p -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); FLUSH PRIVILEGES;"
三、 一鍵安全腳本:mysql_secure_installation
MySQL 官方提供交互式加固工具,自動執行上述所有動作:
mysql_secure_installation
交互提示:
- 設置 root 密碼? → Y
- 移除匿名用戶? → Y
- 禁止 root 遠程登錄? → Y
- 移除 test 庫? → Y
- 重載權限表? → Y
生產環境必執行!
四、 進階加固建議
| 措施 | 實現 | 效果 |
| 專用業務帳號 | CREATE USER 'app'@'app_server_ip' IDENTIFIED BY '...'; GRANT SELECT,INSERT,UPDATE,DELETE ON db.* TO 'app'@'...'; | 最小權限原則,避免 root 暴露 |
| SSL 加密連接 | 配置 require_secure_transport=ON,簽發客戶端證書 | 防止網路抓包竊取數據/密碼 |
| 審計日誌 | 安裝 audit_log 插件,記錄所有 DDL/DML/登錄 | 合規審計、入侵溯源 |
| 密碼策略 | 安裝 validate_password,強制長度/複雜度/過期 | 防弱密碼、定期輪換 |
| 連接限制 | max_user_connections、防火牆白名單 | 防暴力破解、限制單點佔用 |
五、 Windows 環境特殊說明
- 安裝向導 (MSI) 會提示設置 root 密碼,**請務必設置**,不要跳過。
- 服務以
Local System 或專用賬號運行,確保 datadir 權限正確 (僅管理員/服務賬號可讀寫)。
- 配置文件
my.ini 位於安裝目錄或 C:\ProgramData\MySQL\MySQL Server X.Y\。
六、 總結
MySQL 安裝後**第一件事必須是安全初始化**。執行 mysql_secure_installation 完成基線五項,再按業務創建最小權限應用帳號、啟用 SSL/審計/密碼策略,即可建立符合等保三級/PCI-DSS 基線要求的 MySQL 安全基線。
- 上一篇文章: Oracle SQL Tuning Set (STS) 跨實例遷移完整流程:打包、導出、導入、分析
- 下一篇文章: SQL Server 數據導入導出三大方式深度對比:T-SQL、BCP、DTS 選型指南
Copyright ©
程式碼之家 All Rights Reserved