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

MySQL 簡單安全加固與優化總結清單 (12 項核心措施)

     編輯:MySQL 資料庫相關知識

MySQL 開箱即用但預設不安全。本文匯總 12 項可立即執行的安全加固與優化措施,涵蓋密碼、用戶、網絡、文件、日誌、備份、配置模板選擇、自動修復腳本,適合快速落地生產環境基線。

安全加固 9 項

  1. 修改 Root 密碼 (三種方式任選一):
    mysqladmin -u root password 'strong_pwd'
    -- 或
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('strong_pwd');
    -- 或
    UPDATE mysql.user SET authentication_string=PASSWORD('strong_pwd') WHERE User='root'; FLUSH PRIVILEGES;
  2. 刪除匿名用戶與 test 庫:
    DROP DATABASE test;
    DELETE FROM mysql.db;
    DELETE FROM mysql.user WHERE NOT (User='root' AND Host='localhost');
    FLUSH PRIVILEGES;
  3. 重命名 Root 用戶 (可選):
    UPDATE mysql.user SET User='admin' WHERE User='root'; FLUSH PRIVILEGES;
  4. 禁用本地文件導入 (防 SQL 注入讀文件):
    [mysqld]
    local-infile=0
  5. 禁止遠程 TCP 連接 (僅本地 Unix Socket):
    [mysqld]
    skip-networking
    # 或啟動參數 --skip-networking
  6. 應用帳號最小權限 + 限制 Host:
    GRANT SELECT,INSERT,UPDATE,DELETE ON biz_db.* TO 'app'@'10.0.1.%' IDENTIFIED BY 'pwd';
  7. 限制 SHOW DATABASES 權限:
    [mysqld]
    skip-show-database
  8. 數據目錄文件系統權限收緊:
    chown -R mysql:mysql /var/lib/mysql
    chmod -R go-rwx /var/lib/mysql
  9. 清理歷史記錄 (防密碼洩露):
    rm -f ~/.bash_history ~/.mysql_history
    ln -s /dev/null ~/.bash_history
    ln -s /dev/null ~/.mysql_history

優化配置 3 項

  1. 根據記憶體選擇 my.cnf 模板:
    模板記憶體
    my-small.cnf< 64MB
    my-medium.cnf32~64MB
    my-large.cnf512MB
    my-huge.cnf1~2GB
    my-innodb-heavy-4G.cnf4GB+
    cp /usr/share/mysql/my-large.cnf /etc/my.cnf  # RPM
    cp support-files/my-large.cnf /etc/my.cnf     # 源碼
  2. 快速檢查/修復所有表:
    mysqlcheck -A -o -r -p
    # 指定庫
    mysqlcheck -o -r db_name -p
  3. 考慮 chroot 隔離 (高安全環境):將 MySQL 運行在獨立文件系統根目錄,限制可訪問路徑。

執行驗證腳本

#!/bin/bash
# verify_mysql_hardening.sh
echo "=== 安全基線檢查 ==="
mysql -e "SELECT User, Host, plugin FROM mysql.user;"
mysql -e "SHOW VARIABLES LIKE 'local_infile';"
mysql -e "SHOW VARIABLES LIKE 'skip_networking';"
mysql -e "SHOW VARIABLES LIKE 'skip_show_database';"
ls -ld /var/lib/mysql
echo "=== 完成 ==="
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved