当前位置: 首页 > 知识库问答 >
问题:

Java jdbc连接到远程lan服务器上的mariadb

帅令雪
2023-03-14

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

我正在PC上工作,我想连接到我局域网中另一台机器上的mariadb mysql服务器。但我想这样做,我的程序可以从任何地方连接到我的mysql服务器。不只是从mysql所在的机器或局域网中的PC。

我以为使用我的外部IP和转发路由器上的mysql端口将会起作用,但我得到了‘通信失败’错误。

到目前为止我确定:

  • -用户、密码、db名称正确
  • -端口为默认3306
  • -在mysql配置中,我禁用了bind-adress
  • -在mysql中,允许我的用户从任何主机和外部IP进行连接,以确保...
  • -数据库为空
  • -其他数据库正在工作,php可以连接,但它是在同一台服务器上执行的,所以它连接到“localhost”
  • -DriverManager.GetConnection(“jdbc:mysql:/my_ip:3306/my_db”,“javauser”,“javauserpass”);
  • -在安装mysql服务器的计算机上(UbuntuServer)未配置IPTable
  • -我在那里安装了xampp并创建了db。我可以使用登录查询字符串中的“localhost”连接到这个数据库。但这使得我的程序只能在本地运行。
  • -不活动的防火墙不会改变任何内容-仍然没有连接
-------- 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 javahtml" target="_blank">html" target="_blank">.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/

那我哪里犯错了?

共有1个答案

林修真
2023-03-14

检查数据库配置文件中的MySQL/Mariadbbind-address变量。然后对其进行适当配置。它可能被设置为只绑定到localhost。

 类似资料:
  • 问题内容: 我想对redis.conf进行一些更改,以便每当我键入redis-cli时,它就会将我连接到安装在远程服务器上的redis。 我知道我们可以通过以下方式连接到安装在远程服务器上的redis: 但是实际上,我有一些bash脚本,在那些脚本中,我在很多地方都使用过redis-cli。因此,我不想以每个文件中的redis-cli -h’IP- Address-Of-Server’替换redi

  • 问题内容: 我已经使用Ubuntu 10.10服务器上http://redis.io/topics/quickstart上的快速入门指南中的说明成功安装了Redis 。我将服务作为dameon运行(因此可以通过init.d运行) 该服务器是具有内部和外部IP的Rackspace Cluster的一部分。主机在端口6379上运行(Redis的标准配置) 我在iptables中添加了一行,以允许来自端

  • 我在localhost上有一个带有mongo数据库的Spring Boot应用程序,一切都很好。 当我运行我的应用程序时,我得到“com.mongodb.mongoSocketOpenException:Exception opening Socket”由“regused by:java.net.SocketTimeoutException:connect timed out”引起

  • 我们在谷歌云平台上一直面临着一个相当奇怪的问题。我们试图在google cloud上设置一个Hbase独立实例,并使用静态IP地址,然后通过Java API远程连接到该实例。 如果代码被编入Jar并部署在HBase服务器上,则运行良好,但是从本地机器上运行,尽管它打开了所有端口并完全访问,但拒绝通过Zookeeper进行连接。 搜了无数论坛,都没能成功。 已经更改了etc/hosts文件,在hba

  • 问题内容: 我想从我的本地计算机连接到EC2上的db,但是我却做不到,并且尝试了所有操作-我正在使用以下命令连接到EC2: 产生此错误 错误2003(HY000):无法连接到“ IP”上的MySQL服务器(110) 我已经用修改了my.cnf 仍然无法连接到数据库 问题答案: 可能是以下原因之一: 您需要在Amazon Security Group中进行输入,以允许从您的计算机到Amazon EC

  • 我试图使用spring-boot Application.properties连接到远程计算机上的MySQL server,但失败了,错误。