【问题标题】:Connect to the MySQL server from another PC (from java application)从另一台 PC 连接到 MySQL 服务器(来自 java 应用程序)
【发布时间】:2015-11-16 10:46:58
【问题描述】:

我实现了一个连接 MySQL 的 java 应用程序。

当我在同一本地网络中另一台电脑的导航器中创建我的电脑的 IP 地址时,我可以访问 phpMyadmin 和 Wamp。

当我在同一台电脑上创建 127.0.0.1(Wamp 安装)时,我从我的 java 应用程序连接到 127.0.0.1 并且它可以工作。

但是当我从我的电脑或同一本地网络中的另一台电脑将我的 ip 地址放入我的 java 应用程序时,我无法连接。

这是我在 java 应用程序中的配置文件:

db.user=root
db.password=
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://192.168.1.59:3306/testfournisseur

有什么操作要做吗?

这是我连接数据库时出现的错误:

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:   Communications link failure

Last packet sent to the server was 1 ms ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:666)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1069)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2031)
... 72 more
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2431)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:590)
... 74 more

【问题讨论】:

  • 我怀疑你的 mysql 是否在 80 端口上运行。检查一下。
  • 引用您的路由器可能有 NAT 并且您需要设置端口转发。
  • 我使用了 3306 端口,但它不起作用,但我不明白您所说的引用可能是您的路由器有 NAT 是什么意思?
  • 错字,引用可能 = 很可能。 “路由器 NAT”是你可以用谷歌搜索的东西。
  • 既然你提到这都是在同一个网络上,我怀疑 NAT 是问题所在。如果您尝试从不同的 LAN 网段或从 WAN 连接到 LAN,这是有道理的,但根据我们被告知的情况,我持怀疑态度。

标签: java mysql wamp


【解决方案1】:

我不熟悉 Windows 上的 MySQL,但我看到的无法连接的最常见原因是 my.cnf 中的 bind-address 设置为 127.0.0.1,如果您将其更改为 0.0.0.0 或其他可访问的地址,那么它应该可以正常工作。

我还注意到您在属性示例中指定了端口 80,MySQL 默认在 3306 上运行,因此将端口更改为该端口(或省略它)可能会起作用。

编辑:Windows 的内置防火墙可能会阻止连接,因此绝对值得一试。

【讨论】:

  • 是的,我使用了 3306 端口,但它不起作用,但我在哪里可以找到文件 my.cnf?
  • @user2222 鉴于我不熟悉 WAMP,我将不得不在黑暗中尝试一下,所以我猜 C:\Program Files\WAMP\mysql。现在想起来可能在 Windows 上叫my.ini
  • 我在 C:\wamp\bin\mysql\mysql5.6.17 中找到了文件 my.ini,但我没有找到绑定地址或地址 127.0.0.1 的任何规范
  • @user2222 我明白了。确认 Windows 的防火墙允许外部访问可能是一个不错的选择。
  • Windows 的防火墙被禁用但我有同样的问题,它给了我这个错误 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
猜你喜欢
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多