Navicat连接MySql报错
错误: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协议使用的端口)是默认打开的。