详解在Linux中同时安装配置并使用 MySQL5.7 和 MySQL8.0

最近需要使用mysql8.0版本,但是原本的mysql5.7版本已经被多个服务依赖,于是想想能不能同一台服务器装多个版本的mysql,一查确实可行,这里做一个记录方便自己后期回忆

阅读本文前请注意!!!

  1. 本文是帮助您建立在 mysql5.7版本已经安装完成并在运行中,另外安装配置 mysql8.0版本
  2. 如果需要同时安装两个版本,可以先查阅我之前所写关于 mysql5.7版本的安装,完成后再按本文继续操作即可

安装环境

CentOS7 + MySQL8.0

下载安装包

  1. 点击进入MySQL Community Server 8.0.29 官网下载地址
  2. 点击下拉选择 Linux - Generic,找到名为 mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz 点击下载即可

简化版命令步骤

给我自己的提醒:原来的 mysql5.7 配置基本没有动,服务也没有关,下面的命令都是关于 mysql8.0 的,原 mysql5.7 的配置文件在 /etc/my.cnf

  1. 解压xz文件为tar文件,注意命令无过程显示需要等待窗口跳至下一行
  2. xz -d /usr/soft/sort/mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz -C /usr/soft/sort/
  3. tar -xvf /usr/soft/sort/mysql-8.0.29-linux-glibc2.12-x86_64.tar -C /usr/soft/install/
  4. 赋予权限 chown -R mysql.mysql /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64
  5. 修改配置文件 vi /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/my.cnf
[client]
port=3307
mysql57 不要这个
mysqlx_port=33070
socket=/tmp/mysql80.sock
mysql57 不要这个
mysqlx_socket=/tmp/mysqlx80.sock

[mysqld]
skip-grant-tables
mysql安装目录
basedir=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64
mysql数据库目录
datadir=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/data
port=3307
innodb_file_per_table=1
character-set-server=utf8
mysql57 不要这个
mysqlx_port=33070
socket = /tmp/mysql80.sock
mysql57 不要这个
mysqlx_socket=/tmp/mysqlx80.sock

[mysqld_safe]
错误日志
log-error=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/data/error.log
pid文件
pid-file=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/data/mysqld.pid
tmpdir=/tmp/mysql80
  1. 赋予配置文件权限 chmod 755 /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/my.cnf
  2. 修改连接服务文件 vi /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/support-files/mysql.server
这两项在开头比较好找
basedir=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64
datadir=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/data

这项默认的不用找
lockdir='/var/lock/subsys'

这项默认有但是需要在最后改个80
lock_file_path="$lockdir/mysql80"

下面两个藏在下面细心的找一下
mysqld_pid_file_path=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/data/mysqld.pid
conf=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/my.cnf
  1. 复制注册连接服务文件 cp -i /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/support-files/mysql.server /etc/init.d/mysql80
  2. 初始化mysql80 /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/my.cnf --user=mysql --initialize
  3. root@localhost: 初始密码
  4. 启动mysql80服务 service mysql80 start,然后要记得开放防火墙的3307端口才能使用外部连接
  5. 登录 /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/bin/mysql --socket=/tmp/mysql80.sock -u root -p'初始密码'
  6. 重置密码,登录后依次执行命令
  7. flush privileges;
  8. 注意:新版本mysql8后,不再支持 password() 方法,只能通过 alter 语句进行修改
  9. ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
  10. 如果不行可以试试 ALTER USER 'root'@'%' IDENTIFIED BY '你的密码';
  11. use mysql;
  12. update user set host='%' where user='root' and host='localhost';
  13. flush privileges;
  14. 查看占用端口 show global variables like 'port';,如果发现为0,需要执行以下步骤修改
  15. 停止服务: service mysql80 stop
  16. 修改配置文件: vi /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/my.cnf,将 [mysqld] 下的 skip-grant-tables 注释
  17. 重新启动服务: service mysql80 start

开启3307端口流程

  1. cd /etc/sysconfig进入该目录,检查是否存储了 iptables文件
  2. vim iptables使用 vim编辑器修改 iptables文件,按下 i进入编辑模式
  3. 在初始端口那行下面添加 -A INPUT -p tcp -m state --state NEW -m tcp --dport 3307 -j ACCEPT,开放3307端口
  4. service iptables restart重启防火墙即可

如何mysql80服务启动失败

您可以参考以下步骤重新初始化数据库。测试是有效的。

[En]

You can refer to the following steps to reinitialize the database. The test is valid.

  1. 删除data文件夹 rm -rf /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/data
  2. 新建data目录 mkdir /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/data
  3. 赋予权限 chown -R mysql.mysql /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64
  4. 重新初始化 /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/my.cnf --user=mysql --initialize
  5. 测试启动服务 service mysql80 start,成功即可

参考文档

  1. linux 下同时安装 mysql5.7 和 mysql8.0
  2. linux安装两个mysql(8.0和5.7),并同时使用
  3. tar.xz文件如何解压
  4. linux mysql8 初始密码修改
  5. linux下查看mysql端口号和修改端口号方法

我是 fx67ll.com,如果您发现本文有什么错误,欢迎在评论区讨论指正,感谢您的阅读!
如果您喜欢这篇文章,欢迎访问我的 本文github仓库地址,为我点一颗Star,Thanks~ 😃
转发请注明参考文章地址,非常感谢!!!

Original: https://www.cnblogs.com/fx67ll/p/linux-install-mysql-with2version.html
Author: fx67ll
Title: 详解在Linux中同时安装配置并使用 MySQL5.7 和 MySQL8.0

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505436/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MySQL数据备份 mysqldump 详解

    MySQL数据备份流程 打开cmd窗口 通过命令进行数据备份与恢复; 需要在Windows的命令行窗口中进行; l 开始菜单,在运行中输入cmd回车; l 或者win+R,然后输入…

    数据库 2023年6月14日
    087
  • MySQL实战45讲 16

    16 | “order by”是怎么工作的? 以市民表为例,假设要查询城市是”杭州”的所有人名字,并且按照姓名 排序返回前 1000…

    数据库 2023年6月14日
    098
  • [VSCode] Todo Tree VSCode插件 待办事项树

    Todo Tree 一款待办事项插件 我们写程序的时候,难免会遇到一些情况需要标记或者搁置,在写代码的时候会用一些特殊的注释来表示不同的内容,使我们可以快速的定位我们注释的位置。 …

    数据库 2023年6月9日
    085
  • 一,Flink快速上手

    1.依赖配置 1.1 pom文件 8 8 1.13.0 1.8 2.12 1.7.30 org.apache.flink flink-java ${flink.version} o…

    数据库 2023年6月6日
    095
  • 0811JDBC随笔

    1.JDBC体系系统 一组规范:接口 JDBC接口(API)包括两个层次: 面向应用的API:Java API,抽象接口,供应用开发人员使用(连接数据库,执行SQL语句,获得结果)…

    数据库 2023年5月24日
    071
  • MySQL中常用的数据类型

    在写sql语句的时候,数据类型是避不可少的一个环节,以下是我在学习的过程中总结的数据类型,仅供参考: 数值类型 您可以在上表中看到,每种类型都有其对应的范围。如果它大于某个值,则不…

    数据库 2023年5月24日
    090
  • 赞!7000 字学习笔记,一天搞定 MySQL

    MySQL近两年一直稳居第二,随时有可能超过Oracle计晋升为第一名,因为MySQL的性能一直在被优化,同时安全机制也是逐渐成熟,更重要的是开源免费的。 MySQL是一种关系数据…

    数据库 2023年6月9日
    079
  • 【大厂面试必备系列】滑动窗口协议

    引言 想象一下这个场景:主机 A 一直向主机 B 发送数据,不考虑主机 B 的接收能力,则可能导致主机 B 的接收缓冲区满了而无法再接收数据,从而导致大量的数据丢包,引发重传机制。…

    数据库 2023年6月6日
    0110
  • JUC学习笔记(五)

    创建线程的方法-一种是通过创建 Thread 类,另一种是通过使用 Runnable 创建线程。但是,Runnable 缺少的一项功能是,当线程终止时(即 run()完成时),我们…

    数据库 2023年6月6日
    0130
  • Ubuntu 64位桌面版 16.04.1 设置桥接模式和固定静态IP方法

    进入Ubuntu,打开命令窗口(右键单机桌面选择Terminal) 输入命令ip a,查看自己网卡编号,比如我的就是ens33 输入命令sudo vi /etc/network/i…

    数据库 2023年6月6日
    099
  • 记一次线上问题 → 对 MySQL 的 ON UPDATE CURRENT_TIMESTAMP 的片面认知

    开心一刻 我妻子痛经了,正躺在沙发上。她两岁的女儿看着她问。 [En] My wife had dysmenorrhea and was lying on the sofa. He…

    数据库 2023年5月24日
    0105
  • 2022年5月数据库排名

    数据来源:https://db-engines.com/en/ranking Original: https://www.cnblogs.com/chujian007/p/1631…

    数据库 2023年6月11日
    079
  • ShardingSphere-Proxy 前端协议问题排查方法及案例

    ShardingSphere-Proxy 是 Apache ShardingSphere 的接入端之一,其定位为透明化的数据库代理。ShardingSphere-Proxy 实现了…

    数据库 2023年6月16日
    086
  • Linx__Ubuntu_APT

    apt是Advanced Packaging Tool的简称。 在Ubuntu下,我们可以使用apt命令进行软件包的 更新, 安装, 删除, 清理等 类似于Windows的软件管理…

    数据库 2023年6月14日
    0123
  • MySQL主从备库过滤参数分析和测试

    测试环境: GTID的主从复制,主库(9900)——》备库(9909),存在测试库表: 9900_db1库:t1、t2、t3、t4、t5表 9900_db2库:t6、t7、t8、t…

    数据库 2023年5月24日
    064
  • RocksDB线程局部缓存

    在开发过程中,我们经常会遇到并发问题,解决并发问题通常的方法是加锁保护,比如常用的spinlock,mutex或者rwlock,当然也可以采用无锁编程,对实现要求就比较高了。对于任…

    数据库 2023年6月9日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球