【发布时间】:2018-06-21 01:26:06
【问题描述】:
我尝试在 AWS EC2 Ubuntu 服务器上部署我的 Spring 应用程序,到目前为止一切顺利。 我的 Mysql 数据库是使用 RDS 创建的,我可以在其中连接例如 SequelPro 以及 IntelliJ(在本地运行服务器但使用外部数据库时)
当我想在 EC2 Ubuntu 系统上运行服务器时,我会使用
java -jar
仅用于测试目的。 (我知道我以后必须将其安装为服务)
但过了一段时间,服务器启动时出现此错误
> 018-06-20 16:26:37.122 ERROR 12116 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_171]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_171]
.
.
.
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_171]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_171]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_171]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_171]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:342) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2188) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2037) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
... 91 common frames omitted
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method) ~[
任何想法是什么导致了问题? 端口在 RDS 和 EC2 中是开放的...
【问题讨论】:
-
似乎附加到 RDS 的安全组不允许来自您的 EC2 实例的流量。你检查了吗?
-
编辑了开始帖子中的屏幕截图。可以从我的本地计算机访问数据库,那么为什么不能从 EC2 访问它?
-
有一种方法可以限制与特定 IP 的通信,这可以只启用您的本地计算机,但不能启用 EC2。但是,根据更新的屏幕截图,您的安全组配置为完全开放并且应该可以访问(顺便说一下,开放端口在安全性方面不是一个好的做法)。
-
是的,我知道这对安全性不利,我只想运行,然后我将配置所有特定于安全性的东西。还有其他建议吗?
-
您是否有任何特殊设置,例如私有 VPC(或)路由表等?
标签: java spring amazon-web-services amazon-ec2