首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

CentOS 7 安裝 MySQL 避坑指南:MariaDB 衝突、SELinux、密碼重置、遠程授權全解析

     編輯:MySQL 綜合教學

CentOS 7 安裝 MySQL 避坑指南:MariaDB 衝突、SELinux、密碼重置、遠程授權全解析

CentOS 7 預裝 MariaDB 導致 MySQL 官方 RPM 衝突,且 SELinux 預設開啟阻擋服務啟動。本文記錄從卸載 MariaDB 到 MySQL 5.6/5.7 RPM 安裝、服務啟動、密碼初始化、遠程授權的完整避坑流程。

一、卸載預裝 MariaDB(必須步驟)

# 1. 查看已安裝包
rpm -qa | grep mariadb
# 輸出示例:
# mariadb-libs-5.5.35-3.el7.x86_64
# mariadb-5.5.35-3.el7.x86_64
# mariadb-server-5.5.35-3.el7.x86_64

# 2. 強制卸載(忽略依賴)
rpm -e --nodeps mariadb-libs-5.5.35-3.el7.x86_64
rpm -e --nodeps mariadb-5.5.35-3.el7.x86_64
rpm -e --nodeps mariadb-server-5.5.35-3.el7.x86_64

⚠️ 卸載 mariadb-libs 會連帶移除 postfix 等依賴郵件服務,若需保留郵件功能,改用 yum swap mariadb-libs mysql-community-libs(需配置 MySQL Yum Repo)。

二、安裝 MySQL 官方 RPM

下載三包(以 5.6.22 為例):

  • MySQL-client-advanced-5.6.22-1.el7.x86_64.rpm
  • MySQL-devel-advanced-5.6.22-1.el7.x86_64.rpm(開發庫,非必裝)
  • MySQL-server-advanced-5.6.22-1.el7.x86_64.rpm
# 安裝
rpm -ivh MySQL-client-advanced-5.6.22-1.el7.x86_64.rpm
rpm -ivh MySQL-devel-advanced-5.6.22-1.el7.x86_64.rpm
rpm -ivh MySQL-server-advanced-5.6.22-1.el7.x86_64.rpm

三、SELinux 導致服務啟動失敗

現象:service mysql start 報 ERROR! The server quit without updating PID file。

根因:SELinux Enforcing 模式阻擋 mysqld 讀寫資料目錄。

# 永久關閉(需重啟)
vi /etc/selinux/config
# SELINUX=enforcing → SELINUX=disabled
reboot

# 或臨時放行(不重啟)
setenforce 0
# 需配合 semanage fcontext / restorecon 設定正確上下文

建議生產環境**配置正確策略而非關閉**,但開發/測試環境直接 disabled 最省事。

四、服務啟動與密碼初始化

# 啟動
service mysql start
# 或 systemctl start mysqld

# 5.7+ 首次啟動會生成隨機臨時密碼,位於錯誤日誌
grep 'temporary password' /var/log/mysqld.log
# 登入修改
mysql -uroot -p'臨時密碼'
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';

五、忘記 Root 密碼重置(跳過授權表)

# 1. 停止服務
service mysql stop

# 2. 跳過授權表啟動(後台)
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

# 3. 免密登入
mysql -uroot

# 4. 重置密碼(5.7+ 用 authentication_string)
UPDATE mysql.user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
FLUSH PRIVILEGES;

# 5. 正常重啟
service mysql restart

六、遠程訪問授權(ERROR 1130 解決)

現象:Host '192.168.1.3' is not allowed to connect

mysql -uroot -p
-- 5.7+ 推薦 CREATE USER + GRANT
CREATE USER 'root'@'%' IDENTIFIED BY 'NewPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 或修改現有用戶 Host
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;

⚠️ 生產環境**禁止 root 遠程**,應建立專用業務用戶、限制來源 IP、啟用 SSL。

七、防火牆放行 3306

# firewalld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# iptables
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save

遵循上述流程,可在 CentOS 7 上乾淨部署 MySQL 官方版,規避 90% 的初始化坑點。

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