0

まず、次のコマンドを使用して 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 を使用したいようです。

また、localhost IP を使用してユーザーを作成しようとしました。

'' で識別されるユーザー 'ck'@'172.31.29.230' を作成します。

しかし、それもうまくいきませんでした。

こちらの記事も参考にしました:

java.sql.SQLException: ユーザーのアクセスが拒否されました

他に提案はありますか、またはこのデータベース接続の問題に関して私が見逃している可能性があるものはありますか? ありがとう。

4

1 に答える 1

1

RDS でアクセスを許可すると、接続先のホストではなく、接続元のホストへのアクセスが許可されます。プライベート IP は通常 ec2 内で変更されるため、セキュリティ グループを使用してアクセスを制御し、ワイルドカード ホストで許可を設定するのが最善です。%

于 2013-09-23T14:11:54.943 に答える