首页 > 数据库 >Linux系统同时安装MySQL5.7和MySQL8.0

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

时间:2023-09-19 15:01:01浏览次数:83  
标签:bin MySQL5.7 Linux MySQL8.0 usr mysql mysql57 local mysql80

本文是在一台Centos7虚拟机上面同时安装mysql5.7和mysql8.0的步骤,记录一下,方便后续回顾,这篇文章之后会接着学习搭建两台虚拟机一主一从的架构。

其中配置的文件名称、目录、端口号、IP地址要根据自己电脑的实际情况进行更改。

mysql5.7和mysql8.0同时安装完成后:

Linux系统同时安装MySQL5.7和MySQL8.0_端口号

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

将安装包上传到家目录:

Linux系统同时安装MySQL5.7和MySQL8.0_端口号_03

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

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

MySQL5.7就算是安装完毕了。

启动MySQL5.7:

service mysql57 start

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

#登录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

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

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

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



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

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

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;

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

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

如果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已经开放

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

关闭防火墙

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

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

重新连接Navicat,连接成功。

转自:https://blog.csdn.net/qq_45855805/article/details/130015191

我本地安装时的问题

我本地mysql5.7是以前rpm安装好了的,这次新增mysql8.0,所有使用了解压安装模式,就上面的安装步骤。如果使用service模式启动会报错,因为mysql5.7已经启动了,我就没有做服务启动,直接命令启动

cd /usr/local/mysql80

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

/usr/local/mysql80/bin/mysqld_safe --defaults-file=/usr/local/mysql80/my.conf &

/usr/local/mysql80/bin/mysql -uroot -p -P3308 -h127.0.0.1

需要特别注意就是mysql8的密码问题,已经使用新的密码插件,SQLyog老版本不支持,可以使用

https://my.oschina.net/lenglingx/blog/5120817

https://my.oschina.net/lenglingx/blog/3158217

标签:bin,MySQL5.7,Linux,MySQL8.0,usr,mysql,mysql57,local,mysql80
From: https://blog.51cto.com/lenglingx/7525270

相关文章

  • 简单易懂的Linux RedHat安装教程,轻松搭建开发环境
    Linux RedHat是一款流行的操作系统,它拥有强大的稳定性和安全性,是许多企业和开发者首选的操作系统。本文将为你详细介绍如何从零开始安装LinuxRedHat并搭建你的开发环境。1.准备工作在安装LinuxRedHat之前,需要准备好以下物品:-一台电脑-一个USB启动盘-LinuxRedHat......
  • linux-负载均衡
    特点:高可用四层负载均衡:在OSI七层传输协议里面的传输层 七层负载均衡:在应用层1、HTTP负载均衡将负载分发到两台或多台HTTP服务器  upstreambackend{      server10.10.12.45:80weight=1;      serverapp.example.com:80weight=2;   ......
  • Linux 压缩/解压命令
         ......
  • linux 常见命令
    linux查看进程树:pstree-aup查看当前用户的所有进程:psu查看所有进程的详细信息:psaux根据进程名查找进程:ps-C进程名平均一个进程多少M:ps--no-headers-o"rss,cmd"-Cphp-fpm|ps--no-headers-o"rss,cmd"-Cphp-fpm|awk'{sum+=$1}END{printf("%d%s\n",s......
  • Linux(一)
    https://blog.csdn.net/qinden/article/details/122680075 一、linux内核及发行版linuxkernel(只有一个)已经把对硬件的控制封装成了各种系统调用,发行版中的各种程序通过系统调用来操作硬件。linux/GNU发行版通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。......
  • linux命令MV替代RM,防误删操作
    服务器防误删操作:自建回收站Trash的方法今天早上不小心再删除MYSQL备份脚本时,使用自动补全路径,一不小心把备份脚本整个目录删除了。幸好不是删除整个根目录,吓死宝宝了。还是要把rm-rf命令进行改造预防不测。1.使用mv替换rm命令1.1建立回收站首先在用户目录下......
  • Linux CentOS7.9 升级到最新内核
    导入elrepo仓库rpm--importhttps://www.elrepo.org/RPM-GPG-KEY-elrepo.orgyuminstallhttps://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm#kernel-lt:长期支持版本,用于修复旧版内核的BUG,这些内核只会修复重大BUG,并且不会频繁发布版本。#kernel-m......
  • linux常用命令
    1.前十大占用内存psaux--sort=-%mem|head-n112.查看系统中特定的文件find/-name*read*3.查看当前目录下的指定文件find.-name*read*4.安装已经解压过的包python./setup.pyinstall5.排序升序ls-tlrb6.统计文件的个数ls|wc-l7.查看挂载盘的情况df-h......
  • Linux上python安装apex
    直接pipinstallapex即可以下是过时、错误的帖子:https://blog.csdn.net/weixin_44917271/article/details/116382959https://blog.csdn.net/mrjkzhangma/article/details/100704397https://www.cnblogs.com/peixu/p/14614013.html若出现运行时出错(我自己装了2次第一次没错,第......
  • 9-19|linux由于修改了时间,我现在想调成北京时间
    如果你想将Linux系统的时间设置为北京时间,可以按照以下步骤进行操作:1.**设置时区为北京时间**:   首先,你可以使用`tzdata`包来设置时区。在大多数Linux系统中,你可以执行以下命令来更改时区: ```bash sudotimedatectlset-timezoneAsia/Shanghai ``` ......