环境

使用的`docker`安装`MySQL`,版本`8.0.12`

操作

  • 首先进入dockerMySQL容器:

使用命令docker exec -it mysql /bin/bash

  • 进入容器之后,登录到MySQL里面:
1
2
>root@1f88cc6f4013:/# mysql -u root -p
>Enter password:
  • 输入密码之后,可以查询下目前的用户密码:
1
mysql> select host,user,authentication_string from mysql.user;

image.png

host: 允许用户登录的ip‘位置’%表示可以远程;
user:当前数据库的用户名;
authentication_string: 用户密码(后面有提到此字段);

重点

  1. 如果当前root用户authentication_string字段下有内容,先将其设置为空,否则直接进行二步骤
1
2
>use mysql;
>update user set authentication_string='' where user='root';
  1. 使用ALTER修改root用户密码,方法为 ALTER user ‘root‘@’localhost’ IDENTIFIED BY ‘新密码’:
1
2
>ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
>ALTER user 'root'@'%' IDENTIFIED BY '123456'

修改成功,退出重启容器,重新连接就可以了

PSMySQL8.0以后使用的秘钥插件是caching_sha2_password,以前使用的都是mysql_native_password,所以有可能出现Navicat链接失败的错误,可以使用如下命令:

1
2
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;