CentOS 7 預設倉庫僅有 MariaDB。安裝原生 MySQL 需配置官方 mysql-community-release Repo。本文記錄從下載 Repo、安裝 Server、重置密碼、防火牆、安全向導、遠程授權、資料目錄遷移的完整流程。
rpm -qa | grep -i mysql
# 若有輸出,逐個移除
yum remove -y mysql mysql-server mysql-libs compat-mysql51
rpm -e --nodeps $(rpm -qa | grep -i mysql) # 強制清理殘留
rm -rf /var/lib/mysql /etc/my.cnf
wget https://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
# 生成 /etc/yum.repos.d/mysql-community.repo 和 mysql-community-source.repo
yum install -y mysql-community-server
# 依賴自動解決:mysql-community-common, mysql-community-libs, mysql-community-client 等
systemctl start mysqld
systemctl enable mysqld
# 5.7+ 首次啟動生成隨機密碼於 /var/log/mysqld.log
grep 'temporary password' /var/log/mysqld.log
# 例:2023-01-01T00:00:00.000000Z 1 [Note] A temporary password is generated for root@localhost: xYz!Abc123
mysql -u root -p'xYz!Abc123' --connect-expired-password
# 進入後必須立即修改密碼(密碼已過期)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
FLUSH PRIVILEGES;
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=3306/udp
firewall-cmd --reload
# 或關閉 firewalld 用 iptables(生產建議保留 firewalld 精細控制)
mysql_secure_installation
# 依提示:驗證密碼插件、修改 root 密碼、移除匿名用戶、禁止 root 遠程登入、移除 test 庫、重新載入權限
-- 僅允許特定網段應用伺服器連線
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'AppPass123!';
GRANT SELECT,INSERT,UPDATE,DELETE ON app_db.* TO 'app_user'@'192.168.1.%';
-- 管理員帳號(僅內網跳板機)
CREATE USER 'dba'@'10.0.0.%' IDENTIFIED BY 'DbaPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'dba'@'10.0.0.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
systemctl stop mysqld
mkdir -p /home/data
mv /var/lib/mysql /home/data/
# 編輯 /etc/my.cnf
[mysqld]
datadir=/home/data/mysql
socket=/home/data/mysql/mysql.sock
# 修正 socket 路徑(client 區也要同步)
[client]
socket=/home/data/mysql/mysql.sock
# 修正 SELinux 上下文(關鍵,否則啟動失敗)
semanage fcontext -a -t mysqld_db_t "/home/data/mysql(/.*)?"
restorecon -Rv /home/data/mysql
# 或暫時 setenforce 0 驗證
systemctl start mysqld
mysql -u root -p -e "SELECT VERSION();" → 5.7.x / 8.0.xSHOW VARIABLES LIKE 'datadir'; → 目標路徑systemctl status mysqld → active (running)YUM 安裝 MySQL 社區版的優勢在於:版本更新只需 yum update mysql-community-server、依賴自動解決、系統服務整合完善。配合官方 Repo,是 CentOS 7/RHEL 7 上部署 MySQL 的標準化路徑。