"Host 'xxx' is not allowed to connect to this MySQL server":_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1717 | 回复: 0   主题: "Host 'xxx' is not allowed to connect to this MySQL server":        下一篇 
zgsy
注册用户
等级:新兵
经验:66
发帖:7
精华:0
注册:1970-1-1
状态:离线
发送短消息息给zgsy 加好友    发送短消息息给zgsy 发消息
发表于: IP:您无权察看 2014-11-13 9:56:00 | [全部帖] [楼主帖] 楼主

java.sql.SQLException:  null, message from server: "Host 'xxx' is not allowed to connect to this  MySQL server":


表示该对象不是远程对象,不能通过该对象远程访问数据

解决:

方案一:改表:

use  mysql ;select user,host,password from user;
update  user set host = '%' where user='root';


方案二:授权法:

例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED  BY 'mypassword' WITH GRANT OPTION;  如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'  IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

MySql连接错误:Cannot  get hostname for your address

简单解释

 MySQL server received a request from you to allow you  to connect to the database. So next thing it tried to do is to check what name  is bound to your IP address (name resolution) andit failed to do so. So  it just denied you access.


可以这么理解mysql处理客户端解析的过程: 1,当 mysql client 发起连接请求时,MySql Server 会主动去查 client  的主机名。 2,首先查找Windows系统目录下 /etc/hosts  文件,搜索域名和IP的对应关系。 3,如果hosts文件没有,则查找DNS设置,如果没有设置DNS服务器,会立刻返回失败;如果设置了DNS服务器,就进行反向解析,直到timeout

解决办法
第一种方法  修改Hosts
在  MySql Server 所在服务器上,修改 Windows 的 hosts 文件,增加一行记录,如:

100.ZZZ.YYY.XXX  dummy.ju690.cn


然后在  100.ZZZ.YYY.XXX 机器上用 Python 发起连接请求,经测试,可以正常连接,说明 MySql Server 这下可以通过  getnameinfo() 解析出100.ZZZ.YYY.XXX 的主机名了。

但这种方法很机械,所以一般采用下面这种方法。

第二种  修改MySql 的配置文件 my.ini

 The  solution: Just add skip-name-resolve option to your  MySQL configuration file (my.ini).


在  MySql Server 的配置文件 My.ini 中,增加如下两行:

[mysqld]
skip-name-resolve


它将禁止  MySql Server 对外部连接进行 DNS 解析,使用这一选项可以消除 MySql 进行 DNS 解析的时间。

但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论