docker 容器运行mysql 登录时报错 1045 - Access denied for user root@127.0.0.1 (using password:yes)
用docker容器跑的mysql5.6一直好好的,今天用navicat链接突然报错:1045 - Access denied for user 'root'@'127.0.0.1' (using password:YES)看报错是没有root用户的登录权限。网上找了好多方法,大都是改配置的,都没解决。后来找到一篇可以的方法,亲测成功。第一步登录mysql,命令:mysql -h localhost
用docker容器跑的mysql5.6一直好好的,今天用navicat链接突然报错:1045 - Access denied for user 'root'@'127.0.0.1' (using password:YES)
看报错是没有root用户的登录权限。
首先查看挂载的volumn对应的mysql的配置文件目录是否为空。如果为空可能就把mysql的配置文件也同步为空了。mysql配置目录:/etc/mysql/conf.d,尤其注意查看 my.ini 配置文件是否少了。查看到少了配置文件需要恢复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;”,保存授权名单。
最后就可以成功登录了
更多推荐
所有评论(0)