• 【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 ~]#
    

    这样就算卸载完成啦

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

  • 相关阅读:
    如何在 Linux 中检查我的网卡速度?
    java 歌词解析 源代码, 在windows10下调试运行成功。
    纯前端模板文件下载如何精确控制下载的文件名字
    p5.js 3D图形-立方体
    Idea启动报错start failed闪退, RestfulToolkit-fix插件问题
    内网安全-内网穿透
    MySQL简单命令总结
    搭建私人图床结合内网穿透实现公网访问,让您的摄影作品连接世界
    使用JNPF低代码平台提高生产力
    7.二叉树的遍历方式及二叉树习题
  • 原文地址:https://blog.csdn.net/Decade0712/article/details/138547911