2012-11-14 17 views
7

Właśnie rozpoczął pracę z Hibernate i kiedy ja wreszcie próbuje uruchomić aplikację internetową pojawia się następujący błąd:nie można połączyć się z MySQL - host niedozwolone

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" 

który jest naprawdę frustrujące. Dlaczego nie jestem lokalnym hostem? Co to jest 192.168.1.7? Mogę po prostu przyznać przywileje, takie jak odpowiedzi na podobne pytania, ale dlaczego nie mam lokalnego hosta?

Rozumiem tutaj problem, ustawienie hbm2ddl jest ustawione, aby utworzyć, więc chce utworzyć podane tabele, ale nie uzyska zezwolenia od serwera MySQL.

Zajmuję się tworzeniem aplikacji struts2/hibernate w Eclipse i używam Tomcat i oczywiście MYSQL.

Z góry dziękuję!

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> 

Odpowiedz

10

Sprawdź w pliku konfiguracyjnym hibernacji. Jest wpis z

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

Musisz zmienić ten wpis, aby połączyć się z mysql na localhost.

Następne spojrzenie na mysql. Połączyć się z MySQL i sprawdź przywilejów:

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

Jeśli nie istnieją żadne dotacje na odpowiedniej bazy danych lub tabel, dodaj je:

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

lub

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

a następnie

mysql> flush privileges;

+1

jdbc: mysql: // localhost: 3306/ubrania jest już localhost, jak widać –

+0

Ok, a inne właściwości są również ustawione na prawidłowe wartości? –

+0

Sprawdź Edytuj w pytaniu powyżej, nie sądzę, że błąd jest jednak, sprawdź to proszę! –

6

uruchomić to polecenie na przykład MySQL (wymienić żetony)

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

ten pozwoli Ci połączyć się z dowolnego hosta mysql . 192.168.1.7 to ip twojego komputera.

Jeśli chcesz zabezpieczyć swoją instancję db, przeczytaj ten fragment mysql documentation.

+1

Co masz na myśli ip mojego komputera? IP mojego komputera w mojej sieci domowej? Czy nie ma możliwości połączenia się jako localhost? –

0

Istnieje kilka etapów wh ich musisz zrobić:

Krok 1: wykonaj konfigurację na moim.conf

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

Krok 2: przejdź do polecenia mysql (("your_remote_ip" jest komputer, który chce uzyskać dostęp do MySQL))

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

Krok 3: można sprawdzić swoją konfigurację na mysql

use mysql; 

select user, host from user; 

Krok 4: uruchom ponownie mysql

sudo /etc/init.d/mysql restart 
Powiązane problemy