一、center OS环境准备
为了在Linux系统中查看MySQL5.8与8.0版本的区别
我们要准备两个虚拟机,需要的软件:VMware和CentOS7
因为博主之前在学习redis的时候已经安装过一个虚拟机了,所以我就直接克隆了一个CentOS2.0
修改mac地址,点击克隆出来的虚拟机,选择管理,选择网络适配器,然后选择高级,在mac地址那里点击一下生成就可以了
修改主机名称:进入虚拟机,修改hostname然后重启
[root@myLinux2 ~]# vim /etc/hostname
myLinux2.0
[root@myLinux2 ~]# reboot
修改网络配置,包括修改IP地址,修改UUID
[root@myLinux2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" # 由dhcp改为static,将动态分配ip地址改为静态ip
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ef554f10-4835-4ec8-8af5-d2391c417d9e" # 修改UUID,避免克隆主机和原主机网卡UUID重复,对网络通信产生影响
DEVICE="ens33"
ONBOOT="yes"
#IP_ADDRESS
IPADDR="192.168.153.180" # 静态IP地址
NETMASK="255.255.255.0" # 虚拟机和宿主机的子网掩码都是255.255.255.0
GATEWAY="192.168.1.2" # 网关,随便填的,后面可能会改
DNS1="192.168.1.2" # DNS服务器,随便填的,后面可能会改
使用:wq!
保存后,执行Systemctl restart network
重启网卡
注意:IPADDR有网段要求,我们打开Windows宿主机的cmd窗口,输入ipcongif查看网络配置
查看以太网适配器 VMware Network Adapter VMnet8:
下面的IPV4地址,发现他是192.168.153网段的
所以虚拟机的静态IP也要在这个网段
这样一来,环境准备就算完成了
二、软件安装
1、首先,放一个MySQL官网地址在这:https://downloads.mysql.com/archives/
然后我们依次下载5.7版本和8.0版本的,注意要下载免费的MySQL Community Server社区版本
解压后,我们使用MobaXterm终端工具将解压后的文件上传到虚拟机
MySQL5.7
MySQL8.0
2、相关检查与依赖安装
- 因为MySQL要在/tmp下创建tmp_db工具,所以要给/tmp文件比较大的权限
chmod -R 777 /tmp
- 检查依赖
rpm -qa|grep libaio
rpm -qa|grep net-tools
- 接下来,我们
按照顺序
进行安装,如果执行遇到这个报错
rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm
warning: mysql-community-libs-8.0.36-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID a8d3785c: NOKEY
error: Failed dependencies:
mariadb-libs is obsoleted by mysql-community-libs-8.0.36-1.el7.x86_64
那就需要使用命令yum remove mysql-libs
清除相关依赖
MySQL8.0
rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.36-1.el7.x86_64.rpm
MySQL5.7
rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm
安装完成之后
3、服务初始化
# 初始化,保证数据库目录与文件的所有者为mysql登录用户
[root@myLinux2 mysql-8.0]# mysqld --initialize --user=mysql
# 查看MySQL相关信息,包括为root用户创建的临时密码
[root@myLinux2 mysql-8.0]# cat /var/log/mysqld.log
查看MySQL是否启动,如果是dead状态,用命令启动
[root@myLinux2 mysql-8.0]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
[root@myLinux2 mysql-8.0]#
[root@myLinux2 mysql-8.0]#
[root@myLinux2 mysql-8.0]# systemctl start mysqld
使用systemctl list-unit-files|grep mysqld.service
查看进程是否为自启动
如果输出的信息不是enabled,那么使用systemctl enable mysqld.service
将其设置成自启动,如果不希望自启动就使用systemctl disable mysqld.service
[root@myLinux2 mysql-8.0]# systemctl list-unit-files|grep mysqld.service
mysqld.service enabled
4、登录MySQL,需要重置root密码,重新登录才能进行操作
[root@myLinux2 mysql-8.0]# mysql -uroot -p
Enter password: #输入之前/var/log/mysqld.log中展示的密码
Welcome to the MySQL monitor. Commands end with ; or \g.
...
mysql>
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
# 修改root用户密码
mysql> alter user 'root'@'localhost' identified by '你的密码';
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye
[root@myLinux2 mysql-8.0]#
5、实现远程连接
-
测试网络是否可用
首先确保我们telnet功能是打开的
使用ping和telnet测试之后,发现3306端口无法访问
-
放通防火墙指定端口
# 查看当前哪些端口是放通的
[root@myLinux1 ~]# firewall-cmd --list-all
# 把3306端口放通
[root@myLinux1 ~]# firewall-cmd --add-port=3306/tcp --permanent
success
# 重启防火墙
[root@myLinux1 ~]# firewall-cmd --reload
success
# 查看3306端口是否放通
[root@myLinux1 ~]# firewall-cmd --query-port=3306/tcp
yes
- 依次执行如下SQL语句,修改MySQL中root的host字段,一定要执行
flush privileges;
show databases;
use mysql;
select host,user from user;
update user set host='%' where user = 'root';
flush privileges;
exit
然后使用systemctl restart mysqld
重启MySQL服务,然后我们就可以连接成功了
但是MySQL8.0按照上面的步骤操作之后,会有一个报错,原因是是mysql登录验证的默认插件变更了,从mysql_native_password变为caching_sha2_password
为了解决这个问题,我们需要使用如下sql
use mysql;
alter user 'root'@'%' identified with mysql_native_password BY '你的密码';
flush privileges;
链接成功
三、卸载MySQL
因为前面博主改错了user表中的host,导致不管是从虚拟机还是从navicat都登不上MySQL8.0
所以只能重新安装
# 关闭MySQL服务
[root@myLinux2 ~]# systemctl status mysqld
# 查看MySQL安装状况
[root@myLinux2 ~]# rpm -qa|grep -i mysql
mysql-community-common-8.0.36-1.el7.x86_64
mysql-community-icu-data-files-8.0.36-1.el7.x86_64
mysql-community-client-plugins-8.0.36-1.el7.x86_64
mysql-community-client-8.0.36-1.el7.x86_64
mysql-community-server-8.0.36-1.el7.x86_64
mysql-community-libs-8.0.36-1.el7.x86_64
# 卸载已安装程序
[root@myLinux2 ~]# yum remove mysql-community-common-8.0.36-1.el7.x86_64
[root@myLinux2 ~]# yum remove mysql-community-icu-data-files-8.0.36-1.el7.x86_64
[root@myLinux2 ~]# yum remove mysql-community-client-plugins-8.0.36-1.el7.x86_64
# 删除MySQL相关文件
[root@myLinux2 ~]# find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib64/mysql
[root@myLinux2 ~]# rm -rf /etc/selinux/targeted/active/modules/100/mysql
[root@myLinux2 ~]# rm -rf /var/lib/mysql
[root@myLinux2 ~]# rm -rf /usr/lib64/mysql
# 删除my.cnf(如果存在的话)
[root@myLinux2 ~]# find / -name my.cnf
[root@myLinux2 ~]#
这样就算卸载完成啦
如有错误,欢迎指正!!!