关于mysql初始化以及安全策略无法修改的问题

通过mysql官方的yum源来安装的mysql-community-server ,这里版本是MySQL 8.0。

wget 
rpm -ivh  mysql80-community-release-el7-1.noarch.rpm
yum install mysql-community-server
service mysqld start
 

第一次启动后会有个初始化的过程,会产生root账户的随机密码。

为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error_log中,关于error_log的位置,如果安装的是RPM包,则默认是 /var/log/mysqld.log 。

可以通过 grep 'temporary password' /var/log/mysqld.log 查找密码:

登陆上过后,进行正常操作会受限,提示你必须修改密码后才能进行操作。

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

根据提示修改密码:

mysql> SET PASSWORD = PASSWORD('123456'); 
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> SET PASSWORD = PASSWORD("root");
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
 

但是提示根据当前密码策略,设置的密码不允许。

查阅官方文档后发现有以下三种密码策略:

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 也就是 MEDIUM,但是当你使用:show VARIABLES like "%password%"; 来查看当前策略时,发现还是会让你先修改密码(这个比较坑)

接下来修改安全策略(跟进实际环境需要,生产环境简单密码可能不安全):

set global validate_password_policy = 0;

以上这条语句是所有人都这么用,好像没什么毛病,但是到我这儿就不好使啊/cry

 

比较郁闷

Google、百度了好久也没结果。咋整?

 

有了 , 管它呢,先改密码,设置一个包含大小写字母、数字和特殊符号的密码,OK,搞定,然后再来查看安全策略:

show VARIABLES like "%password%"; 

妮玛,怎么下划线变成“.”了???

 

好吧现在可以根据需要修改安全策略了:

set global validate_password.policy = 0;

validate_password_number_count指定了密码中数据的长度

validate_password_special_char_count指定了密码中特殊字符的长度

validate_password_mixed_case_count指定了密码中大小字母的长度

 

官方的一些说明:https://dev.mysql.com/doc/refman/8.0/en/validate-password.html

 

补充--->

关于各种MySQL GUI Client无法连接mysql server,且提示

Authentication plugin 'caching_sha2_password' cannot be loaded

这个问题是由于新版本mysql默认启用caching_sha2_password加密方式,而client无法支持,但是shell是可以连接的。

解决方法:

在/etc/my.cnf文件中添加一行代码,有可能这行代码是已存在,但是被注释掉了

[mysqld]
default_authentication_plugin=mysql_native_password

重启mysql server,再尝试连接,如果还是出现同样的问题,则需要删除用户重建,或者新建用户。

 

posted @ 2018-04-24 15:35 Evan_弘 阅读(...) 评论(...) 编辑 收藏