Erro utizando banco JPA banco Mysql na minha hospedagem!

Bom dia,
Tenho um serviço de hospedagem onde estou tentando colocar meu site que esta desenvolvido utilizando Struts, JPA(Hibernate), Tomcat, Mysql.

Quando eu testo apontando para o banco em minha maquina funciona perfeitamente, mas quanto tento utilizar o banco que esta na minha hospedagem, tenho esta excessão:


javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:629)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:73)
	at com.wr.business.jpa.EmpresaDAO.findAll(EmpresaDAO.java:139)
	at com.wr.struts.action.EmpresaLoad.execute(EmpresaLoad.java:38)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
.
.
.
.
Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.loader.Loader.doList(Loader.java:2214)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
	at org.hibernate.loader.Loader.list(Loader.java:2090)
	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
	at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
	at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:64)
	... 22 more
.
.
.
Caused by: java.sql.SQLException: Syntax error or access violation,  message from server: "SELECT command denied to user 'wrvirtua_root'@'200-171-78-51.dsl.telesp.net.br' for table 'empresa'"
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1496)
	at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:1778)
	at org.hibernate.loader.Loader.doQuery(Loader.java:662)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
	at org.hibernate.loader.Loader.doList(Loader.java:2211)
	... 30 more

Eu não sei se pode ser permissão verificando a mensagem Syntax error or access violation, message from server: “SELECT command denied to user ‘wrvirtua_root’@‘200-171-78-51.dsl.telesp.net.br’ for table ‘empresa’”

meu persistence.xml esta assim:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
    
	<persistence-unit name="webBoleto"
		transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<class>com.wr.business.jpa.Email</class>
		<class>com.wr.business.jpa.Projeto</class>
		<class>com.wr.business.jpa.Bancario</class>
		<class>com.wr.business.jpa.Empresa</class>
		<properties>
			<property name="hibernate.connection.driver_class"
				value="com.mysql.jdbc.Driver" />
			<property name="hibernate.connection.url"
				value="jdbc:mysql://ip_do_servidor_mysql/wrvirtua_projeto" />
			<property name="hibernate.connection.username" value="root" />
			<property name="hibernate.connection.password" value="senha" />
		</properties>
	</persistence-unit>

</persistence>

alguem já passou por isso?

grato

O banco esta la, mas e a sua aplicação não pelo geito? Imagino que esteja na sua maquina e tentando conectar com banco de lá, por isso o mysql não ta deixando seu ip acessar, no meu host tenho como definir o ips que pode conectar com o banco. Você tem que abrir acesso ao banco pelo seu ip ‘200-171-78-51’.

Estou tentando acessar da minha maquina justamente porque quando publico lá, ele dá o mesmo erro.
No minha administração de hospedagem, eu consigo setar para quem devo liberar acesso. Eu deixei com acesso liberado %.

pois é, no meu host pelo cpnal esse ‘%’ não funciona bem… mas estranho a aplicação estando lá não teria porque dar o erro, ao menos que o banco esteja em maquina diferente, no meu fica o ip da rede interna do banco mas o proprio pessoal do host que setou… esse erro que vc mostrou foi pela sua maquina pelo ip e quando roda lá qual erro que deu?? ja deve ter tentado o 2 tipo de conexão (localhost, 127.0.0.1) ok?

Ja testei com localhost publicando minha aplicação na mesma host do banco e deu o mesmo erro. vou tentar com 127.0.0.1.
Uma duvida, no tutorial da hospedagem diz que a URL da conexão não precisa da porta 3306, isto é correto??

Apesar do mysql usar essa porta mesmo, eu nunca informa ela na aplicação…

é …fiz todos os testes possiveis, criei novamente o banco, de previlégios ALL, publiquei na hospedagem o sistema e o fiz acessar usando localhost, 127.0.0.1, etc…
e o erro ainda persiste!

Estranho… esse erro me parece ser do banco mas posso estar enganado… na dúvida faria uma conexao diretão, script jsp mesmo conectando direto pra tirar a dúvida se é o banco ou não…

Olá amigo.
Isso tá parecendo erro de dialeto de banco.

Insira mais essa property no seu persistence.xml:

Espero ter ajudado.
Att,
Fernando

não sei se será util mas eu tive alguns problemas tbm. confira:

1-sistema operacional (se linux então cuidado com sql pois será case sensitive, se sua maquina é window ai sql não levara em consideração )
2-versão do mysql.
3-engine da tabela- MyISAM ou INoDB (pois nesta ultima contem chave estrangeira) pois para cada sql instalado existe um arquivo de configuração dele que define o engine padrão no meu caso o do servidor era myisam e o da minha maquina era innodb (mais novo)