Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 382|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    9 小时前
  • 签到天数: 793 天

    [LV.10]以坛为家III

    2049

    主题

    2107

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    723458
    发表于 2021-5-7 23:48:15 | 显示全部楼层 |阅读模式

    由于公司的系统在内网下,没有互联网,所以需要离线安装MySQL,经过两天摸索,终于安装成功。把安装过程以及遇到的报错问题和解决方案整理了一下,方便日后使用,也希望能给大家提供点帮助。

     

    安装环境:CentOS7

    安装版本:MySQL5.7

    一、安装过程

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

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

    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 --nodeps

    1. 下载安装包

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

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

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

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

    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)

       

      二、遇到过报错、问题

      1、初始化失败

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

      [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

       

      2、服务启动失败

      结果报错

      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

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-9-18 23:38 , Processed in 0.059476 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表