Erro quando muda de micro

9 respostas
G

Eu desenvolvo um projeto em minha maquina, testo e roda beleza.. conecta, consulta e cadastra no banco de dados.
Mas qd eu gero o .war e jogo no servidor, nao consigo fazer operaçoes com o bando de dados.Me retorna o erro abaixo:
Obs: Lembrando q o usuario, senha, base de dados estao corretos.. a tabela tb.
Se alguem tiver uma ajuda fico grato. :-)

_______________________________________________________________________________
type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 
javax.servlet.ServletException: Data source rejected establishment of connection,  message from server: "Host 'localhost.localdomain' is not allowed to connect to this MySQL server"
 org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:516)
 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:423)
 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause 
java.sql.SQLException: Data source rejected establishment of connection,  message from server: "Host 'localhost.localdomain' is not allowed to connect to this MySQL server"
 com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:731)
 com.mysql.jdbc.Connection.createNewIO(Connection.java:1406)
 com.mysql.jdbc.Connection.<init>(Connection.java:350)
 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:218)
 java.sql.DriverManager.getConnection(DriverManager.java:525)
 java.sql.DriverManager.getConnection(DriverManager.java:171)
 br.com.unimedsudoestemg.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:15)
 br.com.unimedsudoestemg.jdbc.dao.ContatoDAO.<init>(ContatoDAO.java:24)
 br.com.unimedsudoestemg.struts.action.ContatoAction.execute(ContatoAction.java:20)
 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.10 logs.

9 Respostas

T

verifique o JAr do JDBC se esta no servidor de aplicação.
verifique a URL do banco de dados.

:slight_smile:

G
O jar do MysqlConector esta esta correto e creio eu q url tb.... a base de dados chama tct, meu arquivo esta assim:
public class ConnectionFactory {
	private static final String url = "jdbc:mysql://localhost/tct";
	private static final String driver = "com.mysql.jdbc.Driver";
	private static final String usuario = "usuario";
	private static final String senha = "senha";
	
	public static Connection getConnection() throws SQLException {
		try {
			Class.forName(driver);
			System.out.println("Conectando ao banco");
			return DriverManager.getConnection(url, usuario, senha);
		} catch (ClassNotFoundException e) {
			throw new SQLException(e.getMessage());
		}
	}
}

lembro a todos q na minha maqui esta consultando legal..
o erro só aparece qd eu jogo meu projeto no servidor.
A versao do mysql do servidor é a 4.0.24 e da minha maquina 4.0.18

Abraços
Geraldo Barboza

T

O banco de dados esta instalado no servidor onde esta a aplicacao?

G

ta sim… no servidor e na minha maquina.

S

Olá

Vc já verificou as permissões de usuário no seu banco MySQL?? Veja se esta documentação te ajuda:
http://dev.mysql.com/doc/mysql/pt/privileges.html

Se você obter o seguinte erro quando estiver tentando conectar de uma máquina diferente da que o servidor MySQL estiver executando, então não deve existir um registro na tabela user que combine com esta máquina:

Host … is not allowed to connect to this MySQL server

Você pode corrigir isto utilizando a ferramenta de linha de comando mysql (no servidor!) para adicionar um registro à tabela user, db ou host para coincidir com o usuário e nome de máquina de onde você está tentando conectar, depois execute o comando mysqladmin flush-privileges. Se você não estiver executando o MySQL Versão 3.22 e você não sabe o número IP ou o nome da máquina da qual estiver conectando, você deve colocar uma entrada com o valor ‘%’ na coluna Host da tabela user e reiniciar o mysqld com a opção --log na máquina onde é executado o servidor. Depois tente conectar a partir da máquina cliente, a informação no log do MySQL irá indicar como você está realmente conectando. (Então troque o ‘%’ na tabela user com o nome da máquina mostrado pelo log. De outra forma você teria um sistema que seria inseguro.)

Outra razão para este erro no Linux pode ser porque você está utilizando uma versão binária do MySQL que é compilada com uma versão diferente da glibc que você está usando. Neste caso você deve atualizar seu SO/Glibc ou fazer o download da versão fonte do MySQL e compilá-la. Um RPM fonte é, normalmente, fácil de compilar e instalar, logo, isto não é um grande problema.

Espero ter ajudado … :grin:

Abraços,

G
"Spirulita":
Olá

Vc já verificou as permissões de usuário no seu banco MySQL?? Veja se esta documentação te ajuda:
[url]http://dev.mysql.com/doc/mysql/pt/privileges.html[/url]

tentei com o usuairo root, e o acesso nao é remoto... mudei meu JDBC Conector para o 3.2, dai a mensagem mudou para:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: null,  message from server: "Host 'localhost.localdomain' is not allowed to connect to this MySQL server"
	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:516)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:423)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.sql.SQLException: null,  message from server: "Host 'localhost.localdomain' is not allowed to connect to this MySQL server"
	com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1023)
	com.mysql.jdbc.Connection.createNewIO(Connection.java:1699)
	com.mysql.jdbc.Connection.<init>(Connection.java:408)
	com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:270)
	java.sql.DriverManager.getConnection(DriverManager.java:525)
	java.sql.DriverManager.getConnection(DriverManager.java:171)
	br.com.unimedsudoestemg.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:15)
	br.com.unimedsudoestemg.jdbc.dao.ContatoDAO.<init>(ContatoDAO.java:24)
	br.com.unimedsudoestemg.struts.action.ListaContatosNome.execute(ListaContatosNome.java:21)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
T

o que tem na classe ListaContatosNome tem como postala

G
"teofilo":
o que tem na classe ListaContatosNome tem como postala
ListaContatosNome
public class ListaContatosNome extends Action {

	@Override
	public ActionForward execute(ActionMapping map, ActionForm form,
			HttpServletRequest request, HttpServletResponse res)
			throws Exception {
		String nome = request.getParameter("nome");
		request.setAttribute("listaDeContatos", new ContatoDAO()
				.getListaNome(nome));
		return map.findForward("ok");
	}

}
ContatoDAO
public class ContatoDAO {

	// a conexão com o banco de dados
	private Connection connection;

	// construtor que recebe a conexão
	public ContatoDAO(Connection con) {
		this.connection = con;
	}

	public ContatoDAO() throws SQLException {
		this.connection = ConnectionFactory.getConnection();
	}

	public void adiciona(Contato contato) throws SQLException {

		// prepared statement para inserção
		PreparedStatement stmt = this.connection
				.prepareStatement("insert into contato (nome,contato,tel1,tel2,descricao) values (?, ?, ?, ?, ?)");

		// seta os valores
		stmt.setString(1, contato.getNome());
		stmt.setString(2, contato.getContato());
		stmt.setString(3, contato.getTel1());
		stmt.setString(4, contato.getTel2());
		stmt.setString(5, contato.getDescricao());

		// executa
		stmt.execute();
		stmt.close();
	}

	public List<Contato> getListaNome(String nome) throws SQLException {
		
		PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM contato WHERE nome LIKE '"+ nome + "%'");
		//stmt.setString(1, nome);
		ResultSet rs = stmt.executeQuery();
		List<Contato> list = new ArrayList<Contato>();
		while (rs.next()) {
			// criando o objeto Contato 
			Contato contato = new Contato();
			contato.setId(rs.getLong("id"));
			contato.setNome(rs.getString("nome"));
			contato.setContato(rs.getString("contato"));
			contato.setDescricao(rs.getString("descricao"));
			contato.setTel1(rs.getString("tel1"));
			contato.setTel1(rs.getString("tel2"));
			// adicionando o objeto à lista
			list.add(contato);
		
	}
		return list;
	}
	
}
G

Bom, parece que o proble nao ta no meu projeto, e sim no mysql do meu servidor…
Trouxe o arquivo.war para minha casa e joguei no meu Tomcat, criei a tabele e teste, funcionou legal… mas tenho uma duvida:

Na minha casa e no micro de trabalho a versao do mysql é 4.0.18
No servidor é 4.0.24

Sera q influencia as versoes?
No servidor roda Debian e na estação de trabalho roda Win XP.

Bom valew…

Criado 2 de agosto de 2005
Ultima resposta 2 de ago. de 2005
Respostas 9
Participantes 3