阅读量:2
CentOS安装双版本MySQL
一、下载mysql
本文以5.7.31和8.0.38为例
去官网下载 压缩包
https://dev.mysql.com/downloads/mysql/5.7.html
https://dev.mysql.com/downloads/mysql/8.html也可以直接在服务器运行下边这两条命令
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.38-linux-glibc2.17-x86_64.tar.xz
没有
wget
可以安装,命令sudo yum install wget
完成下载后,上传至服务器想要的位置
/home/pkg/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
、/home/pkg/mysql-8.0.38-linux-glibc2.17-x86_64.tar.xz
二、检查服务器是否安装过mysql
- 检查有无安装过MySQL
rpm -qa|grep mysql # 显示没有东西,便是没有安装过mysql
- 如果安装过或者系统自带,便需要去查询所有的mysql对应的文件,进行卸载,全部删除
whereis mysql find / -name mysql
三、卸载CentOS7自带的mariadb
- 查看系统自带的
rpm -qa|grep mariadb
- 卸载Mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
- 删除掉etc下面的
my.cnf
,等会在建,不然会有问题
rm /etc/my.cnf
四、创建mysql用户和用户组
- 检查有没有mysql用户组,没有便进行创建
# 查看 cat /etc/group | grep mysql cat /etc/passwd |grep mysql57 cat /etc/passwd |grep mysql8
- 创建MySQL用户组和用户
groupadd mysql useradd -r -g mysql mysql57 useradd -r -g mysql mysql8
五、安装mysql57 (第一个)
- 解压MySQL安装包
tar -zxvf /home/pkg/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql
- 修改目录名称
mv mysql-5.7.31-linux-glibc2.12-x86_64 mysql57
- 给用户组添加权限
chown -R mysql57:mysql /usr/local/mysql/mysql57 chmod -R 755 /usr/local/mysql/mysql57
- 配置第一个 MySQL 配置文件
vim /etc/mysql57.cnf # 文件内容如下,路径修改为自己的路径 [client] socket=/usr/local/mysql/mysql57/data/mysql.sock [mysqld] socket=/usr/local/mysql/mysql57/data/mysql.sock datadir=/usr/local/mysql/mysql57/data port=3306 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES symbolic-links=0 log-error=/usr/local/mysql/mysql57/data/mysqld.log pid-file=/usr/local/mysql/mysql57/data/mysqld.pid max_connections=400 innodb_file_per_table=1 #表名大小写不敏感, 敏感为 lower_case_table_names=1 #是否只读,1代表只读,0代表读写 read-only=0 #忽略的数据,指不需要同步的数据库 #binlog-ignore-db=mysql #指定同步的数据库 #binlog-do-db=db01 # 指定用户 user=mysql57 [mysqld_safe] socket=/usr/local/mysql/mysql57/data/mysql.sock
- 初始化MySQL 实例
# 进入安装目录 cd /usr/local/mysql/mysql57 # 初始化实例 bin/mysqld --defaults-file=/etc/my57.cnf --initialize --user=mysql57 --port=3306
- 查看初始化实例密码
vim /usr/local/mysql/mysql57/data/mysqld.log
- 启动实例
/usr/local/mysql/mysql57/bin/mysqld_safe --defaults-file=/etc/my57.cnf --user=mysql57 --port=3306 &
- 连接数据库测试
mysql -h127.0.0.1 -uroot -p
- 由于安装双版本mysql修改了
mysql.sock
,本地启动命令行需要添加-h127.0.0.1
才能正常连接, 否则会报错找不到mysql.sock
- 如果连接时出现错误:
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
是因为系统中的该文件版本不一致导致,通过软连接重定向解决:sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
其他类似的错误解决方法一致
- 修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
- 开启远程访问
use mysql; update user set user.Host='%' where user.User='root'; flush privileges;
如果远程访问不能连接,检查是否开启了防火墙 (firewalld)
- 创建mysql服务
vim /usr/lib/systemd/system/mysql57.service # 写入下边的配置信息, User、Group、ExecStart 根据自己的实际情况修改 [Unit] Description=MySQL Server on port 3306 After=network.target [Service] User=mysql57 Group=mysql ExecStart=/usr/local/mysql/mysql57/bin/mysqld_safe --defaults-file=/etc/my57.cnf --user=mysql57 --port=3306 ExecStop=/bin/kill -TERM $MAINPID Restart=on-failure RestartSec=5s LimitNOFILE=5000 [Install] WantedBy=multi-user.target
- 开启mysql服务
// 重新加载服务信息 systemctl daemon-reload // 开启mysql57服务 systemctl start mysql57 // 设置服务开机自启 systemctl enable mysql57
六、安装mysql8 (第二个)
- 解压MySQL安装包
tar -zxvf /home/pkg/mysql-8.0.38-linux-glibc2.17-x86_64.tar.xz -C /usr/local/mysql
- 修改目录名称
mv mysql-8.0.38-linux-glibc2.17-x86_64.tar.xz mysql8
- 给用户组添加权限
chown -R mysql8:mysql /usr/local/mysql/mysql8 chmod -R 755 /usr/local/mysql/mysql8
- 配置第二个 MySQL 配置文件
vim /etc/mysql8.cnf # 文件内容如下,路径修改为自己的路径 [client] socket=/usr/local/mysql/mysql8/data/mysql.sock [mysqld] socket=/usr/local/mysql/mysql8/data/mysql.sock datadir=/usr/local/mysql/mysql8/data port=3307 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES symbolic-links=0 log-error=/usr/local/mysql/mysql8/data/mysqld.log pid-file=/usr/local/mysql/mysql8/data/mysqld.pid max_connections=400 innodb_file_per_table=1 #表名大小写不敏感, 敏感为 lower_case_table_names=1 #是否只读,1代表只读,0代表读写 read-only=0 #忽略的数据,指不需要同步的数据库 #binlog-ignore-db=mysql #指定同步的数据库 #binlog-do-db=db01 # 指定用户 user=mysql8 [mysqld_safe] socket=/usr/local/mysql/mysql8/data/mysql.sock
- 初始化MySQL 实例
# 进入安装目录 cd /usr/local/mysql/mysql8 # 初始化实例 bin/mysqld --defaults-file=/etc/my8.cnf --initialize --user=mysql8 --port=3307
- 查看初始化实例密码
vim /usr/local/mysql/mysql8/data/mysqld.log
- 启动实例
/usr/local/mysql/mysql8/bin/mysqld_safe --defaults-file=/etc/my8.cnf --user=mysql8 --port=3307 &
- 连接数据库测试
mysql -h127.0.0.1 -P3307 -uroot -p
- 双版本需要用
-P3307
指定端口号确定连接那个mysql服务- 由于安装双版本mysql修改了
mysql.sock
,本地启动命令行需要添加-h127.0.0.1
才能正常连接, 否则会报错找不到mysql.sock
- 如果连接时出现错误:
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
是因为系统中的该文件版本不一致导致,通过软连接重定向解决:sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
其他类似的错误解决方法一致
- 修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
- 开启远程访问
use mysql; update user set user.Host='%' where user.User='root'; flush privileges;
如果远程访问不能连接,检查是否开启了防火墙 (firewalld)
- 创建mysql服务
vim /usr/lib/systemd/system/mysql8.service # 写入下边的配置信息, User、Group、ExecStart 根据自己的实际情况修改 [Unit] Description=MySQL Server on port 3307 After=network.target [Service] User=mysql8 Group=mysql ExecStart=/usr/local/mysql/mysql8/bin/mysqld_safe --defaults-file=/etc/my8.cnf --user=mysql8 --port=3307 ExecStop=/bin/kill -TERM $MAINPID Restart=on-failure RestartSec=5s LimitNOFILE=5000 [Install] WantedBy=multi-user.target
- 开启mysql服务
// 重新加载服务信息 systemctl daemon-reload // 开启mysql8服务 systemctl start mysql8 // 设置服务开机自启 systemctl enable mysql8