【发布时间】: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