経由のMySQLにアクセスしたときに「無効な認証の仕様は、」私は、既存のApache/Tomcatの/ MySQLのアプリケーションが実行されているハードウェアを交換する使命を帯びてきました。古いマシンはUbuntuを実行していますが、新しいマシンはきれいでフレッシュなDebian Squeeze 64ビットインストールです。のTomcat + MySQLの:Tomcatアプリケーション
私はほとんどすべて、バックアップアップの上にコピーされ、新しいデータベースサーバー上のデータベースを復元しました。アプリケーションサーバーのアプリケーションのデータベース接続パラメータを、新しいデータベースサーバーのIPアドレスに置き換えました。
データベースは、コマンドライン上の問題なくアクセスすることができます。しかし、Tomcatアプリケーションを使用してデータベースにアクセスすると、次のエラーメッセージが用意されています
Exception while connecting to database: java.sql.SQLException: Invalid authorization specification message from server: "Access denied for user 'root'@'srvbisonapp.local' (using password: YES)"
java.sql.SQLException: Invalid authorization specification message from server: "Access denied for user 'root'@'srvbisonapp.local' (using password: YES)"
java.lang.NullPointerException
java.sql.SQLException: Invalid authorization specification message from server: "Access denied for user 'root'@'srvbisonapp.local' (using password: YES)"
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2001)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1907)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:2524)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:818)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1808)
at com.mysql.jdbc.Connection.<init>(Connection.java:452)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:411)
at java.sql.DriverManager.getConnection(DriverManager.java:620)
at java.sql.DriverManager.getConnection(DriverManager.java:222)
at de.branion.db.mysql.DBConnection.connect(DBConnection.java:107)
at de.branion.db.mysql.DBConnection.connectPermissions(DBConnection.java:41)
at de.branion.permissions.User.loadFromDB(User.java:75)
at de.branion.permissions.User.login(User.java:360)
at org.apache.jsp.login_jsp._jspService(login_jsp.java:133)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:636)
動作しない間違った資格情報を使用してデータベースへのアクセスを、そして、それは別のエラーメッセージを表示します。したがって、問題は実際の資格情報ではありません。私はこの問題をGoogleにしようとしたとして、私が言ったように、アクセスがまだ
mysql -u root -p
を使用して、コマンドラインで動作しますが、私は多くの人が長年にわたってトラブルの同じ種類を持っていたことを見ましたが、多くはないが真の解決策を持っていました。私がこれまで試した:
- は、Tomcatアプリケーションが使用しているログインのホストパラメータを変更する(エラーメッセージで見つかった)「%」、 はない「ALL」特権の付与が、許可しますTomcatが使用しているユーザーに対して個別の権限(SELECT、INSERTなど)を使用しています
どちらもネット上で見つかったもので、どちらも役に立ちませんでした。
私は、MySQLデータベースにアクセスするために使用される古いの.jarは、MySQLの新しい(最近の)バージョンと互換性がありませんが、そう言っていないように、それは難解な何かを恐れています。私は、転送されたアプリケーションを再加工する必要がないソリューションを見つけることを願っています。
私はあなたが必要とする情報を提供することができます。
ありがとうございます。
Dammit。エラーが見つかりました。アプリケーションは私が思ったのとは違うパスワードを使っていました。ビルドスクリプトはビルド中に設定ファイルを変更したので、アプリケーションが別のパスワードを使用している間に、1つのパスワードで手動でアクセスをテストしました。あなたの助けに感謝し、私はあなたのコメントに基づいて二重にチェックしたので、私はこれを解決策として受け入れます。ありがとう。 – 0xCAFEBABE