最近因为工作交接,需要对mysql账号进行密码修改。
比如我之前有个账号:read_user
查询账号信息:
SELECT * FROM mysql.user WHERE USER = 'read_user';
结果如下:
需要关注Host、User两列。
Host如果是localhost,则只能在本机使用。
Host如果是%,则可以在任意位置使用。
因此我使用Host和User修改密码的语句如下:
set password for 'read_user'@'%' = password('test123');
结果竟然报错:
换个修改密码的语句:
update mysql.user set password=password('test123') where USER='read_user';
结果还是报错:
其实上面两个的原因是一样的,从报错信息可以看到,Mysql版本不支持password()这个函数,因为这个函数是Mysql8.0之前支持的, Mysql8.0不支持这样修改。
知道原因后,就只能找修改方式。
Mysql8.0账户修改密码的正确语句是(USER前面不要mysql.前缀):
ALTER USER 'read_user'@'%' IDENTIFIED BY 'test123';
最后一个就是密码。
执行之后会这样提示:
这样就修改成功了!