2017-03-01 7 views
-1

にローカルホストからこれは私のJDBC接続プールの設定です:Glassfishの変更JDBCプール127.0.0.1

<jdbc-connection-pool max-pool-size="300" steady-pool-size="3" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" name="teDS" wrap-jdbc-objects="false" connection-validation-method="auto-commit" res-type="javax.sql.DataSource"> 
    <property name="URL" value="jdbc:mysql://localhost:3306/db"></property> 
    <property name="port" value="3306"></property> 
    <property name="DatabaseName" value="db"></property> 
    <property name="serverName" value="localhost"></property> 
    <property name="password" value="XXX"></property> 
    <property name="url" value="jdbc:mysql://localhost:3306/db"></property> 
    <property name="user" value="user"></property> 
</jdbc-connection-pool> 

私を助けるしかし、私のPING接続はこのエラーを持ってください。エラー

あり発生しました PING接続プールがteDSで失敗しました。接続が割り当てられなかった理由は、次のとおりです。ユーザー 'user' @ '127.0.0.1'に対するアクセスが拒否されました(パスワードは:使用)詳細については、server.logを確認してください。

Ping ERROR

答えて

1

MySQLでは、ユーザは、ユーザ名とホストによって識別されます。

接続を許可するには、一致するユーザ名とホストを持つMySQLでユーザを作成する必要があります。完全に一致するユーザーを作成するには:既存のユーザーの権限を複製するには

GRANT USAGE ON *.* TO 'user'@'127.0.0.1' IDENTIFIED BY 'supersecretpassword' ; 
GRANT SELECT, INSERT, UPDATE, DELETE ON somedatabase.* TO 'user'@'127.0.0.1' ; 

を、我々はいくつかの他のユーザーの権限を抽出するには、SHOW GRANTS文の使用を作ることができ

SHOW GRANTS FOR 'user'@'localhost' 

我々それから出力をコピーし、それを新しいユーザーのGRANTステートメントの基礎として使用して、 'localhost'を '127.0.0.1'に置き換えることができます。

別のオプションとして、 '127.0.0.1'ではなくホスト名に '%'ワイルドカードを使用してユーザーを作成することもできます。これにより、任意のIPアドレスからの接続が可能になります。


ユーザーが存在する場合は、パスワードが間違っている可能性があります。プール設定が使用しているパスワードがmysql.userテーブルに格納されているものと一致することを確認します。

SELECT password FROM mysql.user WHERE user = 'user' and host = '127.0.0.1'; 

SELECT PASSWORD('supersecretpassword') ; 

ハッシュ値を比較します。

Access denied for user 'user'@'127.0.0.1' (using password: YES)

ポート3306を通じて成功したTCPハンドシェイクが起こっているように見えているなり、MySQLサーバが認証しようとしている:それはMySQLサーバからあるよう

返されるエラーメッセージが見えるのユーザーを= 'user'、host = '127.0.0.1'、password = PASSWORD( 'XXX')。

ユーザがmysql.userテーブルに存在しないか、パスワードが間違っているか、(おそらく)ユーザがdatabase = 'db'に対して権限を持っていない可能性があります。

(DML変更がmysqlデータベースの権限テーブルに適用された場合は、FLUSH PRIVILEGESを発行して変更を有効にします(変更がGRANT構文とREVOKE構文を使用して適用される場合、FLUSH PRIVILEGESは不要です。 INSERT、UPDATE、DELETEを使用して適用されます)

関連する問題