Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MySql在AmazonEC2上不工作_Java_Mysql_Spring_Amazon Ec2 - Fatal编程技术网

Java MySql在AmazonEC2上不工作

Java MySql在AmazonEC2上不工作,java,mysql,spring,amazon-ec2,Java,Mysql,Spring,Amazon Ec2,我在AmazonEC2LinuxAMI上的tomcat7上部署了一个JavaSpring应用程序。Mysql正在同一个实例上运行。我可以使用SSH连接远程连接到mysql服务器。但无法从spring应用程序访问mysql服务器。 Tomcat的context.xml如下所示: <Resource name="jdbc/db" auth="Container" type="javax.sql.DataSource" uniq

我在AmazonEC2LinuxAMI上的tomcat7上部署了一个JavaSpring应用程序。Mysql正在同一个实例上运行。我可以使用SSH连接远程连接到mysql服务器。但无法从spring应用程序访问mysql服务器。 Tomcat的context.xml如下所示:

    <Resource name="jdbc/db"   
       auth="Container"   
       type="javax.sql.DataSource"   
       uniqueResourceName="jdbc/db"   
       username="root"   
       password="pass"   
       driverClassName="com.mysql.jdbc.Driver"  
       url="jdbc:mysql://localhost:3306/db"  
       maxActive="15"  
       maxIdle="7"  
       validationQuery="Select 1" />  

这不起作用,实际上我无法确定db是否已连接,因为它不会抛出错误。 但当我将localhost替换为在其他实例上运行的服务器时,它会按预期工作。
如果有人指出我错在哪里会很有帮助。

端口3306打开了吗?EC2默认安全组控制新实例可以访问哪些端口,并且在默认情况下非常严格。登录并检查EC2>网络与安全>安全组下是否没有限制性规则。

尝试读取tomcat错误-nano usr/share/tomcat8/logs/catalina.out

    <Resource name="jdbc/db"   
       auth="Container"   
       type="javax.sql.DataSource"   
       uniqueResourceName="jdbc/db"   
       username="root"   
       password="pass"   
       driverClassName="com.mysql.jdbc.Driver"  
       url="jdbc:mysql://localhost:3306/db"  
       maxActive="15"  
       maxIdle="7"  
       validationQuery="Select 1" />  
在我的connection.property文件中,我编写了如下代码

    <Resource name="jdbc/db"   
       auth="Container"   
       type="javax.sql.DataSource"   
       uniqueResourceName="jdbc/db"   
       username="root"   
       password="pass"   
       driverClassName="com.mysql.jdbc.Driver"  
       url="jdbc:mysql://localhost:3306/db"  
       maxActive="15"  
       maxIdle="7"  
       validationQuery="Select 1" />  
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/?user=root&password=pass

在tomcat8下运行的应用程序连接到本地mysql,一切正常。简单的读取错误上下文可能是某些东西不存在,或者是因为使用区分大小写的mysql抛出错误。

我已经这样做了。我可以远程连接到mysql,但无法从托管在同一实例上的应用程序连接到mysql。我有一个类似的windows实例,其中应用程序和数据库驻留在同一个实例上,工作正常。但同样的配置在linux上不起作用。除了数据库连接,其他一切都正常工作。您的MySQL角色是用通配符定义的吗?如果您是从
localhost
连接,则类似
GRANT ALL ON*.to'root'@'some.domain.name'
的规则将不起作用。相反,您需要
将*.*上的所有内容授予“根”@“%
    <Resource name="jdbc/db"   
       auth="Container"   
       type="javax.sql.DataSource"   
       uniqueResourceName="jdbc/db"   
       username="root"   
       password="pass"   
       driverClassName="com.mysql.jdbc.Driver"  
       url="jdbc:mysql://localhost:3306/db"  
       maxActive="15"  
       maxIdle="7"  
       validationQuery="Select 1" />