2012-11-14 19 views
7

मैं सिर्फ हाइबरनेट के साथ काम शुरू कर दिया है की अनुमति नहीं दी और जब मैं अंत में वेब एप्लिकेशन मैं निम्नलिखित त्रुटि मिलती है शुरू करने के लिए कोशिश कर रहा हूँ:MySQL से कनेक्ट नहीं कर सकते - मेजबान

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" 

कौन वास्तव में निराशा होती है। मैं स्थानीयहोस्ट क्यों नहीं हूं? 1 9 2.168.1.7 क्या है? मैं सिर्फ समान प्रश्नों के उत्तर जैसे विशेषाधिकार प्रदान कर सकता हूं लेकिन मैं स्थानीयहोस्ट क्यों नहीं हूं?

मैं यहां समस्या को समझता हूं, hbm2ddl सेटिंग बनाने के लिए सेट है, इसलिए यह दिए गए टेबल बनाना चाहता है लेकिन MySQL-server से अनुमति प्राप्त नहीं है।

मैं एक्लिप्स में एक स्ट्रूट 2/हाइबरनेट ऐप विकसित कर रहा हूं और मैं टॉमकैट और निश्चित रूप से MYSQL का उपयोग करता हूं।

अग्रिम धन्यवाद!

संपादित करें: (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> 

उत्तर

10

अपनी हाइबरनेट कॉन्फ़िगरेशन फ़ाइल में देखें।

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

के साथ एक प्रविष्टि है, आपको स्थानीय प्रविष्टि पर mysql से कनेक्ट करने के लिए इस प्रविष्टि को बदलना होगा।

अगला mysql में देखें। mysql और चेक विशेषाधिकार से जोड़ना:

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

उपयुक्त डेटाबेस या तालिकाओं के लिए कोई अनुदान नहीं हैं, तो उन्हें जोड़ने:

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

या

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

और फिर

mysql> flush privileges;

+1

<संपत्ति का नाम = "connection.url"> jdbc: mysql: // localhost: 3306/कपड़े पहले से ही लोकहोस्ट है क्योंकि आप –

+0

ठीक देख सकते हैं, और अन्य गुण भी मानों को सही करने के लिए सेट हैं? –

+0

ऊपर दिए गए प्रश्न-पोस्ट में संपादित करें की जांच करें, मुझे नहीं लगता कि त्रुटि वहां है, कृपया इसे जांचें! –

6

रन अपने MySQL उदाहरण पर इस आदेश (टोकन की जगह)

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

इस आप किसी भी मेजबान से mysql से कनेक्ट करने की अनुमति देगा । 1 9 2.168.1.7 आपके कंप्यूटर का आईपी है।

यदि आप अपना डीबी उदाहरण सुरक्षित करना चाहते हैं, तो mysql documentation के इस बिट को पढ़ें।

+1

क्या क्या आपका मतलब है मेरे कंप्यूटर का आईपी? मेरे कंप्यूटर के आईपी मेरे घर नेटवर्क में? क्या मैं स्थानीयहोस्ट के रूप में कनेक्ट करने का कोई तरीका नहीं है? –

0

अलग-अलग चरण हैं ich आपको करने की ज़रूरत है:

चरण 1: मेरे पर कुछ कॉन्फ़िगरेशन करें।conf

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

चरण 2: mysql आदेश करने के लिए जाना (("your_remote_ip" पीसी जो अपने mysql) का उपयोग करना चाहता है)

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

चरण 3: आप mysql पर इसके विन्यास की जाँच कर सकते

use mysql; 

select user, host from user; 

चरण 4: पुनः आरंभ अपने mysql

sudo /etc/init.d/mysql restart 
संबंधित मुद्दे