文章目录
- CentOS7安装部署双版本MySQL
- 一、前言
- [二、安装MySQL 5.6](#二、安装MySQL 5.6)
- [三、安装MySQL 8.0](#三、安装MySQL 8.0)
-
- [1. 解压并移动 MySQL 文件](#1. 解压并移动 MySQL 文件)
- [2. 创建并配置 my.cnf](#2. 创建并配置 my.cnf)
- 3.修改mysql.server
- [4. 添加用户组和用户](#4. 添加用户组和用户)
- [5. 初始化 MySQL 数据目录](#5. 初始化 MySQL 数据目录)
- [6. 创建systemd服务文件](#6. 创建systemd服务文件)
- 7.创建符号链接
- 8.首次登录
- 9.允许所有主机连接
- 10.常用命令
CentOS7安装部署双版本MySQL
一、前言
1.场景
- N年前服务器上安装了 MySQL 5.6,现在新项目需要升级到 MySQL 8.0;为了保证旧项目的稳定性,需要继续使用服务器上的 MySQL 5.6。同时,为了支持新项目,需要在服务器上安装 MySQL 8.0
2.环境
- Linux 发行版:CentOS-7-x86_64-DVD-1804.iso
- MySQL 版本:mysql-8.0.34-linux-glibc2.17-x86_64.tar.gz
MySQL Product Archives:https://downloads.mysql.com/archives/community/
CentOS7安装部署MySQL80:https://blog.csdn.net/u011424614/article/details/132418916
CentOS7部署MySQL80集群:https://blog.csdn.net/u011424614/article/details/133222091
CentOS基础操作命令:https://blog.csdn.net/u011424614/article/details/94555916
[ContOS] MySQL安装部署:https://blog.csdn.net/u011424614/article/details/94555816
二、安装MySQL 5.6
- 安装参考:《ContOS7安装部署MySQL56》
- 安装文件:rpm 安装包
- 目录:
- 数据库文件目录,例如表结构和数据:
/var/lib/mysql
- 配置文件目录:
/usr/share/mysql/
- 相关命令目录:
/usr/bin
三、安装MySQL 8.0
1. 解压并移动 MySQL 文件
bash
# 解压压缩包到指定目录
tar -xzf mysql-8.0.34-linux-glibc2.17-x86_64.tar.gz -C /usr/local/
# 修改目录名称
mv /usr/local/mysql-8.0.34-linux-glibc2.17-x86_64/ /usr/local/mysql80/
# 创建数据目录
cd /usr/local/mysql80/
mkdir data
2. 创建并配置 my.cnf
- 配置 my.cnf
ini
cat > /usr/local/mysql80/my.cnf <<EOF
[mysqld]
basedir=/usr/local/mysql80/
datadir=/usr/local/mysql80/data/
port=3307
socket=/tmp/mysql80.sock
character-set-server=UTF8MB4
symbolic-links=0
# 开启 binlog
log-bin=/usr/local/mysql80/mysql-bin
server-id=1
gtid_mode=on
enforce_gtid_consistency=on
# 最大连接数设置
max_connections=1000
# 大小写不敏感
lower_case_table_names=1
[mysqld_safe]
log-error=/usr/local/mysql80/data/error.log
pid-file=/usr/local/mysql80/data/mysqld.pid
tmpdir=/tmp/mysql80
EOF
- 设置权限
cmd
chmod 755 /usr/local/mysql80/my.cnf
- 备用命令
cmd
# 查找系统上所有名为 my.cnf 的文件
find / -name 'my.cnf'
# 查看 MySQL 默认的配置文件路径
mysqld --verbose --help | grep -A 1 "Default options"
3.修改mysql.server
- 修改 mysql.server
cmd
vim /usr/local/mysql80/support-files/mysql.server
修改内容:
cmd
# 填写目录
basedir=/usr/local/mysql80
datadir=/usr/local/mysql80/data
# 加上80
lock_file_path="$lockdir/mysql80"
# 填写 pid 目录
mysqld_pid_file_path=/usr/local/mysql80/data/mysqld.pid
# 填写 my.cnf 目录
conf=/usr/local/mysql80/my.cnf
4. 添加用户组和用户
bash
# 添加用户组和用户
groupadd mysql
useradd mysql -g mysql
# 目录授权
chown -R mysql:mysql /usr/local/mysql80/
5. 初始化 MySQL 数据目录
- 注意:
lower_case_table_names=1
表示表名和数据库名在存储时转换为小写,但在比较时不区分大小写;这个配置需在初始化时加上,否则在 my.cnf 中配置后,mysql 无法正常启动
bash
cd /usr/local/mysql80/bin
# 初始化
mysqld --defaults-file=/usr/local/mysql80/my.cnf --lower_case_table_names=1 --user=mysql --initialize
输出密码:cNp0g1/<<Kda
cmd
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: cNp0g1/<<Kda
6. 创建systemd服务文件
- 配置 mysql80.service
ini
cat > /etc/systemd/system/mysql80.service <<EOF
[Unit]
Description=MySQL Server 8.0
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/mysql80/support-files/mysql.server start
ExecStop=/usr/local/mysql80/support-files/mysql.server stop
ExecReload=/usr/local/mysql80/support-files/mysql.server restart
User=mysql
Group=mysql
PIDFile=/usr/local/mysql80/data/mysqld.pid
LimitNOFILE=5000
[Install]
WantedBy=multi-user.target
EOF
- 重新加载
systemd
配置
bash
systemctl daemon-reload
- 设置 MySQL 服务开机自启动
bash
systemctl enable mysql80
- 启动 MySQL 服务
bash
systemctl start mysql80
- 验证 MySQL 服务状态
bash
systemctl status mysql80
7.创建符号链接
- 创建符号链接,实现使用
mysql80
运行 MySQL 8.0 的客户端工具
bash
# 创建符号链接
ln -s /usr/local/mysql80/bin/mysql /usr/bin/mysql80
# 验证效果,查询 mysql 版本
mysql80 -V
8.首次登录
- 登录
cmd
# 输入在【5. 初始化 MySQL 数据目录】时,输出的密码
mysql80 -uroot -p -S/tmp/mysql80.sock
- 修改密码
cmd
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
9.允许所有主机连接
- (MySQL 客户端中执行)
cmd
use mysql;
#-- 查询 Host 值
SELECT User, Host FROM mysql.user WHERE User = 'root';
#-- Host 修改为 %
update user set host='%' where user='root' and host='localhost';
#-- 刷新权限
flush privileges;
10.常用命令
功能 | 命令 |
---|---|
systemctl start mysqld80 | 启动服务 |
systemctl enable mysqld80 | 开机自启动 |
systemctl status mysqld80 | 服务状态 |
systemctl restart mysqld80 | 重启服务 |
systemctl stop mysqld80 | 停止服务 |
mysql80 -uroot -p mysql80 -uroot -p -S/tmp/mysql80.sock | 客户端登录 |