当前位置:C++技术网 > 资讯 > mysql_errno获取的错误码1130的解决办法

mysql_errno获取的错误码1130的解决办法

更新时间:2017-01-19 15:14:43浏览次数:1+次

    使用mysql_real_connect连接数据库时,发现总是失败。然后就用mysql_errno来获取一下错误码。当然你也可以直接调用mysql_error()来显示错误信息。我们获取到的错误码是1130,获取的错误描述是ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server。
    这个错误提示很明确说IP为xxx.xxx.xxx.xxx的主机不允许连接到mysql服务器。显然是连接被拒绝了。连接被拒绝一般就是服务器拒绝客户端,不是客户端这边的问题。所以我们要去服务器那端去设置。
    我们的服务器配置的账号主机名是localhost或者127.0.0.1,那么表示这些账号只能从服务器本地登录连接,如果我们的程序从远程通过服务器公网IP连接或者直接使用公网IP连接,肯定是会被拒绝的。
    如果你的程序就运行在这个服务器上,但是使用公网IP连接,也算是远程连接。如果是这样,解决问题办法很简单,我们只要将程序中连接数据库的IP改为localhost或者127.0.0.1,当然对应的账号密码要正确。这样就可以解决了。
    如果你的程序在服务器以外的地方,那么我们的程序就必须使用远程连接,也就是使用mysql数据库公网IP连接。这种方式是被拒绝的。拒绝的原因也是为了服务器安全。如果我们的数据库只是服务器上的程序使用,那么就不要将数据库暴露给外网,否则很容易被黑客攻击。亲身体验过了,注入了很多病毒,服务器沦为了病毒中转站。可以阅读《第一次遇见服务器被黑客攻击,心情是复杂的》了解详情。
    如果数据库只是内部使用,你想临时操作下数据库,那么在操作完后,请立即改为只能本地访问MySQL。下面介绍一下如何解决1130禁止远程客户端连接mysql数据库服务器。
1.改主机名

    如果你对mysql命令不熟,没有关系,使用Navicat(点此下载)软件连接mysql。当然不是直接连接,这样直接连接照样是1130错误。我们使用SSH方式来连接,也就是先登录linux服务器,然后再直接访问数据库。SSH连接方式截图如下:

mysql_errno获取的错误码1130的解决办法

    连接进去之后,就可以如下图所示:

mysql_errno获取的错误码1130的解决办法mysql_errno获取的错误码1130的解决办法

mysql_errno获取的错误码1130的解决办法

    修改之后,保存。这样就可以远程访问了。记得,永远记得改回来,以免被黑客攻击。你能远程访问,黑客也就能够远程访问了。
    如果你喜欢命令方式修改,可以执行下面几个命令即可:
mysql_errno获取的错误码1130的解决办法

2.授权用户名登录
   授权的方法就不在此介绍了。一方面是我自己对此没有研究清楚,另一方面网上很多授权讲解都是全部权限,很危险。等我研究清楚了,再总结分享。你可以自己先找资料学习下。