安装了一个docker mysql,里面是mysql8版本,要远程链接docker的数据库,先修改密码,我选择修改root密码(全文用123456),拿到最高权限....
按网上很多直接执行这个可以修改:
update user set authentication_string= PASSWORD("123456") where `user` = "root";
自己操作实际上会报错:
EXPLAIN update user set authentication_string= PASSWORD("123456") where `user` = "root"
> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("123456") where `user` = "root"' at line 1
解决方式:
1.先设置密码为空(先进入mysql,跳过密码过程略过(最后有说明在哪里加),下面是修改密码过程)
update user set authentication_string=’’ where user=‘root’;
2.刷新授权
flush privileges;
3.设置root密码(123456改成你自己的密码)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
4.再次刷新授权
flush privileges;
如果设置过跳过密码请求删除添加的跳过,现在可以用密码登录了。
在my.cnf(/etc/my.cnf根据自己系统查找,如果是mysql docker,可以修改/etc/mysql/conf.d/docker.cnf这个文件)
#跳过密码验证(设置密码后去掉)
skip-grant-tables