在自己的腾讯云服务器上使用docker安装了mysql后,在电脑上使用navicat连接数据库发现一直报错Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES) ,查了资料后知道是root账号没有其他ip连接的权限,只有localhost能连接,(说实话,很多资料都不知道到底是什么问题,说了一大堆,其实一点用都没有),mysql创建后,在数据库里面有一个mysql的库,mysql下有一张user表,就是这张表在控制数据库的连接查询权限,去修改这张表的账号的权限,然后刷新权限就行了!记得一定要刷新权限!
首先你先在服务器上使用root通过localhost登录上去,就是使用命令行登录,因为root最开始是只有localhost权限,所以只能本地能登录上,登录上去后,切换到mysql库,查询user表
上图所示,root只有localhost能登录上去,使用update语句将root的host字段修改为%,%就是代表所有的ip都能连接
update user set host = '%' where user= 'root';
修改后一定要刷新权限 ----> flush privileges;
然后使用navicat连接,显示成功
下面展示一下使用navicat连接后,查看user表
这张表后面的都是查询权限,具体的大家自行了解。连接不上就是因为host是localhost,只能本地连接,你的电脑远程连接不行,改为%表示所有的ip都能连接