docker 容器运行mysql 登录时报错 1045 - Access denied for user [email protected] (using password:yes)

用docker容器跑的mysql5.6一直好好的,今天用navicat链接突然报错:1045 - Access denied for user 'root'@'127.0.0.1' (using password:YES)

docker 容器运行mysql 登录时报错 1045 - Access denied for user root@127.0.0.1 (using password:yes)_第1张图片

看报错是没有root用户的登录权限。 

          首先查看挂载的volumn对应的mysql的配置文件目录是否为空。如果为空可能就把mysql的配置文件也同步为空了。mysql配置目录:/etc/mysql/conf.d。查看到为空了需要恢复mysql的配置文件,或者干脆重新run一个容器,注意volumn到mysql的配置文件不要为空。

如果配置文件是正确的。就往下看root用户登录ip的限制是否正确:

第一步

登录mysql,命令:mysql -h localhost -u root -p

然后输入密码

登录成功。

第二步

使用mysql数据库

mysql> use mysql;

输入sql:

mysql> select host, user from user;

显示:

mysql> select host, user from user;
+--------------+--------+
| host         | user   |
+--------------+--------+
| %            | admina |
| %            | mysqld |
| %            | server |
| 118.25.53.252| root   |
+--------------+--------+
4 rows in set (0.00 sec)

这里显示的是哪些ip拥有user的登录权限。上面root的登录权限限定了只有一个ip能登录,需要添加更多的ip登录。

第三步

这里用关键的一条sql加上,我这里是测试环境为了方便,就把host写为%代表所有ip皆可用root用户登录,若是生产环境注意把host写成限制的ip地址,youpassword代表root用户的登录密码

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

再用刚才的select host, user from user;查看显然多了一条:

mysql> select host, user from user;
+--------------+--------+
| host         | user   |
+--------------+--------+
| %            | admina |
| %            | mysqld |
| %            | server |
| %            | root   |
| 118.25.53.252| root   |
+--------------+--------+
5 rows in set (0.00 sec)

第四步

使用命令“flush privileges;”,保存授权名单。

最后就可以成功登录了

你可能感兴趣的:(错误解决,mysql)