Проверка подлинности менеджера Tomcat 6.0 через область JDBC - PullRequest
1 голос
/ 01 октября 2009

** Я хотел настроить аутентификацию Tomcat6.0 через конфигурацию области JDBC. **** Я проверил следующее:

-Все мои «пользователи» и «роли» хранятся в базе данных MySQL.

-Диски MySQL JDBC находятся в каталоге tomcat \ lib

-Tomcat-user-xml изменен для такой области, как показано ниже

<- Realm className = "org.apache.catalina.realm.JDBCRealm" driverName = "org.gjt.mm.mysql.Driver" connectionName = "XXX" connectionPassword = "YYY" ConnectionURL = "JDBC: MySQL: // локальный / MYDB" дайджест = "MD5" userTable = "users" userNameCol = "username" userCredCol = "пароль" userRoleTable = "user_roles" roleNameCol = "rolename" />

После этого, когда я пытаюсь запустить Tomcat и запустить «Менеджер», он выдает ошибку аутентификации в браузере. и Catalina.log содержит следующий журнал ошибок каждый раз.

SCHWERWIEGEND: Открытие исключения подключение к базе данных java.sql.SQLException: доступ запрещен для пользователя 'XXX'; пароль = XXXX '@' локальный» (используя пароль: НЕТ) в com.mysql.jdbc.SQLError.createSQLException (SQLError.java:1055) в com.mysql.jdbc.SQLError.createSQLException (SQLError.java:956) в com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3558) в com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3490) в com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:919) в com.mysql.jdbc.MysqlIO.secureAuth411 (MysqlIO.java:3996) в com.mysql.jdbc.MysqlIO.doHandshake (MysqlIO.java:1284) в com.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:2142) в com.mysql.jdbc.ConnectionImpl. (ConnectionImpl.java:781) в com.mysql.jdbc.JDBC4Connection. (JDBC4Connection.java:46) в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (Неизвестно Источник) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (Неизвестно Источник) в java.lang.reflect.Constructor.newInstance (Неизвестно Источник) в com.mysql.jdbc.Util.handleNewInstance (Util.java:406) в com.mysql.jdbc.ConnectionImpl.getInstance (ConnectionImpl.java:352) в com.mysql.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:284) в org.apache.catalina.realm.JDBCRealm.open (JDBCRealm.java:703) в org.apache.catalina.realm.JDBCRealm.start (JDBCRealm.java:775) в org.apache.catalina.core.ContainerBase.start (ContainerBase.java:1037) в org.apache.catalina.core.StandardEngine.start (StandardEngine.java:443) в org.apache.catalina.core.StandardService.start (StandardService.java:516) в org.apache.catalina.core.StandardServer.start (StandardServer.java:710) в org.apache.catalina.startup.Catalina.start (Catalina.java:583) в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) в sun.reflect.NativeMethodAccessorImpl.invoke (Неизвестно Источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестно Источник) в java.lang.reflect.Method.invoke (Неизвестно Источник) в org.apache.catalina.startup.Bootstrap.start (Bootstrap.java:288) в org.apache.catalina.startup.Bootstrap.main (Bootstrap.java:413)

Пожалуйста, кто-нибудь знает, что происходит и в какой момент.

Спасибо

Ответы [ 3 ]

1 голос
/ 16 ноября 2010

используйте его как:

<Realm  className="org.apache.catalina.realm.JDBCRealm" 
connectionURL="jdbc:mysql://localhost/mydb?user=XXX&amp;password=YYY" 
driverName="com.mysql.jdbc.Driver"
     ...
rest same as before/>
0 голосов
/ 01 января 2016

У меня была такая же проблема, когда мой server.xml был следующим:

<Realm  className="org.apache.catalina.realm.JDBCRealm" debug="99"  
          driverName="com.mysql.jdbc.Driver"  
          connectionURL="jdbc:mysql://localhost:3306/authorization"  
          connectionName="root" 
          connectionPassword="xxxxx"  
          userTable="user_table" 
          userNameCol="user"      
          userCredCol="password"  
          userRoleTable="role_table" 
          roleNameCol="role" /> 

но в конце концов я обнаружил, что это неправильно в tomcat7, должно быть:

<Realm  className="org.apache.catalina.realm.JDBCRealm"
          driverName="com.mysql.jdbc.Driver"  
          connectionURL="jdbc:mysql://localhost:3306/authorization?user=root&amp;password=xxxxxx"   
          userTable="user_table" 
          userNameCol="user"      
          userCredCol="password"  
          userRoleTable="role_table" 
          roleNameCol="role" /> 
0 голосов
/ 01 октября 2009

Из исключения кажется, что имя пользователя и / или пароль пользователя базы данных неверны. Убедитесь, что они написаны правильно и что пользователь базы данных с соответствующими правами доступа действительно создан.

...