MySQL修改数据库密码
目录
背景描述
远程(非服务器操作)修改服务器的数据库密码为强密码
操作环境
- MySQL :8.0.26
具体步骤
-
ssh登录
ssh root@192.168.100.148
-
登录数据库
mysql -uroot -p
-
查看用户表
select user, host from mysql.user;
输入MySQL指令时别忘了最后的分号。
注意
user
对应的host
,尽量不要%
和localhost
混写,可能会导致错误。
以下假设我们要修改root的密码。 -
查看密码规则
show variables like "validate_password%";
其中的
validate_password.length
限制了密码的最短长度,validate_password.policy
限制了密码的强度(例如是否必须是字母数字和符号的混合)。若想改为弱密码(比如123456),一般需要修改这两个变量。 -
修改密码
alter user 'root'@'%' identified by '123456';
异常处理
your password does not satisfy the current policy requirements
- 错误现象
-
错误原因
密码的强度不符合现有的密码规则,一般在修改密码为弱密码时出现。
-
解决方法
# 允许弱密码 set global validate_password.policy = 0; # 密码最短长度为1 set global validate_password.length = 1;
-
重新设置
Operation ALTER USER failed for ‘root’@‘localhost’
- 错误现象
-
错误原因
在
mysql.user
表中没有这一条目,使用以下命令查看用户表select user, host from mysql.user;
可以看到
root
对应的host
为%
-
解决方法
修改命令中的
localhost
为%
;alter user 'root'@'%' identified by '123456';
Unknown system variable …
-
错误原因
输入命令中的变量名称不正确,例如
validate_password.policy
很容易就错误写为validate_password_policy
-
解决办法
仔细检查是否存在变量名字输入错误,尤其是存在
_
和.
混用的变量名称。
其他
-
alter命令中的符号
其他文章中有说alter命令报错可能是符号
'
引起的,建议改为以下指令。但本人未遇到该现象,持保留意见。# 可能出错的指令 alter user 'root'@'%' identified by '123456'; # 将'root'@'%'改为`root`@`%` alter user `root`@`%` identified by '123456';