解决mysql远程连接失败的问题

问题描述

在我远程连接我的服务器数据库的时候,navicat给我提示了这么一个错误:

ERROR1130: Host'xxx'is not allowed to connect to thisMySQL server.

思考解决

首先

鉴于前两天我刚帮别人解决了这个一模一样的问题,都是错误代码1130,当时解决的方向是:(不过本方法对我而言并没有生效)

  • 先考虑端口是否开放:在客户端telnet xxx 3306,发现无法telnet进去,说明:①端口可能没开;②被防火墙把端口给限制了;

  • 再考虑端口是否开启问题:远程连接到服务器端,netstat -ltp .发现端口也开着呢呀,服务正在运行。随后重启了一下,在客户端试了还是不行;

  • 那么就试试防火墙吧:关闭防火墙,systemctl stop firewalld

  • 最后端口就可以使用了。

  • 这里要说一下:

# ubuntu服务器
命令:service ufw start/stop/status

# centos服务器
命令1:service iptables start/stop/status  # centos6.x
命令2:systemctl start/stop/status firewalld  # centos7.x,centos7不用iptables了,改用firewall了

其次

是否可能是mysql的配置中bind-address的问题呢,于是我去找到mysqld.cnf文件,查看[mysqld]下的这个配置,结果也没问题,因为其默认配置的就是0.0.0.0。不过这个问题有时候也是要考虑到的。

最后

那么就重新思索和查找解决问题的方案。就是下面这种:

(1):登录服务器端mysql数据库:

  • mysql -u root -p

  • use mysql;

(2):更新root用户的主机权限:

  • update user set host = ‘%’ where user = ‘root’;

  • 然后我们看一下修改后的root主机权限:select host, user from user;
    image
    可以看到root的主机权限已经变成通配符%,任意主机都可以登录了。

(3):使修改权限生效:

  • flush privileges;

  • 完成以上配置后,再去检测链接,就提示成功了。

image
恢复正常访问了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值