前段时间在闲置的电脑上装了centos7,打算先装个MySQL试试。在此记录一下。
一、添加yum源
MySQL官网:https://dev.mysql.com/downloads/repo/yum/
进入官网去选择合适的rpm包,包的作用是添加MySQL yum源,我在这里下载的是 mysql80-community-release-el7-3.noarch.rpm。下载之后通过XFTP上传文件到服务器,然后在rpm文件目录下执行yum localinstall 命令:
1 | yum localinstall mysql80-community-release-el7-3.noarch.rpm |
如果权限不够请使用sudo执行,执行完毕过后我们可以使用 cd /etc/yum.repos.d进入到目录中查看文件,发现会有如下两个文件:
- mysql-community.repo
- mysql-community-source.repo
二、安装
当我们添加好yum源之后就可以执行安装命令:
1 | yum install mysql-community-server |
三、启动
安装完成之后使用 systemctl start 执行启动MySQL命令:
1 | systemctl start mysqld.service |
使用 systemctl status mysqld.service 可以查看MySQL的运行状态。
关闭命令:
1 | systemctl stop mysqld.service |
重启命令:
1 | systemctl restart mysqld.service |
四、修改密码
当MySQL服务启动之后我们就需要对密码进行更改:MySQL 默认创建了 root 用户的密码,这个密码打印在 MySQL 的日志文件/var/log/mysqld.log
中,可以通过temporary password
关键字来找出这个临时的密码。
1 | grep 'temporary password' /var/log/mysqld.log |
找到密码之后使用改密码连接数据库:
1 | mysql -u root -p |
然后修改密码:
1 | ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'; |
执行上述命令密码将被修改为:NewPassword
PS:新版本的MySQL对密码强度有限制,执行到上一步的时候,会提示密码强度不够,则应更改为更高强度的密码。
密码更改完成之后重启MySQL服务:
1 | systemctl restart mysqld.service |
五、开放远程连接
MySQL默认只对本机开放连接,我们则需要对mysql表的host字段进行修改以支持其他主机连接,%表示所有。
1 | # 先连接数据库 |
更改完成之后刷新权限:
1 | flush privileges; |
然后在navicat新建连接:
问题解决步骤:
发现是防火墙未关闭,有两种方法去解决。
- 关闭防火墙
- 设置防火墙开放端口
第一种方法:
1 | //停止 |
第二种方法:
1 | //这里发现防火墙是开启的,再来查看防火墙控制的端口 |
我使用了第一种
再次实验,成功
注:在用正版navicat连接MySQL8+时没问题,但使用破解版会出现2059错误,这是由于新版本的MySQL使用的是caching_sha2_password验证方式,但此时的navicat还没有支持这种验证方式。解决方法就是将验证方式改为以前版本(5.7及以下)使用的验证方式mysql_native_password。
后续:
2019.09.12
后期在安装mysql5.7时遇到了不少大坑,在此记录一下。
1、安装mysql5.7
CentOS 7之后的版本yum的默认源中使用MariaDB替代原先MySQL,因此安装方式较为以往有一些改变:
下载mysql的源
1 | wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm |
安装yum库
1 | yum localinstall -y mysql57-community-release-el7-7.noarch.rpm |
安装MySQL
1 | yum install -y mysql-community-server |
启动MySQL服务
1 | systemctl start mysqld.service |
2、修改MySQL的root密码
MySQL5.7加强了root用户的安全性,因此在第一次安装后会初始化一个随机密码,以下为查看初始随机密码的方式
1 | grep 'temporary password' /var/log/mysqld.log |
进入mysql
1 | mysql -uroot -p |
完成之后进入,首先修改密码策略,然后修改密码
1 | set global validate_password.policy=0; // 有时为validate_password_policy |
然后退出后即可用新密码登录。
3、远程连接授权
1 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; |
授权之后,用nevicat检查一下是否可以连接,如果不可以,可能是防火墙限制了。需要在防火墙里面加开放数据库端口的规则。
4、防火墙开放数据库端口(默认3306,可以在/etc/my.cnf中修改)
【1】查看目前防火墙
1 | firewall-cmd --list-all // 若提示firewallD is not running,systemctl start firewalld开启 |
【2】开放3306端口
1 | firewall-cmd --permanent --add-port=3306/tcp |
【3】重启防火墙
1 | service firewalld restart |
【4】查看3306端口是否开放
1 | firewall-cmd --query-port=3306/tcp |
【5】再次查看现在防火墙
1 | firewall-cmd --list-all |
【6】再次测试是否可以远程连接,成功。
5、设置开机自启
1 | systemctl enable mysqld |
注:转载文章请注明出处,谢谢~