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

Linux 下 MySQL 默認安裝完整配置與安全加固實戰

     編輯:MySQL 資料庫相關知識

環境基線

  • OS:CentOS/RHEL 6/7 系列(yum/rpm 安裝)
  • MySQL 版本:5.0/5.1/5.5/5.6/5.7(示例以 5.0.77 為例)
  • 目標:標準化部署、字符集統一、安全基線合規、驗證可用性

一、配置文件標準化(/etc/my.cnf)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# 兼容舊版客戶端認證(5.0/5.1 常見),5.6+ 建議關閉
old_passwords=1
# 統一字符集 utf8(生產建議 utf8mb4)
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
default-character-set=utf8

[client]
default-character-set=utf8

關鍵點: 集中在 [mysqld]、[mysql]、[client] 三段設置字符集,避免「庫 utf8、表 latin1、連接 latin1」三層不一致導致亂碼。5.7+ 建議直接使用 character-set-server=utf8mb4 並移除 default-character-set(已棄用)。

二、服務管理與開機自啟

# 設置開機自啟
chkconfig mysqld on
# 驗證運行級別 2-5 為 on
chkconfig --list mysqld
# 啟動服務
/etc/rc.d/init.d/mysqld start
# 或 systemctl start mysqld (CentOS 7+)

三、Root 密碼初始化

/usr/bin/mysqladmin -u root password 'StrongP@ssw0rd!'
# 驗證
mysql -u root -p

四、安全基線加固(生產必做)

  1. 刪除匿名用戶
    mysql -u root -p -e "DELETE FROM mysql.user WHERE User=''; FLUSH PRIVILEGES;"
  2. 禁止 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;"
  3. 刪除測試庫
    mysql -u root -p -e "DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES;"
  4. 創建業務專用賬號(最小權限)
    GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'10.0.0.%' IDENTIFIED BY 'AppP@ssw0rd!';
    FLUSH PRIVILEGES;

五、功能驗證測試腳本

# 1. 業務賬號登錄
mysql -u app_user -p -e "SELECT USER(), CURRENT_USER();"

# 2. 建庫建表寫入讀取更新刪除全鏈路
mysql -u app_user -p app_db -e "
CREATE TABLE test_tbl (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO test_tbl VALUES (1, 'Hello World');
SELECT * FROM test_tbl;
UPDATE test_tbl SET name='Hello Everyone' WHERE id=1;
SELECT * FROM test_tbl;
DELETE FROM test_tbl;
DROP TABLE test_tbl;
"

# 3. 清理測試賬號
mysql -u root -p -e "
REVOKE ALL PRIVILEGES ON *.* FROM 'app_user'@'10.0.0.%';
DELETE FROM mysql.user WHERE User='app_user' AND Host='10.0.0.%';
FLUSH PRIVILEGES;
"

六、Web 服務聯動重啟

/etc/rc.d/init.d/httpd restart
# 或 systemctl restart httpd / nginx / php-fpm

確保應用層連接池感知新實例、重新建立連接。

七、自動化部署建議(Ansible/SaltStack 任務要點)

  • 模板化 my.cnf,變量化 datadir、innodb_buffer_pool_size、max_connections 等核心參數。
  • 使用 mysql_secure_installation 非交互模式(期望輸入)或自定義 SQL 腳本完成安全加固。
  • 納入監控項目:mysql_up、Threads_connected、Slow_queries、Innodb_buffer_pool_wait_free、磁盤空間、主從延遲(如有)。
  • 備份策略:xtrabackup 全量+增量,mysqldump 邏輯備份雙軌並行,定期恢復演練。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved