Tomcat7 MySQL连接错误

时间:2011-02-16 19:30:04

标签: mysql tomcat connection

我正面临一个令人困惑的问题。我已经完成了一个jsf web应用程序,它使用Tomcat7和tomcat-jdbc-pool作为连接池提供程序,可以使用hibernate和infinispan。

它被部署到具有2个节点的Linode集群 - 一个数据库服务器和一个生产服务器。

我可以使用完全相同的Tomcat7副本在我的本地环境中运行应用程序(我实际上将tomcat目录转换为服务器并将其提升为调试此错误) - 即使连接到实时数据库实例也是如此。一切都运行良好。

当我尝试从生产服务器运行应用程序时,我收到MySQLIO错误:

  

引起:java.net.ConnectException:   连接被拒绝

在日志中进一步查看:

  

成功发送的最后一个数据包   服务器是1毫秒前。该   驱动程序没有收到任何数据包   从服务器。   com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:   通信链路故障

我可以从prodapp服务器上的命令行连接就好 - 甚至使用tcp:

mysql -h db01 -u user -p --protocol=tcp

但它只是无法在Tomcat容器内运行。我尝试了各种各样的东西,但我真的很难过。我可以在本地使用相同的Tomcat7副本连接到数据库服务器,但是当部署到生产时,tomcat7的相同副本无法连接 - 即使我可以从该生产服务器上的命令行连接,这似乎很奇怪。我很难过。

非常感谢任何帮助。

编辑:在浪费了太多美好生活后解决了我的问题。答案是我很蠢。感谢所有试图提供帮助的人。我有应用程序模式w / dev和实时模式,连接池一直在读取开发模式。真正令人困惑的是sessionfactory被模式化了,所以它实际上会到达实时数据库并在启动时初始化连接,所以我可以看到它连接(并在mysql日志中运行元数据查询),但是当它实际上是从infinispan抓住了一个连接它爆炸了。哦 - 好吧 - 至少它现在正在工作。再次感谢。

1 个答案:

答案 0 :(得分:0)

如果您从另一个框连接到MySQL数据库服务器,则需要明确授予该用户帐户从该IP连接的权限。

您可以在命令行中执行此操作:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'ip_address'

编辑:通常不需要授予所有表的所有权限,具体说明您要授予的权限(http://dev.mysql.com/doc/refman/5.1/en/grant.html

要查看您目前拥有的权限:

USE mysql;
SELECT * FROM users;

如果我光顾你,我很抱歉,这是我遇到的最常见的问题。