centos6.7 mysql5.7安装以及配置远程访问出现的问题解决

一、安装

#检测系统是否自带安装mysql
yum list installed | grep mysql


#一般情况下centos系统都会自带一个MySQL,所以需要删除系统自带的mysql及其依赖
yum -y remove mysql-libs.x86_64

#下载MySQL官方的rpm文件
wget https://repo.mysql.com//mysql57-community-release-el6-11.noarch.rpm

#安装mysql的yum源
rpm -Uvh mysql57-community-release-el6-11.noarch.rpm
或
yum -y localinstall mysql57-community-release-el6-11.noarch.rpm

#安装mysql
yum -y install mysql-community-server


#开启mysql服务
service mysqld start

#Mysql安装成功之后,会自动创建root的密码,存储在/var/log/mysqld.log
#如果不想使用这个密码的话可以直接选择忘记密码,编辑/etc/my.cnf文件,在[mysqld]下添加skip-grant-tables。 然后直接输入mysql就可以登陆了


#开启远程链接,iptables开放3306端口

vim /etc/sysconfig/iptables

重启防火墙使iptables生效

二、使用

由于加强安全性,MySQL5.7为root用户随机生成了一个密码用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#设置MySQLroot密码
mysql> use mysql;
mysql> update mysql.user set authentication_string=password('你填写的密码') where user='root';

#刷新MySQL权限:
mysql> flush privileges;

如果只是修改为一个简单的密码,又会报以下错误:(是不是很烦。。。)

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这个其实与validate_password_policy的值有关。

validate_password_policy有以下取值:

Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file

因为我只是搭建本地测试环境,所以不想设置太过复杂的密码。

解决办法:

1、查看 mysql 初始的密码策略,
输入语句 “ SHOW VARIABLES LIKE 'validate_password%'; ” 进行查看,
如下图:(我这个是已经修改过的

2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值,或者set global validate_password_policy=0;

set global validate_password_policy=0;
或
set global validate_password_policy=LOW;

3、当前密码长度为 8 ,我已经觉得没那么麻烦了,如果想设置更短的,比如设置为 4 位的密码,设置 validate_password_length 的全局参数为 4 即可,” 然后设置密码

set global validate_password_length=4;

如下图:

然后设置简单密码就可以设置成功了。

三、配置远程访问

正常流程

mysql> use mysql;
mysql> grant all privileges on 想授权的数据库.* to 'username'@'%';
mysql> FLUSH PRIVILEGES;

此时又出现问题了-.-

怎么肥事,我明明已经修改了安全策略啊

查看一下

没有任何问题,然后又修改了一遍,还是不行,就开始查找答案,结果让人哭笑不得

看到一个博客上提到5.7不支持配置root远程访问

那好吧,我重新创建了一个账号,暂且起名admin吧

'%' - 所有情况都能访问
‘localhost’ - 本机才能访问
'xxx.xxx.xxx.xxx' - 指定 ip 才能访问

CREATE USER 'username'@'%' IDENTIFIED BY 'password'; 

#给该用户授权
#赋值权限为all,all 可以替换为 select,delete,update,create,drop
grant all privileges on 想授权的数据库.* to 'username'@'%';


flush privileges;

然后远程访问测试,成功连接。