gpt4 book ai didi

Java jdbc 连接到远程局域网服务器上的 mariadb

转载 作者:行者123 更新时间:2023-11-29 20:11:42 25 4
gpt4 key购买 nike

我知道这个问题已经被问了很多,但在尝试了这里找到的许多解决方案后,我仍然无法连接到我的数据库。

我正在 PC 上工作,我想连接到 LAN 中另一台计算机上的 mariadb mysql 服务器。但我想以这样的方式做到这一点:我的程序可以从任何地方连接到我的 mysql 服务器。不仅来自mysql所在的机器或局域网中的PC。

我认为使用我的外部 IP 并在路由器上转发 mysql 端口可以解决问题,但我收到了“通信失败”错误。

到目前为止我确定:

  • -用户、密码、数据库名称正确
  • -端口默认为3306
  • -在 mysql 配置中我禁用了绑定(bind)地址
  • -在 mysql 中,我的用户被允许从任何主机和我的外部 IP 进行连接,只是为了确保...
  • -数据库为空
  • -其他数据库正在工作,php 可以连接,但它在同一服务器上执行,因此它连接到“localhost”
  • -DriverManager.getConnection("jdbc:mysql://MY_IP:3306/my_DB","javauser", "javauserpass");
  • -安装了 mysql 服务器的机器 (UbuntuServer) 未配置 iptables
  • -我安装了 xampp 并在那里创建了数据库。我可以在登录查询字符串中使用“localhost”连接到该数据库。但这使得我的程序只能在本地运行。
  • -非 Activity 防火墙不会改变任何内容 - 仍然没有连接

错误:

-------- MySQL JDBC Connection Testing ------------
MySQL JDBC Driver Registered!
Connection Failed! Check output console
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.
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:425)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:989)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:341)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2251)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
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:425)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Main.main(Main.java:25)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300)
... 15 more

我的例子,测试程序取自这里:https://www.mkyong.com/jdbc/how-to-connect-to-mysql-with-jdbc-driver-java/

那么我哪里出错了?

最佳答案

检查数据库配置文件中的 MySQL/MariaDB bind-address 变量。 Then configure it appropriately 。它可能已设置为仅绑定(bind)到本地主机。

关于Java jdbc 连接到远程局域网服务器上的 mariadb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40061750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com