2013-05-13 5 views
5

के लिए एक्सेस अस्वीकार कर दिया गया है, मैं अपने स्थानीय MYSQL डेटा बेस से कनेक्ट करना चाहता हूं, जो XAMP सर्वर के साथ स्थापित है। मैंने एक नया उपयोगकर्ता यानी "न्यू यूज़र" बनाया और इसका पासवर्ड "पासवर्ड" है। मैंने इस प्रयोक्ता को सभी प्राइवेट दिए।उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: YES)

मैं उपयोगकर्ता "रूट" (इस उपयोगकर्ता के लिए कोई पासवर्ड नहीं) का उपयोग करके डेटा बेस से कनेक्ट करने के लिए कोड लिखता हूं। इसकी जुड़ाव। जैसा bellow ..

return DriverManager.getConnection("jdbc:MySql://localhost/database_name","root",""); 

अब मैं किसी अन्य उपयोगकर्ता यानी, "NEWUSER" और इसके pasword "password"

return DriverManager.getConnection("jdbc:MySql://localhost/database_name","NewUser","password"); 

लेकिन इसकी कनेक्ट नहीं द्वारा एक ही डेटा बेस के साथ कनेक्ट करने कोड लिखा था। कंसोल में त्रुटि के रूप में "किसी भी मेजबान" यानी,

java.sql.SQLException: Access denied for user 'NewUser'@'localhost' (using password: YES) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:925) 
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1704) 
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1250) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2465) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
    at sun.reflect.GeneratedConstructorAccessor207.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317) 
    at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.createConnection(JDBCConnection.java:214) 
    at org.eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.java:105) 
    at org.eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.java:54) 
    at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.open(JDBCConnection.java:73) 
    at org.eclipse.datatools.enablement.internal.mysql.connection.JDBCMySQLConnectionFactory.createConnection(JDBCMySQLConnectionFactory.java:28) 
    at org.eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.java:83) 
    at org.eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.java:359) 
    at org.eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.java:76) 
    at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:59) 
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) 

जबकि इस उपयोगकर्ता के लिए विशेषाधिकार प्रदान करने मैं मेजबान प्रकार देना है। "%"।

यदि मैं इसे "लोकलहोस्ट" या "127.0.0.1" में बदलता हूं तो यह काम करता है।

तो मैं अपने उपयोगकर्ता को "न्यूहोसर" जैसे विशेष उपयोगकर्ता को "anyhost" प्राइवेट के साथ कैसे उपयोग कर सकता हूं।

अगर मैं यहाँ सफलता मिल गया तो मैं ग्राहक को लाइव डाटा बेस के लिए कनेक्शन में सफलता ..

सभी को धन्यवाद और मुझे बाहर इस एक से तो कृपया .....

+0

क्या आप 'mysql -u newUser -h localhost -p' का उपयोग कर कंसोल से कनेक्ट कर सकते हैं? – Sal00m

उत्तर

0
  1. अपने URL है सभी लोअरकेस होना - `JDBC: MySQL: // स्थानीय होस्ट/Database_Name"
  2. अपने डेटाबेस वास्तव में Database_Name कहा जाता है
+0

वह कहता है कि कनेक्शन स्ट्रिंग रूट के लिए काम करती है तो अन्य उपयोगकर्ता के लिए समस्या क्यों होनी चाहिए? –

+0

या, डेटाबेस नाम मैंने दिया है "डेटाबेस_नाम" और यूआरएल सही है। यदि यह गलत है तो यह भी पहले मामले में विफल रहता है लेकिन इसकी नहीं .. –

+2

क्या उपयोगकर्ता [mysql में बनाया गया है] (http://dev.mysql.com/doc/refman/5.1/en/create-user.html) और उपयोगकर्ता ने कहा [स्थानीयहोस्ट पर डेटाबेस_नाम तक पहुंचने की अनुमति है] (http://dev.mysql.com/doc/refman/5.1/en/grant.html)? – hd1

0

इस वाक्य का प्रयास करें

+०१२३५१६४१०६?
return DriverManager.getConnection("jdbc:mysql://localhost/database_name?user=NewUser&password=your_password_here"); 

संपादित करें (सिर्फ अपना पासवर्ड, जहां "your_password_here" की जगह) - दूसरा अनुमान: इसकी संभव आप 192.168.x.x रेंज को अवरुद्ध करके अपने आप को फायरवाल है।

मुझे लगता है कि आप विंडोज चल रहे हैं। कमांड प्रॉम्प्ट खोलें, "ipconfig" टाइप करें एंटर दबाएं। अपने आईपीवी 4 एड्रेस (1 9 2.168.1.एक्स की तरह कुछ होना चाहिए)

सुनिश्चित करें कि आपका एंटीवायरस/फ़ायरवॉल प्रोग्राम 192.168.1.x (जो स्वयं है) से कनेक्शन की अनुमति देता है और फिर "%" के बजाय इसका उपयोग करने का प्रयास करें या "लोकलहोस्ट"

यदि यह काम नहीं करता है, तो अपने सभी फ़ायरवॉल/एंटीवायरस को बंद करें और पुनः प्रयास करें।

भी विशेषाधिकार पुन: लोड या तो द्वारा की कोशिश:

  • पुनरारंभ XAMPP
  • फ्लश विशेषाधिकारों;
+0

धन्यवाद, लेकिन फिर भी यह वही त्रुटि उत्पन्न करता है ... "उपयोगकर्ता के लिए एक्सेस अस्वीकृत" @ शार्की –

1

पहले निर्दिष्ट कोड काम करता है और रिपोर्ट किए गए ट्रेस के आधार पर भी, मुझे पूरा यकीन है कि समस्या डेटाबेस पर है, न कि कोड सिंटैक्स।

MySQL संस्करण के आधार पर, किसी भी होस्ट (%) Mysql documentation के आधार पर के रूप में निर्दिष्ट किए बिना विशेषाधिकार स्थापित करने के लिए एक विकल्प के रूप में प्रयास करें,

साधारण से फ़ॉर्म user_name user_name के लिए एक पर्याय है @ '%'

इसके अलावा फ्लश विशेषाधिकार तुरंत FLUSH PRIVILEGES;

का उपयोग कर बस सुनिश्चित करें कि सब कुछ सही है बनाने के लिए के बाद, यह भी एक चलानेऔर जांचें कि संबंधित अनुमतियों के साथ सूची में न्यूयूसर दिखाई देता है या नहीं।

0

उपयोगकर्ताओं को आपके डेटाबेस तक पहुंच प्रदान करने के लिए, आपको एक होस्ट निर्दिष्ट करने की आवश्यकता है जहां उन्हें कनेक्ट करने की अनुमति दी जानी चाहिए। लेकिन कृपया सावधान रहें: यहां तक ​​कि यदि आप होस्ट नाम के रूप में वाइल्डकार्ड (%) का उपयोग करते हैं, तो उपयोगकर्ता स्थानीयहोस्ट से कनेक्ट नहीं हो सकता है। वे किसी भी मेजबान से कनेक्ट कर सकते हैं, लेकिन स्थानीयहोस्ट से नहीं। स्थानीयहोस्ट से कनेक्ट करते समय, मुझे लगता है कि आपकी mysql स्थापना आपको अज्ञात उपयोगकर्ता मानती है। किसी उपयोगकर्ता को स्थानीयहोस्ट से कनेक्ट करने की अनुमति देने के लिए, आपको होस्ट फ़ील्ड में "localhost" के साथ एक अलग उपयोगकर्ता जोड़ना होगा।

अधिक जानकारी के लिए, करने के लिए MySQL documentation

से दो खाते मोंटी के एक उपयोगकर्ता नाम और some_pass की एक पासवर्ड है देखें। दोनों खाते कुछ भी करने के लिए पूर्ण विशेषाधिकार के साथ सुपरसियर खाते हैं। 'मॉन्टी' @ 'लोकलहोस्ट' खाता केवल तभी उपयोग किया जा सकता है जब स्थानीय होस्ट से कनेक्ट होने पर । मेजबान भाग के लिए 'मॉन्टी' @ '%' खाता '%' वाइल्डकार्ड का उपयोग करता है, इसलिए इसका उपयोग किसी भी होस्ट से कनेक्ट करने के लिए किया जा सकता है।

मोंटी के रूप में कहीं से भी कनेक्ट करने में सक्षम होने के लिए दोनों खातों के लिए मोंटी होना आवश्यक है। स्थानीयहोस्ट खाते के बिना, स्थानीयहोस्ट के लिए अनाम-उपयोगकर्ता खाता द्वारा बनाया गया है mysql_install_db प्राथमिकता लेता है जब मॉन्टी स्थानीय होस्ट से कनेक्ट होता है। नतीजतन, मॉन्टी को अज्ञात उपयोगकर्ता के रूप में माना जाएगा। इसका कारण यह है कि अज्ञात उपयोगकर्ता खाते में 'monty' @ '%' खाते की तुलना में विशिष्ट होस्ट कॉलम मान है और इस प्रकार उपयोगकर्ता तालिका क्रम क्रम में आता है। (उपयोगकर्ता तालिका छंटाई धारा 6.2.4 में, "प्रवेश नियंत्रण, चरण 1: कनेक्शन सत्यापन" चर्चा की है।)

0

विशेषाधिकार उपयोगकर्ताओं/विशेषाधिकार/संपादित करने के लिए जाना/ पासवर्ड बदलें या अपडेट कोई पासवर्ड का चयन करें हाइबरनेट कॉन्फ़िगरेशन फ़ाइल में पासवर्ड और सर्वर को पुनरारंभ करें।

संबंधित मुद्दे

 संबंधित मुद्दे