java – jdbc:无法创建与数据库服务器的连接

前端之家收集整理的这篇文章主要介绍了java – jdbc:无法创建与数据库服务器的连接前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参见英文答案 > com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure                                    32个
我正在尝试使用jdbc连接MysqL数据库.
这是我的数据库连接类:

  1. public class Database {
  2. String userName = "myUserName";
  3. String password = "myPass";
  4. String url = "jdbc:MysqL://xxx.xxx.xxx.xxx:3306/database_Name?autoReconnect=true&useSSL=false";
  5. public void connect()
  6. {
  7. try {
  8. Class.forName("com.MysqL.jdbc.Driver").newInstance();
  9. Connection conn = DriverManager.getConnection(url,userName,password);
  10. Statement statement = conn.createStatement();
  11. String queryString = "select * from users";
  12. ResultSet rs = statement.executeQuery(queryString);
  13. while (rs.next()) {
  14. System.out.println(rs.getString(2));
  15. }
  16. } catch (Exception e) {
  17. e.printStackTrace();
  18. }
  19. }
  20. }

现在,您可以假设我调用方法如下:

  1. new Database().connect();

我得到这个例外:

  1. com.MysqL.jdbc.exceptions.jdbc4.MysqLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
  2. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  3. at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  4. at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  5. at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  6. at com.MysqL.jdbc.Util.handleNewInstance(Util.java:425)
  7. at com.MysqL.jdbc.Util.getInstance(Util.java:408)
  8. at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:918)
  9. at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:897)
  10. at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:886)
  11. at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:860)
  12. at com.MysqL.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2163)
  13. at com.MysqL.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2088)
  14. at com.MysqL.jdbc.ConnectionImpl.MysqL.jdbc.JDBC4Connection.MysqL.jdbc.Util.handleNewInstance(Util.java:425)
  15. at com.MysqL.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
  16. at com.MysqL.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
  17. at java.sql.DriverManager.getConnection(DriverManager.java:664)
  18. at java.sql.DriverManager.getConnection(DriverManager.java:247)
  19. at Database.MysqL.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
  20. The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
  21. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  22. at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  23. at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  24. at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  25. at com.MysqL.jdbc.Util.handleNewInstance(Util.java:425)
  26. at com.MysqL.jdbc.sqlError.createCommunicationsException(sqlError.java:989)
  27. at com.MysqL.jdbc.MysqLIO.MysqLIO.java:341)
  28. at com.MysqL.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2251)
  29. at com.MysqL.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2104)
  30. ... 19 more
  31. Caused by: java.net.ConnectException: Connection refused: connect
  32. at java.net.DualStackPlainSocketImpl.connect0(Native Method)
  33. at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
  34. at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
  35. at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
  36. at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
  37. at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
  38. at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
  39. at java.net.Socket.connect(Socket.java:589)
  40. at com.MysqL.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211)
  41. at com.MysqL.jdbc.MysqLIO.MysqLIO.java:300)
  42. ... 21 more

*我添加%来从远程访问数据库.

* Java部分为localhost工作但是当我尝试这个远程数据库时,它失败了.

*创建了数据库和表.(没有问题.)

那问题出在哪里?

最佳答案

Java part working for localhost but when I try this remote database,it fails

这意味着,您的MysqL服务器绑定到localhost,并且在外部不可见.
请将MysqL conf文件中的bind-address属性设置为主机的实际IP地址.

例如:bind-address = 192.168.1.26

根据实际IP地址,我的意思是您的客户端可以看到运行Java代码的位置.这可以是内联网地址或公共IP.如果要公开您的公共IP,则可能必须使用某些防火墙.

猜你在找的MySQL相关文章