我正面临一个令人困惑的问题。我已经完成了一个jsf web应用程序,它使用hibernate和无穷大,使用Tomcat7和Tomcat7池作为连接池提供程序。
它正在部署到Linode集群w/ 2节点--一个数据库服务器和一个生产服务器。
我可以使用完全相同的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/ a开发和活动模式,连接池一直在读取开发模式。真正令人困惑的是,sessionfactory是按模式运行的,这样它就可以在启动时到达活动数据库并初始化一个连接,这样我就可以看到它连接(并在mysql日志中运行元数据查询),但是当它实际上从无穷大范围获取一个连接时,它就崩溃了。哦,好吧--至少现在起作用了。再次感谢。
发布于 2011-02-16 19:47:53
如果从不同的框连接到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;我很抱歉,如果我是在惠顾你,只是这是我遇到的最常见的问题。
https://stackoverflow.com/questions/5021174
复制相似问题