2012-11-14 37 views
7

Tôi vừa mới bắt đầu làm việc với Hibernate và khi tôi cuối cùng cũng đang cố gắng để khởi động các ứng dụng web tôi nhận được lỗi sau:không thể kết nối với MySQL - máy chủ không được phép

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" 

Mà thực sự là bực bội. Tại sao tôi không phải là localhost? 192.168.1.7 là gì? Tôi chỉ có thể cấp các đặc quyền như câu trả lời cho các câu hỏi tương tự được đề xuất nhưng tại sao tôi không phải là localhost?

Tôi hiểu vấn đề ở đây, cài đặt hbm2ddl được thiết lập để tạo, vì vậy nó muốn tạo các bảng đã cho nhưng không nhận được sự cho phép từ máy chủ MySQL.

Tôi đang phát triển một ứng dụng struts2/hibernate trong Eclipse và tôi sử dụng Tomcat và tất nhiên là MYSQL.

Cảm ơn trước!

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> 

Trả lời

10

Nhìn vào tệp cấu hình ngủ đông của bạn. Có một mục nhập với

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

Bạn phải thay đổi mục nhập này để kết nối với mysql tại localhost.

Tiếp theo, hãy xem mysql. Kết nối ưu đãi mysql và kiểm tra:

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

Nếu không có tài trợ cho các cơ sở dữ liệu hoặc bảng thích hợp, thêm chúng:

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

hoặc

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

và sau đó

mysql> flush privileges;

+1

jdbc: mysql: // localhost: 3306/clothes đã là localhost như bạn có thể thấy –

+0

Ok, và các thuộc tính khác cũng được đặt thành giá trị đúng? –

+0

Kiểm tra Chỉnh sửa trong câu hỏi-đăng ở trên, tôi không nghĩ rằng lỗi là có mặc dù, hãy kiểm tra nó ra xin vui lòng! –

6

chạy lệnh này trên dụ MySQL của bạn (thay thế các thẻ)

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

này sẽ cho phép bạn để kết nối với mysql từ bất kỳ máy chủ . 192.168.1.7 là ip của máy tính của bạn.

Nếu bạn muốn bảo đảm phiên bản db của mình, hãy đọc bit này của mysql documentation.

+1

Điều gì bạn có nghĩa là ip của máy tính của tôi? Ip của máy tính của tôi trong mạng gia đình của tôi? Không có cách nào tôi có thể kết nối như localhost thay thế? –

0

Có các bước cắt ngang ich bạn cần phải làm:

Bước 1: thực hiện một số cấu hình trên máy tính của tôi.conf

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

Bước 2: vào lệnh mysql (("your_remote_ip" là pc mà muốn truy cập mysql của bạn))

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

Bước 3: bạn có thể kiểm tra cấu hình của nó trên mysql

use mysql; 

select user, host from user; 

Bước 4: khởi động lại mysql

sudo /etc/init.d/mysql restart 
Các vấn đề liên quan