Erro de Tomcat Realm com MySql

2 respostas
pedroabs

Caros colegas:

Estou passando por um problema com a configuração do do TOMCAT v 7.0.11 junto com o MySql 5.5.19.

Ao conectar a base de dados com o seguinte código não tenho problemas nenhum:

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TesteMySql {
	public static void main(String[] args) {
		String driver = "com.mysql.jdbc.Driver";
		String connection = "jdbc:mysql://localhost:3306/Motta";
		String user = "root";
		String pass = "123123";

		try {
			Class.forName(driver);
			Connection con = DriverManager.getConnection(connection, user, pass);
			
			PreparedStatement pst = con.prepareStatement("select * from Usuarios");
			ResultSet rs = pst.executeQuery();
			
			while(rs.next()){
				String alimento = rs.getString("apelido");
				System.out.println(alimento);
			}
			
		} catch (ClassNotFoundException e) {
			System.out.println("Classe não encontrada");
		}

		catch (SQLException e) {
			System.out.println("Problemas com o BD" + e);
		}
	}
}

Agora vou demonstrar a minha configuração de e a exception:

<Realm className="org.apache.catalina.realm.JDBCRealm" 
driverName="com.mysql.jdbc.Driver" 
connectionURL="jdbc:mysql://localhost:3306/Motta?user=root;password=123123"
userTable="Usuarios" userNameCol="apelido" userCredCol="senha"
userRoleTable="UsuarioEmCargo" roleNameCol="nomeDoCargo"
digest="SHA"/>

E finalmente a exception:

GRAVE: Exception performing authentication
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user ''@'localhost' to database 'motta'
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
	at com.mysql.jdbc.Util.getInstance(Util.java:382)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3603)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3535)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:934)
	at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4104)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1299)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2338)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2371)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
	at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:711)
	at org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:352)
	at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:282)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:394)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

Pergunto:

Como pode dar exception se o código demonstrado primeiramente (lá em cima) funciona sem problemas ??

2 Respostas

WRYEL

connectionURL=“jdbc:mysql://localhost:3306/Motta?user=root;password=123123” por connectionURL=“jdbc:mysql://localhost:3306/Motta?user=root[color=red]&[/color]password=123123”

[]'s

edit: na documentação do tomcat 7, ainda está diferente, veja:

connectionURL=“jdbc:mysql://localhost/authority?user=dbuser& amp;password=dbpass” (com uso do & amp; )

vi aqui: http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html

[]'s

LPJava

dar uma olhada nesse post que eu fiz:

http://blog.camilolopes.com.br/seguranca-jee-realmtomcat/

Criado 14 de janeiro de 2012
Ultima resposta 14 de jan. de 2012
Respostas 2
Participantes 3