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安装部署:

二、安装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 客户端登录
相关推荐
jiang0615csdn32 分钟前
centOS 7.9 65bit 修复Openssh漏洞
centos
cylemon1 小时前
Table ‘spzx-system.QRTZ_LOCKS‘ doesn‘t exist
mysql
云浮万里_11 小时前
保姆级教程:Vue3 + Django + MySQL 前后端联调(PyCharm+VSCode版)
vue.js·vscode·mysql·pycharm·django
安得权2 小时前
Ubuntu24.04 离线安装 MySQL8.0.41
mysql
前端.火鸡3 小时前
关于我对接了deepseek之后部署到本地将数据存储到mysql的过程
数据库·mysql
猫咪-95275 小时前
Mysql索引
mysql
Arbori_262155 小时前
mysql 索引
数据库·mysql
小李小李快乐不已5 小时前
3.1.3 MYSQL连接池
数据库·mysql·adb
明月看潮生6 小时前
青少年编程与数学 02-011 MySQL数据库应用 18课题、性能监控
数据库·mysql·青少年编程·编程与数学
ssxueyi6 小时前
MySQL 语句解析json字符串
数据库·mysql·json