1

**我想通过 JDBC 领域配置来配置 Tomcat6.0 身份验证。**** 我检查了以下内容:

- 我所有的“用户”和“角色”都存储在 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://localhost/ mydb" digest="MD5" userTable="users" userNameCol="username" userCredCol="password" userRoleTable="user_roles" roleNameCol="rolename"/>

每当我尝试运行 Tomcat 并尝试运行“管理器”时,它都会在浏览器上引发身份验证错误,并且 Catalina.log每次都包含以下错误日志。

SCHWERWIEGEND:打开数据库连接时出现异常 java.sql.SQLException:com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055) 处的用户“XXX”被拒绝访问;密码=XXXX'@'localhost'(使用密码:否) ) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java: 3490) 在 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)在太阳。reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com。 mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284) at 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) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:583) at sun.reflect .NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache .catalina.startup.Bootstrap.start(Bootstrap.java:288) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java: 288)在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java: 288)在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

请任何人知道出了什么问题,在什么时候。

谢谢

4

3 回答 3

1

将其用作:

<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/>
于 2010-11-16T07:44:47.067 回答
0

从异常看来,数据库用户的用户名和/或密码不正确。确保它们拼写正确,并且实际创建了具有适当访问权限的数据库用户。

于 2009-10-01T08:03:06.513 回答
0

当我的 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" /> 
于 2016-01-01T17:36:45.793 回答