问题原因

今天在操作自己云服务器MySQL数据库的时候发现使用root进行远程登录的时候被拒绝了,一直提示Access denied for user ‘root‘@‘localhost‘ (using password: YES)。

可以确认自己账号密码是没有错的。后来以为是远程访问出问题了,进入到容器内部,使用命令进行登录也报错。

 不明白是什么原因造成的。

解决办法

有映射配置文件的就直接在映射的配置文件中添加skip-grant-tables

skip-grant-tables

没有映射的话需要进入到MySQL的容器中,找到/etc/mysql/conf.d/my.cnf文件,在my.cnf中添加skip-grant-tables

 添加完成后需要重启一下MySQL容器

docker restart mysql

 接下来需要进入到容器内部,进行密码的修改,权限的修改。

docker exec -it mysql /bin/bash
mysql -uroot -p

输完mysql -uroot -p直接回车就能进入到MySQL的操作页面了。

进入到MySQL界面后,需要先刷新一下权限,不然可能会提示在skip-grant-tables模式下无法修改密码

flush privileges;

修改一下密码

update mysql.user set authentication_string=password('123456') where user='root' ;

刷新一下权限

flush privileges;

 然后再看一下root账号的访问权限是否可以远程访问,不能的话需要设置为可以远程访问,我的不知道为什么不能远程访问了

 设置root账号可以远程访问

update user set host='%' where user='root';

刷新一下权限

flush privileges;

查询一下root账号的host是否为%

select host,user from user;

root账号的密码以及权限都修改完成,最后删除MySQL配置文件中的skip-grant-tables,重启容器

docker restart mysql

重启完后,重新打开Navicat,点击数据库,完美打开。

 收工下班,吃饭。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐