【问题标题】:Could not create connection to database server - java mysql connector无法创建与数据库服务器的连接 - java mysql 连接器
【发布时间】:2014-03-06 00:01:27
【问题描述】:

我无法连接到“实时服务器”上的 mysql 数据库,但它在我的本地计算机上运行良好。

在我的主要课程中,我正在这样做:

try {
    main.connection.open();
} catch (SQLException e1) {
    log.fatal(e1.getMessage());
    System.exit(0); 
}

而open方法是这样的

public void open() throws SQLException{
    if(con != null) close();
    con = DriverManager.getConnection(url, user, password);
}

运行几分钟后,我得到了这个:

14:35:47.434 [main] FATAL se.mypack.Server - 无法创建与数据库服务器的连接。尝试重新连接 3 次。放弃。

我该如何调试呢? url、服务器和密码变量是正确的。这里可能有什么问题?

使用mysql-connector-java-5.1.29-bin.jar

【问题讨论】:

  • 再次检查您的凭据。你应该 100% 相信他们是对的。还要查看用户是否有权访问此数据库 - 确保使用 GRANT 命令授予此用户权限。
  • 已经完成了。在 php 中使用相同的凭据进行连接是可行的。并且用户还拥有我正在使用的服务器 localhost 的权限。我是否还需要为服务器本地 ip 设置权限?例如。 192.168.0.4
  • 是的,如果您尝试从您的计算机连接,则需要在实时数据库上执行此操作。您需要授予您机器的外部 ip 的权限(您可以看到,如果您 ssh 进入它 - 如果它是一个 linux 环境) - 请参阅:stackoverflow.com/a/8348560/728610
  • 好的。仍然是同样的问题。但是,如果有特权,我不会得到“用户拒绝访问......”吗?还有其他想法吗?我正在为此撕毁我的头发。
  • 记录完整的堆栈跟踪,而不仅仅是主要消息。这将为您提供有关失败原因的更多信息。假设 log4j 或 logback,这看起来像:log.fatal(e1.getMessage(), e1);

标签: java mysql jdbc mysql-connector


【解决方案1】:

首先你必须确保你已经加载了你的 DB-driver 类。 它如下所示: Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

这是给 DERBY DB 的。 每个 DB 都有不同的驱动类,但思路是一样的。

如果您已经这样做了,请检查您是否有从客户端机器到数据库服务器的 tcp 连接 试图建立连接。您可以使用:ping -t your.server.ip。 如果您收到响应,请尝试建立与该 url + 端口号的 Telet 连接(DB 侦听器侦听的端口,对于 Oracle,它将是 1521,对于 Derby,它是 1527 ..)并看到您没有得到任何连接拒绝消息。 如果您的连接尝试失败,请查看 DB 侦听器是否已启动,或者您是否有防火墙问题。

祝你好运, 尤西列夫

【讨论】:

    猜你喜欢
    • 2021-07-21
    • 2023-03-03
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 2021-06-06
    • 2023-03-23
    • 2020-10-24
    相关资源
    最近更新 更多