CentOS7同时安装运行多版本MySQL(使用mysqld_multi)

一、准备工作

   在官网下载不同版本安装包(以5.6和8.0为例,5.7版本步骤仿照8.0即可),上传到服务器

  • mysql-5.6.22-linux-glibc2.5-x86_64.tar.gz
  • mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
tar xf mysql-5.6.22-linux-glibc2.5-x86_64.tar.gz
tar xf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz

mkdir -p /usr/local/mysql/5.6.22
mkdir -p /usr/local/mysql/8.0.36

## 创建软连接
ln -s /usr/local/mysql/5.6.22 /usr/local/mysql56
ln -s /usr/local/mysql/8.0.36 /usr/local/mysql80

mv mysql-5.6.22-linux-glibc2.5-x86_64/* /usr/local/mysql56
mv mysql-8.0.36-linux-glibc2.12-x86_64/* /usr/local/mysql80

mkdir -p /usr/local/mysql56/data
mkdir -p /usr/local/mysql80/data

rm -rf mysql-5.6.22-linux-glibc2.5-x86_64 
rm -rf mysql-8.0.36-linux-glibc2.12-x86_64

[root@VM-0-5-centos local]# ll
drwxr-xr-x   4 root  root  4096 Feb 26 15:42 mysql
lrwxrwxrwx   1 mysql mysql   13 Feb 26 15:43 mysql56 -> mysql/5.6.22/
lrwxrwxrwx   1 mysql mysql   13 Feb 26 15:43 mysql80 -> mysql/8.0.36/

安装相关依赖:

yum install -y perl autoconf libaio

二、创建/etc/my.cnf

[client]
user=root
[mysqld_multi]
user=root
pass=xxxxxxxx   #这是mysql8.0的root用户的密码
mysqld     = /usr/local/mysql80/bin/mysqld_safe     #启动时调用的命令
mysqladmin = /usr/local/mysql80/bin/mysqladmin   #关闭时调用的命令 下面需要提供用户和密码
[mysqld56]
mysqladmin = /usr/local/mysql56/bin/mysqladmin # 需要用5.6自己的关机命令
basedir=/usr/local/mysql56
socket     = /tmp/mysql.sock56
port       = 3307
datadir    = /usr/local/mysql56/data
[mysqld80]
basedir=/usr/local/mysql80
socket     = /tmp/mysql.sock80
port       = 3309
datadir    = /usr/local/mysql80/data

三、初始化MySQL8.0

cd /usr/local/mysql80/bin/
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql80/data

没有报ERROR表示成功。

此时控制台输出/mysql.err会显示:

A temporary password is generated for root@localhost: xxxxxx

务必保存这个初始密码

四、初始化MySQL5.6

cd /usr/local/mysql56/scripts
./mysql_install_db --user=mysql --datadir=/usr/local/mysql56/data

没有报ERROR表示成功。

和8.0不同,5.6生成的是空密码。

五、启动MySQL5.6,MySQL8.0

## 启动56
mysqld_multi start 56
## 启动80
mysqld_multi start 80

## 启动56和80
mysqld_multi start 56,80

## 查看状态
mysqld_multi report

 ps -ef | grep mysqld,从系统层面查看数据库运行状态:

[root@VM-0-5-centos ~]# ps -ef | grep mysqld
root      3771 32272  0 19:27 pts/4    00:00:00 grep --color=auto mysqld
polkitd  13995 13972  0 Feb23 ?        00:02:38 mysqld
root     31631     1  0 18:23 pts/4    00:00:00 /bin/sh /usr/local/mysql80/bin/mysqld_safe --basedir=/usr/local/mysql56 --socket=/=/usr/local/mysql56/data
root     31641     1  0 18:23 pts/4    00:00:00 /bin/sh /usr/local/mysql80/bin/mysqld_safe --basedir=/usr/local/mysql80 --socket=/=/usr/local/mysql80/data
mysql    31885 31641  0 18:23 pts/4    00:00:17 /usr/local/mysql80/bin/mysqld --basedir=/usr/local/mysql80 --datadir=/usr/local/myql80/lib/plugin --user=mysql --log-error=VM-0-5-centos.err --pid-file=VM-0-5-centos.pid --socket=/tmp/mysql.sock80 --port=3309
mysql    31886 31631  0 18:23 pts/4    00:00:02 /usr/local/mysql56/bin/mysqld --basedir=/usr/local/mysql56 --datadir=/usr/local/myql56/lib/plugin --user=mysql --log-error=VM-0-5-centos.err --pid-file=VM-0-5-centos.pid --socket=/tmp/mysql.sock56 --port=3307

六、命令行连接MySQL5.6,MySQL8.0

## 连接MySQL5.6,前提是5.6在后台运行
## 初次连接需要重置密码
/usr/local/mysql56/bin/mysql -S /tmp/mysql.sock56 -uroot -p

## 连接MySQL8.0,前提是8.0在后台运行
## 初次连接需要重置密码,重置后在my.cnf中修改
/usr/local/mysql80/bin/mysql -S /tmp/mysql.sock80 -uroot -p

七、停止MySQL5.6、MySQL8.0

## 停止8.0
mysqld_multi stop 80

## 停止5.6
mysqld_multi stop 56 -u=root -p='xxxxxx'

八、参考文章

在一台服务器上同时安装MySQL 5.6、5.7和8.0等3个版本-阿里云开发者社区

  • 30
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值