由于公司的系统在内网下,没有互联网,所以需要离线安装MySQL,经过两天摸索,终于安装成功。把安装过程以及遇到的报错问题和解决方案整理了一下,方便日后使用,也希望能给大家提供点帮助。
安装环境:CentOS7
安装版本:MySQL5.7
一、安装过程
-
卸载系统自带的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 |
-
下载安装包
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 |
-
进行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 |
安装成功
-
数据库初始化
[root@guchen mysql5.7]# mysqld --initialize --user=mysql |
数据库初始化有时候反应会比较慢,请耐心等待。初始化成功后会生成一个随机密码
使用以下命令查看生成的密码
[root@guchen mysql5.7]# grep 'temporary password' /var/log/mysqld.log |
-
启动数据库服务
[root@guchen mysql5.7]# systemctl start mysqld.service |
-
修改密码
使用以下命令查看之前生成的密码
[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> 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的账户 上面蓝色部分,是账户名
-
设置远程连接
登陆mysql数据库
查看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) |
-
加入开机自启
[root@guchen ~]# systemctl enable mysqld; |
-
设置防火墙开启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 |
|