首先,我们可以使用以下命令访问RDS/MySQL数据库:
mysql -h ckinstance.cx2ecc4osrgp.us-west-2.rds.amazonaws.com -P 3306 -u ck -p<PASSWORD>然后,我们尝试添加root用户和密码,以通过以下方式提供对RDS/MySQL数据库的访问:
create user 'ck'@'ckinstance.cx2ecc4osrgp.us-west-2.rds.amazonaws.com' identified by '<PASSWORD>';
grant all privileges ck.* to 'ck'@'ckinstance.cx2ecc4osrgp.us-west-2.rds.amazonaws.com'; 我们的webapp属性文件有:
com.careerkick.jpa.url=jdbc:mysql://ckinstance.cx2ecc4osrgp.us-west-2.rds.amazonaws.com:3306/ck
com.careerkick.jpa.username=ck
com.careerkick.jpa.password=<password>然而,当我们运行我们的webapp时,日志显示它仍然试图通过localhost访问它:
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0
com.mchange.v2.resourcepool.BasicResourcePool -
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@6c3bae8 -- Acquisition
Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new
resource, we failed to succeed more than the maximum number of allowed acquisition
attempts (30). Last acquisition attempt exception:
java.sql.SQLException: Access denied for user 'ck'@'172.31.29.230' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:927)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1709)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1252)由于某些原因,它似乎想要使用本地主机IP。
我还尝试通过使用本地主机IP创建用户。
创建用户'ck'@'172.31.29.230‘,标识为'';
但这也不管用。
我还引用了这篇文章作为参考:
java.sql.SQLException: Access denied for user
关于这个数据库连接问题,还有没有其他建议或者我可能遗漏了什么?谢谢。
发布于 2013-09-23 22:11:55
当您授予对RDS的访问权限时,您将授予对从其连接的主机的访问权限,而不是对您要连接到的主机的访问权限。由于内网IP通常在ec2内变化,因此最好使用安全组来控制访问,并使用通配符主机%设置授权
https://stackoverflow.com/questions/18950861
复制相似问题