**我想通过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的://本地主机/ MYDB” 消化= “MD5” userTable =“users”userNameCol =“username” userCredCol = “密码” userRoleTable =“user_roles”roleNameCol =“rolename”/>
每当我尝试运行Tomcat并尝试运行'Manager'时,它会在浏览器上抛出Authentication错误 和 Catalina.log 每次都包含以下错误日志。
SCHWERWIEGEND:异常开放 数据库连接 java.sql.SQLException:访问被拒绝 对于用户 'XXX',密码= XXXX '@' 本地主机” (使用密码:否)at 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(母语 方法)at sun.reflect.NativeConstructorAccessorImpl.newInstance(未知 来源)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知 来源)at java.lang.reflect.Constructor.newInstance(未知 来源)at 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(母语 方法)at sun.reflect.NativeMethodAccessorImpl.invoke(未知 来源)at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知 来源)at java.lang.reflect.Method.invoke(未知 来源)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
请有人知道出了什么问题,以及在哪一点上。
由于
答案 0 :(得分:1)
将其用作:
<Realm className="org.apache.catalina.realm.JDBCRealm"
connectionURL="jdbc:mysql://localhost/mydb?user=XXX&password=YYY"
driverName="com.mysql.jdbc.Driver"
...
rest same as before/>
答案 1 :(得分:0)
从例外情况看,数据库用户的用户名和/或密码似乎不正确。确保它们拼写正确,并且实际创建了具有适当访问权限的数据库用户。
答案 2 :(得分: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&password=xxxxxx"
userTable="user_table"
userNameCol="user"
userCredCol="password"
userRoleTable="role_table"
roleNameCol="role" />