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

CentOS 7 替換 MariaDB 安裝 MySQL 5.5:衝突包強制移除與 SELinux 處理實戰

     編輯:MySQL 綜合教學

CentOS 7 替換 MariaDB 安裝 MySQL 5.5:衝突包強制移除與 SELinux 處理實戰

CentOS 7 預裝 MariaDB(MySQL 分支),直接安裝官方 MySQL 會因共享庫 libmysqlclient.so 衝突導致依賴解析失敗。本文記錄強制移除 MariaDB、解決 postfix 依賴、手動 RPM 安裝 MySQL 5.5、配置文件遷移、數據目錄權限與 SELinux 多重阻礙的完整突破過程。

現狀與衝突分析

# 查看已安裝 MariaDB 包
rpm -qa | grep mariadb
# mariadb-libs-5.5.60-1.el7_5.x86_64

# 嘗試正常移除
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64
# 錯誤:依賴檢測失敗:
# libmysqlclient.so.18()(64bit) 被 postfix-2:2.10.1-6.el7.x86_64 需要

結論: 系統郵件服務 postfix 依賴 MariaDB 提供的共享庫,正常移除會破壞 postfix。需強制移除並後續處理。

步驟一:強制移除 MariaDB 庫(忽略依賴)

rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

風險提示: postfix 將因缺庫無法啟動。若業務依賴本地郵件發送,需後續重裝 postfix 或改用外部 SMTP。

步驟二:安裝 MySQL 5.5 依賴與 RPM 包

# 基礎依賴
yum install -y libaio net-tools vim

# 手動下載 MySQL 5.5 RPM(官方歸檔或鏡像站)
# MySQL-server-5.5.62-1.el7.x86_64.rpm
# MySQL-client-5.5.62-1.el7.x86_64.rpm
rpm -ivh MySQL-server-5.5.62-1.el7.x86_64.rpm
rpm -ivh MySQL-client-5.5.62-1.el7.x86_64.rpm

注意: MySQL 5.5 官方已停止維護(EOL 2018),僅用於舊系統兼容遷移,新項目請使用 5.7/8.0。

步驟三:配置文件與數據目錄遷移

# 複製預設配置模板
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

# 編輯關鍵參數
vim /etc/my.cnf
# [mysqld]
# datadir=/home/mysql/data
# socket=/home/mysql/data/mysql.sock
# character-set-server=utf8mb4
# innodb_buffer_pool_size=512M
# ...

# 移動數據目錄至大分區
mkdir -p /home/mysql/data
mv /var/lib/mysql/* /home/mysql/data/
chown -R mysql:mysql /home/mysql/data
chmod -R 755 /home/mysql/data

步驟四:啟動服務與多重報錯突破

service mysql start
# ERROR! The server quit without updating PID file
# 日志:Can't find file: './mysql/plugin.frm' (errno: 13 - Permission denied)

錯誤 1:權限不足(已通過 chown/chmod 解決)

chown -R mysql:mysql /home/mysql/data
chmod -R 755 /home/mysql/data

錯誤 2:SELinux 強制模式阻擋(核心難點)

CentOS 7 預設 SELINUX=enforcing,MySQL 進程無權訪問非標準目錄 /home/mysql/data。

# 臨時驗證:設置寬容模式
setenforce 0
service mysql start
# 若啟動成功,確認為 SELinux 問題

永久解決方案二選一:

  1. 修改目錄安全上下文(推薦,保持 SELinux 啟用):
semanage fcontext -a -t mysqld_db_t "/home/mysql/data(/.*)?"
restorecon -Rv /home/mysql/data
# 需安裝 policycoreutils-python:yum install policycoreutils-python
  1. 關閉 SELinux(簡單粗暴,降低安全性):
vim /etc/selinux/config
# SELINUX=disabled
# 重啟機器生效
reboot

步驟五:驗證與後續處理

service mysql start
# Starting MySQL. SUCCESS!

mysql -u root -p
# 5.5 安裝後 root 默認無密碼,直接回車進入
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewStrongPass123!');
mysql> FLUSH PRIVILEGES;

網友補充:改用 MariaDB 官方版(避免替換痛苦)

若無強制 MySQL 專有特性依賴,直接使用系統集成的 MariaDB 更省心:

# 安裝 MariaDB 完整套件
yum -y install mariadb-server mariadb mariadb-devel

# systemd 管理
systemctl start mariadb
systemctl enable mariadb

# 安全初始化
mysql_secure_installation

# 防火牆
firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload
# 或 iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

# 驗證
mysql -u root -p -e "SHOW DATABASES;"

優勢: 完美兼容系統依賴(postfix 等)、無 SELinux 額外配置、yum 更新維護無憂、功能高度兼容 MySQL 5.5/5.6。

總結

CentOS 7 強行替換 MariaDB 裝 MySQL 5.5 是「硬骨頭」:--nodeps 強拆 mariadb-libs → 手動 RPM 装包 → 遷移 datadir → 權限 chown → SELinux 上下文重標記(或關閉)。每一步都可能卡住。生產環境強烈建議順勢使用 MariaDB,或升級至 MySQL 5.7/8.0 官方 YUM 源安裝(自帶兼容包自動處理依賴)。若必須用 5.5,請預留充足排錯時間並做好 postfix 替代方案。

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