我正在尝试在AWS linux实例上部署springboot应用程序但是我一直收到以下错误:
2018-04-24 18:15:27.777 INFO 24020 --- [ost-startStop-1]
o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2018-04-24 18:15:28.771 ERROR 24020 --- [main] o.a.tomcat.jdbc.pool.ConnectionPool: Unable to create initial connections of pool.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
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_161]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_161]
...
2018-04-24 16:58:57.522 WARN 23780 --- [main] o.s.b.a.orm.jpa.DatabaseLookup : Unable to determine jdbc url from datasource
org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException:
Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
这就是我创建applications.properties文件的方式:
#database config
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://****-west-1.rds.amazonaws.com:3306/DevManagementDB
spring.datasource.username=root
spring.datasource.password=mypassword
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.ddl-auto=update
奇怪的是,当我在本地计算机上运行应用程序时,我可以从这个springboot应用程序连接到我的RDS数据库。一旦我尝试将应用程序部署到AWS上的linux实例,它就会失败并且我得到上述错误。
答案 0 :(得分:0)
我也遇到过类似的问题。
我必须从/etc/mysql/mysql.conf.d/mysqld.cnf
停止mysql服务器sudo systemctl stop mysql.service
需要更新
bind-address = 0.0.0.0 // replace 0.0.0.0 with required ip, 0.0.0.0 allows all ip
启动mysql服务器sudo systemctl start mysql.service
还需要创建一个可以访问该IP的用户,并在mysql中添加权限
mysql > CREATE USER 'user_name'@'%' IDENTIFIED BY 'PASSWORD'; // replace % with appropriate IP
mysql > CREATE USER 'user_name'@'%' IDENTIFIED BY 'PASSWORD'; // replace % with appropriate IP
mysql > GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%' WITH GRANT OPTION; // replace % with appropriate IP
mysql > FLUSH PRIVILEGES;
希望这会对某人有所帮助
答案 1 :(得分:0)
如果您的数据库是RDS实例,请确保访问该数据库的设备的公共IP地址包含在RDS实例的安全组中。另外,请确保相应的VPC安全组的“入站”通道中包含公用IP地址。