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 客户端登录
相关推荐
程序员奇奥1 小时前
CentOS中使用Python将文本中的IP地址替换为外网地址
python·tcp/ip·centos
周先森的怣忈2 小时前
Ubuntu,openEuler,MySql安装
mysql·ubuntu·openeuler
weixin_SAG3 小时前
7天掌握SQL - 第三天:MySQL实践与索引优化
android·sql·mysql
锐策3 小时前
〔 MySQL 〕中三种重要的日志类型
数据库·mysql
暴力的bug制造机3 小时前
【MySQL】库的操作(增删查改 | 备份 | 恢复)
linux·数据库·mysql·oracle
调皮的木木3 小时前
Mysql的加锁情况详解
java·数据库·mysql
ZHOU西口4 小时前
MySQL系列之身份鉴别(安全)
mysql·安全·grant·validate_pass·connection_cont·密码策略·登录策略
陌小呆^O^5 小时前
Cmakelist.txt之win-odbc-mysql
数据库·mysql
苹果酱05675 小时前
4-SpringCloud整合服务间的调用即负载均衡
java·开发语言·spring boot·mysql·中间件
恒辉信达5 小时前
hhdb数据库介绍(9-30)
服务器·数据库·mysql