netbeans 连接 mysql数据库com.mysql.jdbc.CommunicationsException: Communications link failure解决办法 » 荒野无灯weblog

Keep It Simple, Stupid.

荒野无灯weblog

netbeans 连接 mysql数据库com.mysql.jdbc.CommunicationsException: Communications link failure解决办法

这个异常一般发生在linux下。
今天我在nb里面连接Mysql数据库时发生此错误了:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

google了下,貌似很多问这个问题的解决办法的。在一个论坛里面找到解决办法
一个名为pstiady的童鞋说:

I have solved the problem.

I edited the file:
$ sudo vi /etc/mysql/hosts.allow

And add a line:
mysqld : 127.0.0.1 : allow

And that’s done the trick

看到它的话,我立马想到了一个东西:tcp wrapper ,tcp_wrapper 就是tcp封装,是运行在介于防火墙和内部服务间的一个模块
只要支持tcp封装的服务,我们都可以使用tcp封装来控制他。
验证下mysqld是不是支持tcp封装:

ldd `which mysqld` | grep libwrap
 strings `which mysqld` | grep gethostname

果然是支持的。
于是

sudo vim /etc/hosts.allow

添加一行:

mysqld:127.0.0.1

OK,连接成功。
之所以会这样是因为mysqld本身是支持tcp wrapper的,然后,linux默认的/etc/hosts.deny文件中有这么一行:
ALL: ALL.因此,如果不修改hosts.allow文件的话,netbeans用java版的mysql connector连接mysql数据库时,很杯具地被tcp wrapper给阻挡在墙外了。。。

Tagged in : MySQL,NetBeans,jdbc,tcp wrapper

All Comments (0)
Gravatar image
No Comments