首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 新安裝安全加固指南:從 Root 密碼到權限收口

     編輯:MySQL 資料庫相關知識

默認安裝的隱患

全新安裝的 MySQL 默認存在重大安全風險:

  • Root 無密碼:本地可無密碼登入,擁有最高權限。
  • 匿名用戶:允許無用戶名連接,可訪問 test 庫及 test_% 庫。
  • 遠程 Root 登入:部分版本默認允許遠程主機以 root 連接。
  • 測試庫開放:test 數據庫對所有用戶可讀寫。

標準加固流程(適用 MySQL 5.7+ / 8.0)

1. 運行官方安全腳本

mysql_secure_installation

交互式向導將引導完成:

  1. 設置 Root 強密碼(建議 ≥16 位,含大小寫、數字、特殊符號)
  2. 移除匿名用戶
  3. 禁止 Root 遠程登入
  4. 刪除 test 數據庫及其權限
  5. 刷新權限表生效

2. 手動 SQL 方式(腳本不可用時)

-- 連接數據庫
mysql -u root -p

-- ① 修改 root 密碼(MySQL 5.7.6+ / 8.0)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
-- 或舊版本
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewStrongPass123!');

-- ② 刪除匿名用戶
DELETE FROM mysql.user WHERE User = '';

-- ③ 僅允許本地 root 登入
DELETE FROM mysql.user WHERE User = 'root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

-- ④ 刪除測試庫
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db = 'test' OR Db LIKE 'test\\_%';

-- ⑤ 刷新權限
FLUSH PRIVILEGES;

進階加固建議

維度措施說明
網絡 bind-address = 127.0.0.1 僅監聽本地回環,阻斷外部直連
網絡 防火牆僅放行應用服務器 IP 如 ufw allow from 10.0.0.5 to any port 3306
權限 業務賬號最小權限 GRANT SELECT, INSERT, UPDATE ON app_db.* TO 'app_user'@'10.0.0.%' IDENTIFIED BY '...';
審計 啟用审计日志插件 記錄登入、DDL/DML 操作,滿足合規
加密 傳輸層 TLS / 靜態數據加密 require_secure_transport=ON,配合 innodb_encrypt_tables
密碼策略 validate_password 組件 強制長度、複雜度、過期輪換

Windows 環境特別提示

  • 安裝向導勾選「Configure MySQL as a Service」並設置 root 密碼。
  • 服務以專用低權限賬號運行,而非 Local System。
  • my.ini 中設置 skip-networking 或 bind-address=127.0.0.1。

驗證加固效果

-- 檢查用戶與宿主
SELECT User, Host, plugin, authentication_string FROM mysql.user;

-- 嘗試匿名登入(應失敗)
mysql -u '' -p -h localhost

-- 嘗試遠程 root 登入(應失敗)
mysql -u root -p -h 192.168.1.100

-- 確認 test 庫不存在
SHOW DATABASES LIKE 'test%';

總結

「安裝完成 ≠ 可上線」。花 10 分鐘執行 mysql_secure_installation 並落實最小權限、網絡隔離、加密傳輸,能攔截 90% 以上的入侵嘗試。安全是持續過程,請將審計日誌、密碼輪換、版本升級納入常規運維體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved