0

私は tomcat と mysql を使用しています (ide は eclipse です)。接続プールを使用しています。

context.xml には、次のものがあります。

 <Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource"
          maxActive="100" maxIdle="30" maxWait="10000"
          username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/mydb" 
          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" />

最初は、mysql を easyphp で使用していました (ユーザー root には pwd がありませんでした)。すべてが機能しました。次に、pwd を追加し、context.xml を適切に変更しました (現在のように)。

それ以来、私はこれらの例外を持っています:

Unexpected exception resolving reference
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)

Failed to register in JMX: javax.naming.NamingException: Access denied for user    'root'@'localhost' (using password: NO)
lug 13, 2012 9:16:45 AM org.apache.naming.NamingContext lookup
Unexpected exception resolving reference
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)

「奇妙な」ことは、アプリがdbへの書き込みに成功することです。

easyphp をアンインストールし、ポート 3306 に mysql をインストールして、pwd root を持つ root ユーザーを作成します。

私は同じ例外を取得します。

4

1 に答える 1

1

問題が発生したときはいつでも、エラー メッセージの一般的な内容をカット アンド ペーストすることをお勧めします。最悪の場合でも、自分が一人でも初めてでもないことを知って安心するでしょう。せいぜい、問題の簡単な解決策が表示されます。

これを貼りました

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

Google 検索に参加し、多くの興味深いことを学びました。あなたもそうです。

私の他のアドバイスは、ルートを使用するのではなく、アプリ用に別のユーザー名とパスワードを作成し、適切な権限を付与することです。ルートは強力であり、アプリとデータベースの両方が自分のものであっても、アプリケーションに与えるべきではありません。ルートは、システム テーブルを含むすべてのテーブルにアクセスできます。アプリ用に別のデータベースを作成し、ミッションを遂行するために必要なアクセス許可のみをアプリケーションのユーザー名とパスワードに付与することを好みます (たとえば、必要な場合を除き、削除アクセス許可はありません。テーブルの削除はありません)。

于 2012-07-13T09:43:37.223 に答える