先看问题如下

(密码不符合规范)alter user root identified by "123456";
alter user 'root'@'localhost' identified by '123456';
set password for (在之后的版本就没有这种执行方式了)'root'@'localhost'= password('123456');
set password for root = '123456';
服务器上MySQL默认没有密码的,需要重置密码才可以进行其他操作。可以看到使用alter和set都是一样的提示。然后执行修改用户密码 看到错误提示变成了密码不符合规范。(合规密码:Root123root)

通过查询发现MySQL默认的密码规则有四种(validate_password.policy):
validate_password.policy:密码策略,默认值为MEDIUM。可以设置为LOW、MEDIUM、STRONG或者自定义。例如,可以将其设置为LOW以降低密码复杂性要求。
SET GLOBAL validate_password_policy = LOW;
LOW:只验证长度;MEDIUM:验证长度、数字、大小写、特殊字符;默认值。STRONG:验证长度、数字、大小写、特殊字符、字典文件;

通过执行下面这行命令可以看到MySQL的密码策略
SHOW VARIABLES LIKE 'validate_password%';
validate_password.length:密码最小长度,默认值为8。可以根据需要修改最小密码长度。
SET GLOBAL validate_password_length = 6;
validate_password.number_count:密码中的数字要求,默认值为1。可以增加或减少数字的要求。
SET GLOBAL validate_password.number_count = 1;
validate_password.special_char_count:密码中特殊字符的要求,默认值为1。可以增加或减少特殊字符的要求。
SET GLOBAL validate_password_special_char_count = 1;
validate_password.mixed_case_count:密码中大写字母和小写字母的要求,默认值为1。可以增加或减少大写字母和小写字母的要求。
SET GLOBAL validate_password_mixed_case_count = 1;
还有一种通过修改配置文件,打开MySQL的配置文件,添加下面的内容到文件中(8.0之后版本为validate_password.xxx 而5.7之后的为validate_password_xxx):
validate_password.policy=LOW
validate_password.length=6
validate_password.number_count=1
validate_password.special_char_count=1
validate_password.mixed_case_count=1
修改完配置文件记得重启一下MySQL服务器
完整流程

这样就成功设置密码了。
ok 第一次是在服务器上遇到,服务器的版本是5.7。这一次在本地也遇到了

同样用前面的方法这次行不通了,原因是本地没有自动安装这个validate_password 插件
直接执行下面这条语句修改密码
ALTER USER root identified by "123456";
这行代码是不行的 alter user ‘root’@’localhost’ identified by ‘123456’;
修改密码后查询发现 是插件没有的原因
本地环境8.0.30 安装 validate_password INSTALL COMPONENT 'file://component_validate_password';

OK 这下应该没问题了,现在来看也许第一步就可以执行修改密码语句就改成功了。
复杂密码(Root123root)
ALTER USER root identified by "123456";