2012-11-14 12 views
7

Ho appena iniziato a lavorare con Hibernate e quando sto finalmente cercando di lanciare la web-app ottengo il seguente errore:Impossibile connettersi a MySQL - ospite non ammessi

2012-nov-14 12:54:23 org.hibernate.tool.hbm2ddl.SchemaExport execute 
ERROR: HHH000231: Schema export unsuccessful 
java.sql.SQLException: null, message from server: "Host '192.168.1.7' is not allowed to 
connect to this MySQL server" 

Che è davvero frustrante. Perché non sono un localhost? Che cos'è 192.168.1.7? Potrei semplicemente concedere privilegi come suggeriscono le risposte a domande simili, ma perché non sono localhost?

Capisco il problema qui, l'impostazione hbm2ddl è impostata per la creazione, quindi vuole creare le tabelle specificate ma non ottiene l'autorizzazione dal server MySQL.

Sto sviluppando un'app struts2/hibernate in Eclipse e utilizzo Tomcat e ovviamente MYSQL.

Grazie in anticipo!

EDIT: (hibernate.cfg.xml)

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD//EN" 
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory> 
    <property name="connection.driver_class"> com.mysql.jdbc.Driver</property> 
    <property name="connection.url">jdbc:mysql://localhost:3306/clothes</property> 
    <property name="connection.username">root</property> 
    <property name="connection.password">root</property> 

    <property name="connection.pool_size">1</property> 
    <property name="dialect"> org.hibernate.dialect.MySQLDialect</property> 

    <property name="show_sql">true</property> 

    <!-- Needs to be disabled in production! --> 
    <property name="hbm2ddl.auto">create</property> 

    <mapping class="johanstenberg.clothes.serverobjects.AdEntity"/> 
    <mapping class="johanstenberg.clothes.serverobjects.AuthenticationEntity"/> 
    <mapping class="johanstenberg.clothes.serverobjects.UserEntity"/> 
    <mapping class="johanstenberg.clothes.serverobjects.VerificationKeyEntity"/> 
</session-factory> 
</hibernate-configuration> 

risposta

10

Cerca nel file di configurazione di sospensione. C'è una voce con

<property name="connection.url"> ... </property>

È necessario modificare questa voce per connettersi a mysql su localhost.

Avanti guarda in mysql. Connettersi a MySQL e di controllo dei privilegi:

$ mysql -u root -p
mysql> show grants for 'root'@'localhost';
mysql> show grants for 'root'@'192.168.1.7';

Se non ci sono borse di studio per il database o tabelle del caso, aggiungerli:

mysql> grant all privileges on clothes.* to 'root'@'localhost' identified by 'password';

o

mysql> grant all privileges on clothes.* to 'root'@'192.168.1.7' identified by 'password';

e poi

mysql> flush privileges;

+1

jdbc: mysql: // localhost: 3306/clothes è già localhost come si può vedere –

+0

Ok, e anche le altre proprietà sono impostate su valori corretti? –

+0

Controlla la modifica nel post di domanda qui sopra, non penso che l'errore ci sia, dai un'occhiata per favore! –

6

eseguire questo comando sull'istanza di MySQL (sostituire i token)

CREATE USER '${username}'@'%' IDENTIFIED BY '${password}'; 
GRANT ALL ON *.* TO '${username}'@'%'; 

questo vi permetterà di connettersi a MySQL da qualsiasi host . 192.168.1.7 è l'ip del tuo computer.

Se si desidera proteggere l'istanza di db, leggere questo bit di mysql documentation.

+1

Cosa intendi ip del mio computer? Ip del mio computer nella mia rete domestica? Non c'è un modo per connetterti come localhost? –

0

Ci sono passaggi diversi che Che devi fare:

Step1: fare qualche configurazione sul mio.conf

sudo vi /etc/mysql/my.cnf 
bind-address = 0.0.0.0 

Step2: andare al comando di mysql (("your_remote_ip" è il PC che vuole accedere al tuo mysql))

mysql -u root -p 
GRANT ALL PRIVILEGES ON *.* TO 'your_mysql_username'@'your_remote_ip'IDENTIFIED BY 'your_mysql_password' WITH GRANT OPTION; 

Fase 3: è possibile controllare la sua configurazione su MySQL

use mysql; 

select user, host from user; 

Fase 4: riavviare il mysql

sudo /etc/init.d/mysql restart 
Problemi correlati