美文网首页
CentOS7 安装 MySQL8.* 详细教程

CentOS7 安装 MySQL8.* 详细教程

作者: 楍跑的鸟 | 来源:发表于2020-06-01 11:36 被阅读0次

      由于工作需要最近使用VMware® Workstation 15 Pro 创建了一个centos7虚拟机,可是这是一个空白的系统,需要安装一些所需软件等等;
      我首先安装的就是mysql。我在网上查阅了一些资料,发现好多文章讲的都是千篇一律。有可能能按照他们的教程能安装成功,可是我按照那些教程安装失败了,期间还重新创建了一次虚拟机,结果还是不行。经过自己的摸索,最终安装成功了,特此记录一下自己的安装过程,希望对一些人有所帮助。

    一、准备工作

      工欲善其事必先利其器。首先把自己所需要的软件先准备好。以下是我所准备的软件和版本号。提前说明,我不提供任何破解软件,需要你们自己找,
    或者在官网下载软件。

    虚拟机 VMware® Workstation 15 Pro

    1.jpg

    CentOS系统 CentOS Linux release 7.8.2003

    2.jpg 3.jpg

    MySQL8 mysql80-community-release-el7-3.noarch.rpm

    (这一步不需要下载,我只是让你确定要选择的版本文件名,下面使用wget命令时需要)

    4.jpg

    到此所有软件准备完成。

    二、安装软件

      虚拟机 VM 的安装,以及CentOS系统的安装我在这就不介绍了,网上教程很多,一般都能创建成功。如果以后有时间,看看再写一篇CentOS7的虚拟机创建步骤吧。

    以下是安装MySQL8的步骤:

    安装前准备

    1. 在安装MySQL之前我们先要把CentOS自带的mariadb,如果不卸载的话,在下面的安装中会报错。

      • 查看mariadb版本
         rpm -qa | grep mariadb
      
      • 卸载mariadb
         rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
      
    2. 检测系统是否自带安装 MySQL:

         rpm -qa | grep mysql
      

      如果你系统有安装,那可以选择进行卸载:

         rpm -e mysql  // 普通删除模式
         rpm -e --nodeps mysql  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
      

    安装MySQL

    wget http://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
    rpm -ivh mysql80-community-release-el7-3.noarch.rpm --force --nodeps 
    yum update
    yum install mysql-server (过程很漫长)
    

    权限设置:

       chown mysql:mysql -R /var/lib/mysql
    

    初始化 MySQL:

       mysqld --initialize
    

    启动 MySQL:(如果启动失败请往下直接查看 三、问题解决)

       systemctl start mysqld
    

    查看 MySQL 运行状态:

       systemctl status mysqld
    

    如果以上没有任何问题,到此MySQL就安装完成了,之后就是MySQL的各种配置设置了。

    三、问题解决

      当我启动MySQL服务时出现一下问题.

    [root@localhost ~]# systemctl start mysqld
    Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
    
    

    查看MySQL服务状态显示

    [root@localhost ~]# systemctl status mysqld.service
    ● mysqld.service - MySQL Server
       Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
       Active: failed (Result: exit-code) since Mon 2020-06-01 08:34:27 CST; 26s ago
         Docs: man:mysqld(8)
               http://dev.mysql.com/doc/refman/en/using-systemd.html
      Process: 57404 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
      Process: 57380 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
     Main PID: 57404 (code=exited, status=1/FAILURE)
       Status: "Server startup in progress"
        Error: 2 (No such file or directory)
    
    Jun 01 08:34:26 localhost.localdomain systemd[1]: Starting MySQL Server...
    Jun 01 08:34:27 localhost.localdomain systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
    Jun 01 08:34:27 localhost.localdomain systemd[1]: Failed to start MySQL Server.
    Jun 01 08:34:27 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state.
    Jun 01 08:34:27 localhost.localdomain systemd[1]: mysqld.service failed.
    

    查看mysql.log文件显示

    vim /var/log/mysqld.log 
    
    2020-06-01T00:33:44.898189Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.20) initializing of server in progress as process 57329
    2020-06-01T00:33:45.027806Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
    2020-06-01T00:33:48.582275Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
    2020-06-01T00:33:53.256312Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: asdguasgdu621&&
    2020-06-01T00:34:27.214904Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.20) starting as process 57404
    2020-06-01T00:34:27.250117Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
    2020-06-01T00:34:27.250535Z 1 [ERROR] [MY-012271] [InnoDB] The innodb_system data file 'ibdata1' must be writable
    2020-06-01T00:34:27.250624Z 1 [ERROR] [MY-012278] [InnoDB] The innodb_system data file 'ibdata1' must be writable
    2020-06-01T00:34:27.250714Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
    2020-06-01T00:34:27.251133Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
    
    

    经过以上查看发现有两处错误:

    1. Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
    2. 2020-06-01T00:34:27.250624Z 1 [ERROR] [MY-012278] [InnoDB] The innodb_system data file 'ibdata1' must be writable

    解决问题:

    百度错误代码:

    The innodb_system data file ‘ibdata1’ must be writable
    

    字面意思:’ibdata1必须可写
    那么解决方案自然是更改对应权限

    通过yum安装的话,
    5.7版本以前是

       chmod -R 777 /usr/local/mysql/data/ 
    

    5.7版本以后是

       chmod -R 777 /var/lib/mysql
    

    如果不是通过yum安装的话:

      find / -name ibdata1 
    

    找到对应目录更改权限

    之后重启MySQL服务


    5.jpg

    发现已经成功。

    错误代码:

    Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
    

    查看是否这个目标路径已经存在/var/lib/mysql /,如果存在,删除/var/lib/mysql /后重启 MySQL 服务就可以了!

    说明

    MySQL 日志文件路径

    /var/log/mysqld.log
    

    MySQL 配置文件路径

       my.cnf是mysql启动时加载的配置文件,一般会放在mysql的安装目录中,用户也可以放在其他目录加载。总的来说,my.cnf类似与window中my.ini。

    使用locate my.cnf命令可以列出所有的my.cnf文件

    [root@localhost ~]# locate my.cnf
    /etc/my.cnf
    /etc/my.cnf.d
    
    

    查看 MySQL 默认读取my.cnf的目录
    如果没有设置使用指定目录的 my.cnf,MySQL 启动时会读取安装目录根目录及默认目录下的my.cnf文件。

    查看 MySQL 启动时读取配置文件的默认目录

    [root@localhost ~]# mysql --help|grep 'my.cnf'
                          order of preference, my.cnf, $MYSQL_TCP_PORT,
    /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 
    

    MySQL默认会搜寻my.cnf的目录,顺序排前的优先。

    启动时没有使用配置文件
      如果没有设置使用指定目录 my.cnf 文件及默认读取目录没有 my.cnf 文件,表示 MySQL 启动时并没有加载配置文件,而是使用默认配置。

      需要修改配置,可以在mysql默认读取的目录中,创建一个my.cnf文件(例如:/etc/my.cnf),把需要修改的配置内容写入,重启 MySQL 后即可生效

    所需命令

    service mysqld start # 启动服务
    service mysqld stop # 停止服务
    service mysqld restart  # 重启服务
    service mysqld status # 查看状态
    

    四、MySQL配置设置

    登陆修改密码

    • 通过 cat /var/log/mysqld.log | grep password 命令查看数据库的初始随机密码。

      6.jpg
    • 通过 mysql -u root -p 敲回车键进入数据库登陆界面,密码为初始随机密码。直接复制粘贴就可以登陆进去了。


      7.jpg
    • 通过 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; 命令来修改密码


      8.jpg
    • 通过 exit; 命令退出 MySQL,然后通过新密码再次登陆


      9.jpg
    • 通过以下命令,进行远程访问的授权

      create user 'root'@'%' identified with mysql_native_password by 'root';
      
      grant all privileges on *.* to 'root'@'%' with grant option;
      
      flush privileges;
      
    10.jpg
    • 通过 ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER; 命令修改加密规则,MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式。
    • 通过 flush privileges; 命令刷新修该后的权限


      11.jpg

    开通端口设置防火墙

    • 通过以下命令,关闭 firewall
    systemctl stop firewalld.service;
    
    systemctl disable firewalld.service;
    
    systemctl mask firewalld.service;
    
    systemctl stop firewalld
    
    systemctl mask firewalld
    
    
    12.jpg
    • 通过 yum -y install iptables-services 命令安装 iptables 防火墙


      13.jpg
    • 通过以下命令启动设置防火墙

    systemctl enable iptables;
    
    systemctl start iptables;
    
    14.jpg
    • 通过 vim /etc/sysconfig/iptables 命令编辑防火墙,添加端口,并在相关位置,写入以下内容
       -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
       -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
       -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
       -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
       -A INPUT -m state --state NEW -m tcp -p tcp --dport 8090 -j ACCEPT
      
    15.jpg
    • 通过 systemctl restart iptables.service 命令重启防火墙使配置生效
    • 通过 systemctl enable iptables.service 命令设置防火墙开机启动
    16.jpg
    • 使用Navicat 进行远程链接测试
    18.jpg 17.jpg

    五、结束语

      以上就是我在新建的CentOS7虚拟机系统上安装 MySQL 的全部过程,希望能对你有所帮助。

    相关文章

      网友评论

          本文标题:CentOS7 安装 MySQL8.* 详细教程

          本文链接:https://www.haomeiwen.com/subject/hwpjzhtx.html