一、准备工作
在官网下载不同版本安装包(以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'