admin管理员组

文章数量:1794759

Navicat 远程连接数据库 ERROR 1698 : Access denied for user ‘root‘@‘localhost‘ 问题解决

Navicat 远程连接数据库 ERROR 1698 : Access denied for user ‘root‘@‘localhost‘ 问题解决

查看是否有远程ip登陆授权 use mysql; select user,host from user;

这里我把host设置成了’%'来匹配任意ip,如果此时为localhost或者其他ip,则说明限制了ip登录,没有远程ip登陆授权。 通过命令

UPDATE user SET host = '%' WHERE user = 'root' AND host = 'localhost'; GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; flush privileges;

来进行设置,使其拥有通过远程ip登录的权限。

查看plugin设置

参考链接: stackoverflow/questions/39281594/ERROR-1698-28000-Access-denied-for-user-rootlocalhost. 在ubuntu里,mysql会设置root的plugin为auth_socket,表明它会被当前系统用户证书(system user credentials)所加密验证,显然使用远程ip连接数据库是无法通过这个验证的。 于是可以通过查看其他普通用户的plugin设置(不同版本的mysql plugin设置可能不同),并将root的plugin更改为与其一致即可。 即使用命令(当前版本mysql-8 不同用户plugin为caching_sha2_password)

USE mysql; UPDATE user SET plugin='caching_sha2_password' WHERE user ='root'; flush privileges; exit; sudo service mysql restart;

随后即可成功连接远程数据库 当然,这种方式显然不是安全的,对于我这样的懒人是足够了,比较推荐的方式可以查看一下参考连接QAQ。

本文标签: 连接数据库errorNavicatAccessroot