在阅读并尝试了类似帖子的答案后,我想问这个问题。我的问题与迁移到Spring Boot 2.0.0有关吗?
在本地或RDS AWS上创建任何MySql数据库后,我无法将Spring Boot 2.0.0应用程序连接到该数据库。我仍然看到异常:...用户的访问被拒绝...(使用密码:是)。
重要:使用以下简单的Java程序,我可以!访问AWS RDS MySql数据库。我还可以创建表等。
echo "Requesting number...";
$url = 'api.php'; # changed from the actual website
$postdata = http_build_query(
array(
'metod' => 'get_number', # misspelled because it is not an English website
'apikey' => 'XXXXXXXXXXXXXXXXXXXXXXXXX',
'country' => 'RU',
'service' => 'XXXXX'
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents($url, false, $context);
print_r($result);
使用简单的Spring Boot 2.0.0应用程序,我无法建立连接。首先,我收到此错误:
2018-12-25 10:36:59.670错误7184-[[主要] com.zaxxer.hikari.pool.HikariPool:HikariPool-1-异常 在池初始化期间。
java.sql.SQLException:用户被拒绝访问 'dbuser'@'dhcp-etc'(使用密码:是)
进一步,我收到此错误:
java.lang.IllegalStateException:无法加载ApplicationContext
原因:org.springframework.beans.factory.BeanCreationException: 创建类中定义的名称为'entityManagerFactory'的bean时出错 路径资源 [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaConfiguration.class]: 调用init方法失败;嵌套异常为 javax.persistence.PersistenceException:[PersistenceUnit:默认] 无法建立Hibernate SessionFactory,原因是:
javax.persistence.PersistenceException:[PersistenceUnit:默认] 无法建立Hibernate SessionFactory,原因是:
org.hibernate.exception.GenericJDBCException:无法打开JDBC 执行DDL的连接原因:java.sql.SQLException:访问 拒绝用户'dbsetup'@'dhcp-ipaddress-etc-.nl'(使用密码: 是)
并且:
org.springframework.jdbc.support.MetaDataAccessException:无法 获取用于提取元数据的连接;嵌套异常为 org.springframework.jdbc.CannotGetJdbcConnectionException:失败 获取JDBC连接;嵌套异常是java.sql.SQLException: 用户'dbuser'@'dhcp-etc'的访问被拒绝(使用密码:是)
这是我的application.properties文件:
Class.forName("com.mysql.jdbc.Driver");
// Username and password created via MySQL workbench
String username = "dbuser";
String password = "dbpassword";
String jdbcUrl = "jdbc:mysql://myhostname:3306/mydatabase?user=" + username + "&password=" + password;
Connection con = DriverManager.getConnection(jdbcUrl);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(selectStmt);
在连接字符串中使用此添加项无效:?useSSL = false
我的pom.xml包含:
spring.datasource.url=jdbc:mysql://myhostname:3306/mydatabase
spring.datasource.username=dbuser
spring.datasource.password=dbpassword
#REMOVED: spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
从PC正确连接(使用Spring Boot)后,我将继续使用EC2实例进行开发。
AWS RDS MySQL版本:5.6.41。
答案 0 :(得分:0)
让父级加载其兼容的mysql连接器库,因此请尝试不使用版本。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
答案 1 :(得分:0)
请仔细检查您的application.properties文件,您的数据库用户名或密码后不应有空格。
或者,您可以通过这种方式编写:
spring.datasource.url = jdbc:mysql:// localhost:3306 / dbname?user = dbuser&password = dbpassword