Navicat连接MySql报错

2018-08-15  本文已影响0人  悠然望剑

错误:1130 - Host 'xxxx' is not allowed to connect to this MySQL server

原因:本地IP(xxx)没有访问远程数据库的权限。

解决办法:

1、登录服务器MySQL命令行客户端:

mysql -u root -p

2、输入

user mysql;

select user,host from user;

可以看到host中只有localhost主机。我们需要将本地IP也添加到这里。

3、输入

grant all privileges on *.* to root@"xxx.xxx.xxx.xxx" identified by "密码";

或者直接赋予所有IP远程访问权限

grant all privileges on *.* to root@"%" identified by "密码";

然后输入

flush privileges;

这相当于重新加载mysql权限,这一步必须有。

现在使用Navicat远程连接试一试,应该可以正常打开了。

4、如果还是连接不到,就可能是mysql server绑定了本地地址

打开/etc/mysql/mysql.conf.d/mysqld.cnf,

找到:bind-address = 127.0.0.1

去除IP地址绑定,把它改为:bind-address = 0.0.0.0

然后重启mysql

service mysql restart

5、如果Mysql是在阿里云的云服务上,那么在完成以上步骤后,本地使用Navicat连接远程mysql可能仍然包10038错误,这是因为阿里云服务器的远程3306端口默认是关闭的,需要登录阿里云服务器,在安全组中添加一条配置规则,打开3306端口,就可以正常连接了


如果嫌以上步骤太麻烦,连接mysql有一个快捷方法。在Navicat连接属性中选择SSH选项,勾选使用SSH通道,然后输入服务器IP,用户名和密码,然后范围常规选项,主机名或IP地址输入localhost(或者127.0.0.1),用户名和密码输入服务器mysql的用户和密码即可。

其原理是,先通过SSH登录到服务器,然后以本地IP访问Mysql,所以不需要更改Mysql的默认设置,而且阿里云服务器的22端口(SSH协议使用的端口)是默认打开的。

上一篇下一篇

猜你喜欢

热点阅读