Linux系统同时安装MySQL5.7和MySQL8.0

2023-11-12

本文是在一台Centos7虚拟机上面同时安装mysql5.7和mysql8.0的步骤,记录一下,方便后续回顾,这篇文章之后会接着学习搭建两台虚拟机一主一从的架构。
其中配置的文件名称、目录、端口号、IP地址要根据自己电脑的实际情况进行更改。

mysql5.7和mysql8.0同时安装完成后:
在这里插入图片描述
在这里插入图片描述

mysql5.7下载地址
mysql8.0下载地址

将安装包上传到家目录:
在这里插入图片描述

MySQL5.7安装步骤

先把将安装包解压、重命名,移动到/usr/local/目录:

cd ~
tar -xvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.36-linux-glibc2.12-x86_64 mysql57
mv mysql57/ /usr/local/

在MySQL安装目录下创建存储数据库数据的新目录data/:

cd /usr/local/mysql57/
mkdir data

新建编辑my.cnf文件并赋予执行权限(这是MySQL5.7的配置文件,8.0和5.7不一样,8.0的在后面):

cd /usr/local/mysql57/
vim my.cnf
[mysqld]
basedir=/usr/local/mysql57/
datadir=/usr/local/mysql57/data/
port=3306
socket=/tmp/mysql57.sock
log-bin=/usr/local/mysql57/mysql-bin
server-id=2

[mysqld_safe]
log-error=/usr/local/mysql57/data/error.log
pid-file=/usr/local/mysql57/data/mysqld.pid
tmpdir=/tmp/mysql57
chmod 755 my.cnf

对照以下内容,修改/usr/local/mysql57/support-files/mysql.server文件:

vim /usr/local/mysql57/support-files/mysql.server
……
basedir=/usr/local/mysql57
datadir=/usr/local/mysql57/data
……
lockdir='/var/lock/subsys'
lock_file_path="$lockdir/mysql57"
……
mysqld_pid_file_path=/usr/local/mysql57/data/mysqld.pid
……
conf=/usr/local/mysql57/my.cnf
……

将修改之后的文件复制到/etc/init.d/目录,再将复制过去的文件重命名为mysql57:

cp /usr/local/mysql57/support-files/mysql.server /etc/init.d/
mv /etc/init.d/mysql.server /etc/init.d/mysql57

添加mysql用户和用户组,修改MySQL安装目录的所有者:

groupadd mysql
useradd mysql -g mysql
chown mysql:mysql /usr/local/mysql57/

初始化MySQL5.7,记得保存如下图框出来位置的初始化密码,登录的时候要用这个密码登录:

/usr/local/mysql57/bin/mysqld --defaults-file=/usr/local/mysql57/my.cnf --user=mysql --initialize

在这里插入图片描述
MySQL5.7就算是安装完毕了。

启动MySQL5.7:

service mysql57 start

在这里插入图片描述

#登录MySQL5.7
#因为要同时安装5.7和8.0,所以要选择登录的是哪个目录下的MySQL,5.7的目录是mysql57、端口号是3306。这些内容都是在配置文件中定义的。指定本地IP是使用tcp/ip方式登录,也可以通过指定socket文件的方式登录。
#socket本地登录:
#/usr/local/mysql80/bin/mysql -S/tmp/mysql57.sock -uroot -p 
#tcp/ip登录:
#/usr/local/mysql80/bin/mysql -uroot -p -h127.0.0.1 -P3306
#每一次输这么长有点麻烦,我们可以配置直接使用 mysql57命令登录:
#系统默认在 /usr/bin 目录下查找命令,所以在 /usr/bin 目录下给 mysql57 的启动程序设置一个软链接(类似Windows的快捷方式),再将软链接的名称改一下,/usr/bin/目录下5.7的mysql软链接名字改成mysql57,方便区分5.7和8.0。
ln -s /usr/local/mysql57/bin/mysql /usr/bin
mv /usr/bin/mysql /usr/bin/mysql57
#测试一下,查看安装的MySQL版本号
mysql57 -V
#登录(输入密码不显示,直接粘贴原先的初始化密码回车就行)
mysql57 -uroot -p -S/tmp/mysql57.sock

在这里插入图片描述

#更改root用户的默认密码为333333
mysql> set password for 'root'@'localhost'='333333';
#退出
mysql> exit

在这里插入图片描述

MySQL8.0安装步骤

把安装包解压、重命名,移动到/usr/local/目录:

cd ~
tar -xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.32-linux-glibc2.12-x86_64/ mysql80/
mv mysql80/ /usr/local/

在MySQL安装目录下创建存储数据库数据的新目录data/:

cd /usr/local/mysql80/
mkdir data

新建编辑my.cnf文件并赋予执行权限(MySQL8.0的配置文件):

cd /usr/local/mysql80/
vim my.cnf
[mysqld]
basedir=/usr/local/mysql80/
datadir=/usr/local/mysql80/data/
port=3307
socket=/tmp/mysql80.sock
character-set-server=UTF8MB4
symbolic-links=0

log-bin=/usr/local/mysql80/mysql-bin
server-id=1

gtid_mode=on
enforce_gtid_consistency=on

[mysqld_safe]
log-error=/usr/local/mysql80/data/error.log
pid-file=/usr/local/mysql80/data/mysqld.pid
tmpdir=/tmp/mysql80
chmod 755 my.cnf

对照以下内容,修改/usr/local/mysql80/support-files/mysql.server文件:

vim /usr/local/mysql80/support-files/mysql.server
……
basedir=/usr/local/mysql80
datadir=/usr/local/mysql80/data
……
lockdir='/var/lock/subsys'
lock_file_path="$lockdir/mysql80"
……
mysqld_pid_file_path=/usr/local/mysql80/data/mysqld.pid
……
conf=/usr/local/mysql80/my.cnf
……

将修改之后的文件复制到/etc/init.d/目录,再将复制过去的文件重命名为mysql80:

cp /usr/local/mysql80/support-files/mysql.server /etc/init.d/
mv /etc/init.d/mysql.server /etc/init.d/mysql80

添加mysql用户和用户组,修改MySQL安装目录的所有者:

groupadd mysql
useradd mysql -g mysql
chown mysql:mysql /usr/local/mysql80/

初始化MySQL8.0,记得保存如下图框出来位置的初始化密码,登录的时候要用这个密码登录:

/usr/local/mysql80/bin/mysqld --defaults-file=/usr/local/mysql80/my.cnf --user=mysql --initialize

在这里插入图片描述

MySQL8.0就算是安装完毕了。

启动MySQL8.0(输入密码不显示,直接粘贴原先的初始化密码就行)(5.7和8.0类似):

service mysql80 start
#登录MySQL8.0
#因为要同时安装5.7和8.0,所以要选择登录的是哪个目录下的MySQL,8.0的目录是mysql80、端口号是3307。这些内容都是在配置文件中定义的。指定本地IP是使用tcp/ip方式登录,也可以通过指定socket文件的方式登录。
#socket本地登录:
#/usr/local/mysql80/bin/mysql -S/tmp/mysql80.sock -u root -p 
#tcp/ip登录:
#/usr/local/mysql80/bin/mysql -u root -p -h 127.0.0.1 -P 3307
#可以配置直接使用 mysql80 登录:
#系统默认在 /usr/bin 目录下查找命令,所以在 /usr/bin 目录下给 mysql80 的启动程序设置一个软链接(类似Windows的快捷方式),再将软链接的名称改一下,/usr/bin/目录下8.0的mysql软链接名字改成mysql80,方便区分5.7和8.0。
ln -s /usr/local/mysql80/bin/mysql /usr/bin
mv /usr/bin/mysql /usr/bin/mysql80
#测试一下,查看安装的MySQL版本号
mysql80 -V
#登录(输入密码不显示,直接粘贴原先的初始化密码回车就行)
mysql80 -uroot -p -S/tmp/mysql80.sock

修改root用户的密码为333333:

#更改root用户的默认密码为333333
mysql> set password for 'root'@'localhost'='333333';
#退出
mysql> exit

允许其他所有机器连接本机MySQL8.0,这样物理机的Navicat就可以连接虚拟机的MySQL8.0了,改完之后用第二条语句刷新一下权限,现在就可以在物理机上连接了:

mysql> use mysql;
mysql> update user set host='%' where user='root' and host='localhost'; #允许所有机器连接本虚拟机的MySQL
mysql> flush privileges; #刷新权限
mysql> select user,host from user;

在这里插入图片描述
在这里插入图片描述

如果Mysql8.0正常启动但是Navicat无法连接:

  1. 先检查主机地址和端口号和实际的是否相符;
  2. 如果所有配置都正确那可能就是虚拟机的防火墙原因,可以开放对应端口号或者关闭防火墙:
    开放3307端口号:
firewall-cmd --list-all #查看防火墙开放的端口号
firewall-cmd --zone=public --add-port=3307/tcp –permanent #设置端口号3307开放
firewall-cmd –reload #重启防火墙
firewall-cmd --list-all #再次查看,可以看到3307已经开放

在这里插入图片描述

关闭防火墙:

systemctl status firewalld #查看防火墙状态
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #设置防火墙不开机不会自启动(默认的是开机自启动)

在这里插入图片描述
重新连接Navicat,连接成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux系统同时安装MySQL5.7和MySQL8.0 的相关文章

  • MYSQL - 查找最近的前一天

    我可以以某种方式 不使用 PHP 找到一周中最近的前一天日期吗 Like 最近的上一个星期二的日期是哪一天 CURDATE INTERVAL WEEKDAY CURDATE wday IF WEEKDAY CURDATE gt wday 0
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • Hibernate 对集合的查询过滤器

    我想执行以下查询 from Item i where i categoryItems catalogId catId 然而 这会产生以下异常 非法尝试取消引用集合 所以我用谷歌搜索 找到了这个 Hibernate 论坛帖子https for
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • MySQL Connector/C++ 库链接错误问题

    PROBLEM 好吧 我一直在尝试遵循 MySQL Forge Wiki 和其他一些网站上的示例代码 这些网站提供了有关如何获得简单数据库连接的教程 但由于某种原因 我的项目总是因链接错误而失败 我可以我自己不明白为什么或如何解决它 我仍在
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 如何在Mysql中仅将不同的值从一个表复制到另一个表?

    我有一个大约 2 5GB 的 MySql 数据库 表 A 具有以下列 anoid query date item rank url 我刚刚创建了另一个仅包含列的表 b query and date 我想在查询列中插入所有不同的记录 及其各自
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • 如何在Sequelize中设置查询超时?

    我想看看如何在 Sequelize 中设置查询的超时时间 我查看了 Sequelize 文档以获取一些信息 但我找不到我要找的东西 我发现的最接近的是 pools acquire 选项 但我不想设置传入连接的超时 而是设置正在进行的查询的超
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • 如何使用 vitess 仅对特定表进行分片

    我创建了一个包含三个表的未分片键空间 现在我想对前两个表的键空间进行分片 但不想对第三个表进行分片 如何才能做到这一点 Vitess 文档不包含任何与此相关的信息或示例 请帮忙 Thanks vitess 中的垂直分片与水平分片类似 您应该
  • Flask-login:无法理解它是如何工作的

    我试图理解如何Flask Login https flask login readthedocs org en latest works 我在他们的文档中看到他们使用预先填充的用户列表 我想使用数据库存储的用户列表 但是 我不明白其中的一些
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • PDO PHP 连接,致命错误

    我的连接类 firstcode php class DB functions public db function construct try db new PDO mysql localhost dbname xxx charset ut
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h

随机推荐

  • 浏览器可直接访问 Dubbo、gRPC 后端微服务,Dubbo-js 首个alpha 版本来了!

    基于 Dubbo3 定义的 Triple 协议 你可以轻松编写浏览器 gRPC 兼容的 RPC 服务 并让这些服务同时运行在 HTTP 1 和 HTTP 2 上 Dubbo TypeScript SDK 1 支持使用 IDL 或编程语言特有
  • 华为OD机试真题-信号发射和接收【2023Q2】【JAVA、Python、C++】

    题目描述 有一个二维的天线矩阵 每根天线可以向其他天线发射信号也能接收其他天线的信号 为了简化起见 我们约定每根天线只能向东和向南发射信号 换言之 每根天线只能接收东向或南向发送的信号 每根天线有自己的高度anth 各根天线的高度存储在一个
  • k8s资源类型详解

    k8s资源类型 一 k8s资源类型简介 二 deployment资源类型 三 service资源类型 四 k8s资源的回滚操作 五 用label控制pod的位置 六 namespace简介 七 pod资源类型 八 健康检测的相关应用 九 R
  • 网络爬虫是什么

    作为一家大数据公司的运营小编 经常会有人问我 诶 你说的爬虫是什么呀 爬虫的用途是什么呀 你们公司是卖爬虫的吗 有蜥蜴吗 等一系列问题 面对这些问题 小编是绝望的 那么爬虫到底是什么呢 一 爬虫是什么 以下是百度百科上对于网络爬虫的定义 网
  • Qt内存泄露(总结)

    一 简介 Qt内存管理机制 Qt 在内部能够维护对象的层次结构 对于可视元素 这种层次结构就是子组件与父组件的关系 对于非可视元素 则是一个对象与另一个对象的从属关系 在 Qt 中 在 Qt 中 删除父对象会将其子对象一起删除 C 中del
  • RColorBrewer

    1 RColorBrewer工具包 该包是R中常用的颜色选取工具包 它具有简单易用的特点 对于不具备太多色彩理论的读者来说也十分友好 虽然该包主要是为地图上色而设计 但也可以用于其他用途 library RColorBrewer 下面就逐一
  • 宝来车联网显示服务器开小差,思域请靠边站,比亚迪秦Pro在此!还有导航路况信息显示、车联网 快来瞧瞧!...

    由于各地政策的不同 燃油车和新能源车在各地的发展情况也有所不同 接下来要讲得两辆汽油车还不错 分别是秦Pro和宝来 让我们来一起了解一下吧 车型 比亚迪秦Pro 2018款 1 5TI 自动智联锋尚型 国V 指导价 9 98万元 2020
  • 统计二叉树结点个数(C语言)

    函数接口定义 int NodeCount BiTree T T是二叉树树根指针 函数NodeCount返回二叉树中结点个数 若树为空 返回0 裁判测试程序样例 include
  • matlab双因素模型,matlab双因素方差分析

    在MATLAB中求解 源程序 a 76 67 81 56 51 82 69 96 59 70 68 59 上页 下页 返回 表4 9 双因素试验的方差分析表 方差来源 平方和 自由度 因素 方差分析用于两个或者两个以上因素样本均值的检验问
  • 【行为识别】TSN/TRN/TSM/SlowFast/Non-local

    前言 记录视频理解领域的几篇文章吧 由于每篇值得记录的东西不多 所以合在一起 关于开源框架 有港中文多媒体实验室的MMAction 有设备的就尽量多跑跑模型吧 视频相对于静态图像多了时间维度 静态图像的分类 检测 分割做得相对完善了 视频方
  • 2015中国数据库技术大会简介

    作为国内数据库与大数据领域最大规模的技术盛宴 2015第六届中国数据库技术大会 DTCC 即将于2015年4月16日 18日在北京新云南皇冠假日酒店震撼登场 大会以 大数据技术交流和价值发现 为主题 云集了国内外顶尖专家 共同探讨MySQL
  • Vue项目打包部署到Tomcat

    废话不多说 直接进入正题 一 通常在开发环境下请求后台接口会用到反向代理 而在生产环境中反向代理是不生效的 那么为了避免部署在服务器上时需要一个一个更改接口地址这种麻烦费时的操作 更改配置文件去自动切换接口地址 开发环境 在config文件
  • 关于使用QTcpSocket的一些总结

    QTcpSocket类的方法connectToHost会泄露内存 即使把调用这个方法的QTcpSocket实例delete掉 内存也不会释放 反复connectToHost会导致段错误 十分危险 必须控制connectToHost的使用次数
  • 10.文件操作

    CSAPP笔记 1 shell程序设计 2 内存管理 3 链接库 4 文件操作 5 多进程 6 多线程 7 网络编程 8 makefile 9 调试技巧与调试工具 文章目录 CSAPP笔记 前言 一 基础知识 1 文件复制 2 扫描目录 3
  • SpringBoot 2 -SpringBoot入门

    SpringBoot 2 SpringBoot入门 1 简介 2 第一个SpringBoot程序 3 升级 4 响应封装类配置 1 简介 springboot是什么 Spring Boot它本身并不提供Spring框架的核心特性以及扩展功能
  • 安装mysql5.7笔记

    1 查看系统中是否自带安装mysql yum list installed grep mysql 2 删除系统自带的mysql及其依赖 防止冲突 yum y remove mysql libs x86 64 3 安装wget命令 yum i
  • 计算机网络的体系结构--学习计算机网络的重中之重

    一 计算机网络体系结构的设计 1 为什么需要计算机网络体系结构 连接在网络上的两台计算机需要互相传送文件 a 必须有一条传送数据的通路 b 发起通信的计算机要将数据通信的通路激活 激活就是发出一些信令 保证要传送的计算机数据能在这条通路上正
  • 图的m着色问题(回溯法-满m叉树)

    span style font family none background color rgb 255 255 255 1 问题描述 span 给定无向连通图G和m种不同的颜色 用这些颜色为图G的所有顶点着色 每个顶点着一种颜色 每条边的
  • 时域采样,频域为什么周期延拓了

    频域周期延拓只是表面现象 其实质是不同的信号采样后的像可能相同 不可区分 如果硬要做实验 还是要有一定的编程基础 起码要整一个声音出来 让你听一听 可是你要重复这一实验可能又太难了 所以我还是讲一讲简单的数学原理 并用简单的三角函数及程序验
  • Linux系统同时安装MySQL5.7和MySQL8.0

    本文是在一台Centos7虚拟机上面同时安装mysql5 7和mysql8 0的步骤 记录一下 方便后续回顾 这篇文章之后会接着学习搭建两台虚拟机一主一从的架构 其中配置的文件名称 目录 端口号 IP地址要根据自己电脑的实际情况进行更改 m