3

我开发了一个应用程序来捕获数据、检索信息、删除和更新信息。该应用程序使用 java swing 和 hibernate 开发,并使用 MySQL 5.5 版作为数据库。我在本地服务器或本地主机上对其进行了测试,并且工作正常。所以现在我更进一步尝试访问远程服务器上的数据库。请注意,我在本地服务器上使用的 MySQL 版本也与远程服务器中的 MySQL 相同。

我收到以下错误:

Internal Exception: 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.
Error Code: 0
4

1 回答 1

1

问题是您的 MySqlConnector/Driver 无法建立与远程服务器的连接。

检查您的 jdbc URL 并检查是否使用了错误的端口。也许从外部无法访问 Mysql DB,而不是您可以使用 ssh 的端口转发,例如:

转发端口:

ssh -L3306:127.0.0.1:3306 user@remoteServer 

比将您的 jdbc url 更改为:

jdbc:mysql://localhost:3306/database

解释:-L port:host:hostport

指定将本地(客户端)主机上的给定端口转发到远程端的给定主机和端口。
...
每当与此端口建立连接时,都会通过安全通道转发连接,并从远程计算机建立与主机端口 hostport 的连接。

来源:http ://www.openbsd.org/cgi-bin/man.cgi?query=ssh&sektion=1

这意味着您使用本地 3306 端口上的 MySQL JDBC 驱动程序(jdbc url)请求将被转发到其本地 3306 端口上的远程服务器,Mysql 数据库在该端口上列出。

于 2013-04-12T10:24:28.773 回答