为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是 /var/log/mysqld.log 。
一般可通过 log_error 设置
可通过 # grep "password" /var/log/mysqld.log 命令获取MySQL的临时密码
其中 waQ,qR%be2(5 就是密码了
用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:
如果只是修改为一个简单的密码,会报以下错误:
这个其实与validate_password_policy的值有关。
validate_password_policy有以下取值:
有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。
必须修改两个全局参数:
首先,修改 validate_password_policy 参数的值
这样,判断密码的标准就基于密码的长度了。这个由 validate_password_length 参数来决定。
validate_password_length 参数默认为8,它有最小值的限制,最小值为:
这些参数,默认值均为1,所以 validate_password_length 最小值为4,如果你显性指定 validate_password_length 的值小于4,尽管不会报错,但 validate_password_length 的值将设为4。如下所示:
如果修改了 validate_password_number_count , validate_password_special_char_count , validate_password_mixed_case_count 中任何一个值,则 validate_password_length 将进行动态修改。
当然,前提是 validate_password 插件必须已经安装,MySQL5.7是默认安装的。
那么如何验证 validate_password 插件是否安装呢?可通过查看以下参数,如果没有安装,则输出将为空。
这是 mysql 初始化时,使用临时密码,修改自定义密码时,由于自定义密码比较简单,就出现了不符合密码策略的问题。执行 SELECT PASSWORD ()
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
1、查看 mysql 初始的密码策略,
输入语句 “ SHOW VARIABLES LIKE ‘validate_password%’” 进行查看,
2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “ set global validate_password_policy=LOW” 进行设值,
3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
输入设值语句 “ set global validate_password_length=6” 进行设值,
4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,
输入修改语句 “ ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’” 可以看到修改成功,表示密码策略修改成功了!!!
注:在默认密码的长度最小值为 4 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个,
只要设置密码的长度小于 3 ,都将自动设值为 4 ,
1)、validate_password_length 固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;
1、打开mysql.exe和mysqld.exe所在的文件夹,复制路径地址
2、打开 cmd 命令提示符, 转到上一步中 mysql. exe 所在的文件夹。
3、输入命令 mysqld --skip-grant-tables 回车,此时就跳过了mysql的用户验证。注意: 输入此命令后, 无法 *** 作命令行, 您可以在此时打开一个新的命令行。注意: 在输入此命令之前, 请在任务管理器中结束 mysqld. exe 进程, 以确保 MySQL 服务器端已完成运行
4、更改root密码,输入update user set password=password('123456') where user='root' and host='localhost'
5、再次查看账户信息,select user,host,password from user 可以看到密码已被修改。
6、退出命令行, 重新启动 MySQL 数据库, 然后尝试使用新密码登录。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)