Мне было поручено заменить оборудование, на котором работает существующее приложение Apache / Tomcat / MySQL. На старых машинах установлена Ubuntu, а на новых машинах установлена чистая и свежая 64-битная версия Debian Squeeze.
Я скопировал почти все, сделал резервную копию и восстановил базу данных на новом сервере базы данных. Я заменил параметры подключения к базе данных в приложении на сервере приложений на 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)
Доступ к базе данных с неверными учетными данными не работает, и он выдает другое сообщение об ошибке. Так что проблема не в реальных учетных данных. Как я уже сказал, доступ по-прежнему работает в командной строке, используя
mysql -u root -p
Когда я попытался решить проблему, я увидел, что многие из них сталкивались с подобными проблемами на протяжении многих лет, но не у многих было реальное решение. Что я пробовал до сих пор:
- Изменение параметра Host для имени входа, которое использует приложение Tomcat (находится в сообщении об ошибке), на "%",
- Предоставление не «ВСЕ» привилегий, но предоставление индивидуальных привилегий (SELECT, INSERT и т. Д.) Пользователю Tomcat использует
Оба были предложения, которые я нашел в сети, и оба не помогли.
Боюсь, что это что-то эзотерическое, например старый .jar, используемый для доступа к базам данных MySQL, не совместим с новой (недавней) версией MySQL, но не говорит об этом. Я надеюсь найти решение, которое не требует доработки переданного приложения, поэтому я прошу вас, ребята.
Я могу предоставить любую необходимую вам информацию.
Спасибо.