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

CentOS 5.2 編譯安裝多實例 MySQL 5.1.33 完整實錄:從用戶創建、配置差異化到雙實例並行運行

     編輯:MySQL 綜合教學

早期 CentOS 5 系列無官方 MySQL 5.1 RPM,需源碼編譯。本文記錄在單機部署兩個 MySQL 5.1.33 實例(3306/3307 端口)的全過程,含用戶隔離、目錄隔離、配置文件差異化、啟動腳本註冊、遠程管理帳號創建,供遷移老舊項目參考。

一、實例一:默認 3306 端口

# 1. 準備用戶與目錄
groupadd mysql
useradd -g mysql -s /sbin/nologin -d /usr/local/mysql mysql

# 2. 編譯安裝
cd /opt
tar zxvf mysql-5.1.33.tar.gz
cd mysql-5.1.33
./configure \
  --prefix=/usr/local/mysql \
  --enable-assembler \
  --with-extra-charsets=complex \
  --enable-thread-safe-client \
  --with-big-tables \
  --with-readline \
  --with-ssl \
  --with-embedded-server \
  --enable-local-infile \
  --with-plugins=innobase
make && make install

# 3. 權限與配置
chown -R mysql:mysql /usr/local/mysql
cp support-files/my-medium.cnf /usr/local/mysql/my.cnf

# 4. 初始化數據目錄
/usr/local/mysql/bin/mysql_install_db \
  --basedir=/usr/local/mysql \
  --datadir=/usr/local/mysql/data \
  --user=mysql

# 5. 啟動並註冊開機自啟
/bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &
echo "/bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &" >> /etc/rc.local

# 6. 便捷命令鏈接
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/mysqladmin

# 7. 設置 root 密碼與遠程帳號
mysqladmin -u root password '1234'
mysqladmin -u root -p'1234' password '456'
mysql -uroot -p'456' -e "GRANT ALL ON *.* TO 'mysql3306'@'%' IDENTIFIED BY 'mysql3306'; FLUSH PRIVILEGES;"

二、實例二:3307 端口(關鍵差異點)

# 1. 獨立用戶與目錄
useradd -g mysql -s /sbin/nologin -d /usr/local/mysql3307 mysql3307

# 2. 編譯安裝到獨立前綴
cd /opt/mysql-5.1.33
./configure --prefix=/usr/local/mysql3307 ...(其餘參數同實例一)
make && make install

chown -R mysql3307:mysql /usr/local/mysql3307
chmod -R 777 /usr/local/mysql3307   # 臨時放寬,解決 my.cnf world-writable 警告
cp /usr/local/mysql/share/mysql/my-medium.cnf /usr/local/mysql3307/my.cnf

# 3. 修改 my.cnf 關鍵差異項
# [client] 和 [mysqld] 區段均需修改
port = 3307
socket = /tmp/mysql3307.sock

# 4. 初始化數據目錄
/usr/local/mysql3307/bin/mysql_install_db \
  --basedir=/usr/local/mysql3307 \
  --datadir=/usr/local/mysql3307/data \
  --user=mysql3307

# 5. 啟動
/bin/sh /usr/local/mysql3307/bin/mysqld_safe --defaults-file=/usr/local/mysql3307/my.cnf &
echo "/bin/sh /usr/local/mysql3307/bin/mysqld_safe --defaults-file=/usr/local/mysql3307/my.cnf &" >> /etc/rc.local

# 6. 修復配置文件權限警告
chmod 644 /usr/local/mysql3307/my.cnf

# 7. 設置密碼與遠程帳號
mysqladmin -P 3307 -S /tmp/mysql3307.sock -u root password '1q2w3e'
mysqladmin -P 3307 -S /tmp/mysql3307.sock -u root -p'1q2w3e' password 'newpass'
/usr/local/mysql3307/bin/mysql -uroot -p -S /tmp/mysql3307.sock -e "GRANT ALL ON *.* TO 'mysql3307'@'%' IDENTIFIED BY 'mysql3307'; FLUSH PRIVILEGES;"

三、多實例共存關鍵隔離清單

維度實例 3306實例 3307衝突風險
安裝前綴/usr/local/mysql/usr/local/mysql3307無
數據目錄/usr/local/mysql/data/usr/local/mysql3307/data無
運行用戶mysqlmysql3307無
端口33063307無
Socket/tmp/mysql.sock/tmp/mysql3307.sock無
配置文件/usr/local/mysql/my.cnf/usr/local/mysql3307/my.cnf無
啟動腳本mysqld_safe --defaults-file=...mysqld_safe --defaults-file=...無

四、驗證雙實例並行

netstat -ntlp | grep -E '3306|3307'
# tcp  0  0 0.0.0.0:3306  LISTEN  1234/mysqld
# tcp  0  0 0.0.0.0:3307  LISTEN  5678/mysqld

mysql -umysql3306 -pmysql3306 -h127.0.0.1 -P3306 -e "SELECT VERSION();"
mysql -umysql3307 -pmysql3307 -h127.0.0.1 -P3307 -e "SELECT VERSION();"

五、遷移到現代部署的建議

  • CentOS 5 已停止維護,建議遷移至 CentOS 7/8、Ubuntu 20.04/22.04 + MySQL 5.7/8.0 官方 RPM/APT。
  • 容器化部署:docker run -d --name mysql3306 -p 3306:3306 -v /data/mysql3306:/var/lib/mysql mysql:5.7 秒級啟動,天然隔離。
  • 配置管理:Ansible/SaltStack 統一分發 my.cnf,避免手工差異。

雖然編譯安裝多實例已成歷史,但「目錄隔離、用戶隔離、端口隔離、配置隔離」四大原理在容器、K8s Operator、多實例管理工具中依然通用。

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