Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案

因为公司的系统在内网下,没有互联网,因此须要离线安装MySQL,通过两天摸索,终于安装成功。把安装过程以及遇到的报错问题和解决方案整理了一下,方便往后使用,也但愿能给你们提供点帮助。node

 

安装环境:CentOS7mysql

安装版本:MySQL5.7linux

1、安装过程

  1. 卸载系统自带的mariadb-libs

[root@centos-linux etc]# rpm -qa|grep mariadb sql

mariadb-libs-5.5.60-1.el7_5.x86_64 数据库

[root@ centos-linux etc]# rpm -e -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodepsvim

  1. 下载安装包

mysql-community-libs-5.7.25-1.el7.x86_64.rpm centos

https://dev.mysql.com/downloads/file/?id=482674服务器

mysql-community-common-5.7.25-1.el7.x86_64.rpm session

https://dev.mysql.com/downloads/file/?id=482678socket

mysql-community-server-5.7.25-1.el7.x86_64.rpm

https://dev.mysql.com/downloads/file/?id=482679

mysql-community-client-5.7.25-1.el7.x86_64.rpm

https://dev.mysql.com/downloads/file/?id=482677

寻找下载地址的教程:

https://blog.csdn.net/qq_37936542/article/details/79498905

这个是我下载整理好的安装包,能够直接拿来用

连接:https://share.weiyun.com/5vO8ppp 密码:qdeixz

 

  1. 进行rpm安装

将rpm安装包放到本身的目录下

运行如下命令,自动根据依赖安装

[root@ centos-linux etc]# rpm -Uvh *.rpm --nodeps --force

查看安装状况:

[root@guchen mysql5.7]# rpm -qa|grep mysql

mysql-community-client-5.7.25-1.el7.x86_64

mysql-community-common-5.7.25-1.el7.x86_64

mysql-community-libs-5.7.25-1.el7.x86_64

mysql-community-server-5.7.25-1.el7.x86_64

安装成功

  1. 数据库初始化

[root@guchen mysql5.7]# mysqld --initialize --user=mysql

数据库初始化有时候反应会比较慢,请耐心等待。初始化成功后会生成一个随机密码

使用如下命令查看生成的密码

[root@guchen mysql5.7]# grep 'temporary password' /var/log/mysqld.log

 

  1. 启动数据库服务

[root@guchen mysql5.7]# systemctl start mysqld.service

  1. 修改密码

    使用如下命令查看以前生成的密码

    [root@guchen lib]# grep 'temporary password' /var/log/mysqld.log

    2019-03-21T16:08:05.650649Z 1 [Note] A temporary password is generated for root@localhost: S?Iioun;3+ay

    登录mysql数据库,登录时,复制以上生成的密码便可,蓝色部分为生成的密码

    mysql -u root -p

    设置新密码

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

    Query OK, 0 rows affected (0.00 sec)

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    以后再想修改密码时:

    mysql> use mysql;
    Database changed

    mysql> set password for root@'%' = password('新密码');

    Query OK, 0 rows affected, 1 warning (0.00 sec)

    mysql> flush privileges;

    Query OK, 0 rows affected (0.00 sec)

    mysql> exit

    上面红色部分,若是是localhost则修改的是只能供服务器本地使用的帐户,而'%'则是已设置好可远程链接、不限制访问ip的帐户

    上面蓝色部分,是帐户名

  2. 设置远程链接

    登录mysql数据库    

    mysql -u root -p

    查看user

    mysql> use mysql;
    Database changed

    设置远程链接

    mysql> grant all privileges  on *.* to root@'%' identified by "password";
    Query OK, 0 rows affected (0.00 sec)

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> select host,user from user;
    +-----------+---------------+

    | host | user |

    +-----------+---------------+

    | % | root |

    | localhost | mysql.session |

    | localhost | mysql.sys |

    | localhost | root |

    +-----------+---------------+

    4 rows in set (0.00 sec)

     

  3. 加入开机自启

    [root@guchen ~]# systemctl enable mysqld;

  4. 设置防火墙开启3306端口

    ##Centos7 防火墙打开端口号

    firewall-cmd --zone=public --add-port=3306/tcp --permanent

     

    #下面3行是参数说明

    #–zone                 #做用域

    #–add-port=80/tcp        #添加端口,格式为:端口/通信协议

    #–permanent             #永久生效,没有此参数重启后失效

     

    #重启防火墙后看看是否生效

    firewall-cmd --reload        #重启firewall

    firewall-cmd --zone=public --list-ports    #查看已经开放的端口

     

     

    #若是想永久中止防火墙,执行下面操做

    systemctl stop firewalld.service #中止firewall

    systemctl disable firewalld.service #禁止firewall开机启动

     

    #查看防火墙状态

    firewall-cmd --state        #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

     

    2、遇到过报错、问题

    一、初始化失败

    初始化失败,报错如下错误

    [root@guchen mysql]# mysqld --initialize --user=mysql

    2019-03-21T16:06:26.485888Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.

    2019-03-21T16:06:26.485956Z 0 [ERROR] Aborting

    是由于mysql数据库已经进行初始化了,因此不能用这种方式再进行初始化用户了,由于mysql在初始化的时候会自动建立一个root用户的。

    解决方法:

    在mysql的配置文件中找到数据库的目录:

    [mysqld]

    datadir=/var/lib/mysql

    socket=/var/lib/mysql/mysql.sock

    移动(备份)数据库文件

    首先要保证mysql处于中止状态,而后

    [root@guchen mysql]# cd /var/lib/

    [root@guchen lib]# mv mysql mysql_bak

    而后从新初始化便可

    [root@guchen mysql5.7]# mysqld --initialize --user=mysql

     

    二、服务启动失败

    结果报错

    Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

    解决方法:

    [root@guchen mysql5.7]# vim /etc/sysconfig/selinux

    将'SELINUX =enforcing'更改成'SELINUX =disabled'

    而后reboot重启linux

    若是selinux文件中原本就是'SELINUX =disabled',请使用以下命令,查看错误日志寻找其余解决方法

    [root@guchen ~]# vim /var/log/mysqld.log

    2019-03-21T14:58:32.879474Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

    解决方法:

    [root@guchen ~]# vim /etc/my.cnf

    在 vi /etc/my.cnf 文件中加上 : explicit_defaults_for_timestamp=true 。保存后再次启动就能够了

    log-error=/var/log/mysqld.log

    pid-file=/var/run/mysqld/mysqld.pid

    explicit_defaults_for_timestamp=true

相关文章
相关标签/搜索