1、设置mysql为无密码启动
Access denied for user 'root'@'localhost' (using password: YES)
修改MySQL的登录设置:vim /etc/my.cnf
(部分Linux没有安装了vim,其命令则改为vi /etc/my.cnf
)
在[mysqld]的段中加上一句:skip-grant-tables
保存并退出vi。
进入选择页面,编辑模式。
输入完了以后,按下Esc,再输入: 接着输入wq 回车 ,结束。
这样我们就可以免密进入mysql
2.重新启动mysqld,清空密码
重启mysql:service mysqld restart
(这一步不能少,这是让my.cnf的修改生效)
进入mysql:mysql -u root
直接回车不用输密码
进入use中修改密码
use mysql;
修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
修改无效报错:
密码策略问题异常信息:
Your password does not satisfy the current policy requirements
解决办法:
查看 mysql 初始的密码策略,
输入语句 “ SHOW VARIABLES LIKE ‘validate_password%’; ” 进行查看,
修改策略:执行命令
set global validate_password.policy=0;
set global validate_password.length=1;
再次修改密码
如果报:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
则刷新权限表:flush privileges;
如果还报:ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
则看看用户 host是什么:这边是localhost: 所以改成:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
如果以上都不会出现,那么就会直接修改成功,如下图:
密码修改完毕后要记得把etc/my.cnf
中的配置改回来
为了避免忘记直接在原来的配置文件加上#即可
重启:
service mysqld restart;
让配置生效
重新登录:
3、开启远程连接:
开启远程连接
GRANT ALL ON . TO 'root'@'%';
刷新权限
flush privileges;
firewall-cmd --zone=public --add-port=3306/tcp --permanent 开放端口
firewall-cmd --reload 重启防火墙
firewall-cmd --list-ports 查看开放端口
关于 mysql 密码策略相关参数;
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 整个密码中至少要包含特殊字符的个数;