gpt4 book ai didi

java - 连接被拒绝: connect,无法连接数据库mysql

转载 作者:行者123 更新时间:2023-11-29 18:59:53 24 4
gpt4 key购买 nike

我无法连接远程数据库。当我在本地主机上连接我自己的数据库时,它会连接。怎么了?

    Exception in thread "main" java.lang.IllegalStateException: Cannot connect the database!

Caused by: 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.

Caused by: java.net.ConnectException: Connection refused: connect

Java 代码:

String url = "jdbc:mysql://ipadress:3306/database?autoReconnect=true&useSSL=false";
String username = "username";
String password = "password";
String query = "SELECT * FROM database";

System.out.println("Connecting database...");
try {
// The newInstance() call is a work around for some
// broken Java implementations

Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception ex) {
// handle the error
}
try (Connection connection = DriverManager.getConnection(url, username, password)) {
System.out.println("Database connected!");
//Uruchamiamy zapytanie do bazy danych
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);

while (rs.next()) {

}

connection.close();
} catch (SQLException e) {
throw new IllegalStateException("Cannot connect the database!", e);
}
}

我可以登录PHPMyAdmin上的数据库,我没有root帐户,这是我 friend 的数据库。我在这里检查了端口 3306 是否打开:http://www.yougetsignal.com/tools/open-ports/它已经关闭了。我在哪里可以打开它?在路由器设置中的“端口转发”?我应该设置什么私有(private)IP和类型(TCP或UDP)来打开这个端口?

最佳答案

(如果这个答案不完整,我们深表歉意,但有太多不适合评论的内容)

1) 不要忽略异常。这很糟糕:在 catch block 中使用 //handle the error 而没有其他内容,如果出现错误,您的代码将不会报告错误,并且将继续执行(它应该退出/中断/返回,具体取决于该代码段所在的位置)。

2)我认为检查“SHOW GLOBAL VARIABLES LIKE 'PORT';”是不够的。询问您的 friend ,数据库守护程序是否实际上监听您可以访问的网络接口(interface)上的端口 3306。 MySQL 可以配置为禁用网络 (skip-networking),或启用但仅适用于本地计算机 (bind-address=127.0.0.1localhost) > -- 它应该是 bind-address=0.0.0.0bind-address=hostname 或公共(public) IP 地址...)。

要亲自检查这一点,如果您使用的是 Linux,请尝试使用 nctelnet(如果您没有,请安装 nc它):nc 远程主机 3306。如果你得到“连接被拒绝”,错误肯定不是在你的java代码中,而是在服务器设置中。

关于java - 连接被拒绝: connect,无法连接数据库mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43945360/

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