【MySQL】Linux安装MySQL

一、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 ~]#

这样就算卸载完成啦

如有错误,欢迎指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值