CentOS7安装部署双版本MySQL

文章目录

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

  1. 数据库文件目录,例如表结构和数据:/var/lib/mysql
  2. 配置文件目录:/usr/share/mysql/
  3. 相关命令目录:/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 客户端登录
相关推荐
engineer-gxd5 分钟前
MySQL 表的操作
mysql
cyt涛11 分钟前
MyBatis 学习总结
数据库·sql·学习·mysql·mybatis·jdbc·lombok
苦逼IT运维27 分钟前
YUM 源与 APT 源的详解及使用指南
linux·运维·ubuntu·centos·devops
看山还是山,看水还是。2 小时前
MySQL 管理
数据库·笔记·mysql·adb
momo小菜pa2 小时前
【MySQL 09】表的内外连接
数据库·mysql
Jasonakeke2 小时前
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
数据库·mysql
小宇成长录2 小时前
Mysql:数据库和表增删查改基本语句
数据库·mysql·数据库备份
团儿.3 小时前
解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
数据库·mysql·架构·mysql之mha架构
权^4 小时前
MySQL--聚合查询、联合查询、子查询、合并查询(上万字超详解!!!)
大数据·数据库·学习·mysql
万事大吉CC8 小时前
mysql单表查询·3
数据库·mysql