CentOS 7 預設倉庫無 MySQL,僅提供 MariaDB(MySQL 分支)。若業務強依賴 MySQL 原生特性(如特定優化器行為、插件兼容性),需手動替換。本文記錄從卸載 MariaDB、配置官方 YUM 源、安裝 MySQL 5.6、字符集調優、防火牆放行、遠程授權的全過程。
# 查看已安裝包
rpm -qa | grep mariadb
# mariadb-libs-5.5.68-1.el7.x86_64 等
# 普通卸載會因 postfix 依賴失敗
rpm -e mariadb-libs-5.5.68-1.el7.x86_64
# 錯誤:libmysqlclient.so.18 被 postfix 需要
# 強制卸載(忽略依賴)
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
注意:強制卸載後 postfix 郵件服務將無法啟動,若服務器需要發郵件,請改用
yum swap mariadb-libs mysql-community-libs或保留 MariaDB 兼容包。
# 下載 repo 包(5.6 版本對應 el7-5)
wget https://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
# 安裝源
rpm -ivh mysql-community-release-el7-5.noarch.rpm
# 驗證源已啟用
yum repolist enabled | grep mysql
yum -y install mysql-community-server mysql-community-client
# 自動解決依賴:mysql-community-common, mysql-community-libs 等
systemctl start mysqld
systemctl enable mysqld
# 5.6 首次啟動會生成隨機 root 密碼(/root/.mysql_secret)
cat /root/.mysql_secret
# 使用隨機密碼登錄
mysql -uroot -p'隨機密碼'
-- 登錄後執行
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Root@StrongPass2024');
FLUSH PRIVILEGES;
-- 創建遠程訪問賬號(生產環境建議限制具體 IP 段)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'App@StrongPass2024';
GRANT ALL PRIVILEGES ON `biz_db`.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
編輯 /etc/my.cnf,在 [mysqld] 區塊添加:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
重啟生效:systemctl restart mysqld,驗證參考文章 180211。
# firewalld (CentOS 7 預設)
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --query-port=3306/tcp # 應返回 yes
# 若使用 iptables
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save
阿里雲/騰訊雲/華為雲控制台 → 安全組 → 入站規則 → 添加 TCP 3306,授權對象填應用服務器 CIDR(如 10.0.0.0/8),禁止 0.0.0.0/0。
# 應用服務器測試
mysql -h 192.168.1.100 -u app_user -p'App@StrongPass2024' -e "SELECT VERSION();"
# 或使用 telnet/nc 測試端口通達性
nc -zv 192.168.1.100 3306
通過官方 YUM 源安裝 MySQL 5.6,配合字符集統一、最小權限授權、網絡層雙重防護,可快速交付符合基線合規的數據庫環境。生產系統請務必納入備份演練與版本生命週期管理體系。