2013-02-26 165 views
6

मेरे पास एक सी # एप्लिकेशन है जो किसी अन्य कंप्यूटर पर एक MySQL सर्वर तक पहुंच जाएगा। मैं इसे आईपी के माध्यम से करने की कोशिश कर रहा हूं।सी # का उपयोग कर दूरस्थ MySQL सर्वर से कैसे कनेक्ट करें?

server = "192.168.10.221"; 
database = "restaurantdb"; 
uid = "root"; 
password = ""; 
string connectionString; 
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 
mycon = new MySqlConnection(connectionString); 

अब विचार है, मैं इसे इंटरनेट या वाई-फाई कनेक्शन जिस पर कंप्यूटर के दोनों से जुड़े हैं के माध्यम से कनेक्ट होगा: यहाँ मेरी कनेक्शन स्ट्रिंग है। मैं फिर सी # पर कोडित एसक्यूएल स्ट्रिंग्स के माध्यम से डेटाबेस तक पहुंच जाएगा। अब मैं उन्हें लैन नेटवर्किंग के माध्यम से भी जोड़ सकता हूं लेकिन मुझे नहीं पता कि कैसे।

मैं अपने कोड

{"Access denied for user 'root'@'Crave-PC.lan' (using password: NO)"} System.Exception {MySql.Data.MySqlClient.MySqlException} 

कोई भी विचार कैसे मैं नेटवर्किंग के माध्यम से सर्वर का उपयोग कर सकते में इस अपवाद मिल रहा है?

+1

क्या आप सुनिश्चित हैं कि आपका पासवर्ड गलत नहीं है? यह कनेक्ट होता है, हालांकि आपको पहुंच से वंचित त्रुटि मिलती है, इसलिए संभवतः आपके क्रेडेंशियल्स में कुछ गड़बड़ है, जैसा कि यह कहता है। शायद रूट केवल स्थानीयहोस्ट से लॉगिन करने की अनुमति है। उस उपयोगकर्ता को बनाएं जिसकी दूरस्थ पहुंच है। – AmazingDreams

+0

मैं ऐसे होस्ट को कैसे बना सकता हूं जिसमें दूरस्थ रूप से पहुंच हो? मेरे पास वर्कबेंच स्थापित है –

+0

मेरे पास यहां एक उपयोगकर्ता है जिसे 'रूट' नाम दिया गया है और उसके पास कोई पासवर्ड नहीं है –

उत्तर

6

समस्या MySQL सर्वर पक्ष पर है, रूट उपयोगकर्ता को दूरस्थ रूप से कनेक्ट करने की अनुमति नहीं है। remotelly कनेक्ट करने के लिए मूल प्रयोक्ता permisions देने के लिए सिर्फ एक mysql कमांड लाइन पर इस टाइप करें:

GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY 'rootPass'; 

बस अपने वर्तमान रूट पासवर्ड के लिए परिवर्तन 'rootPass', अगर जड़ नहीं करता पासवर्ड है MySQL अभ्यस्त तुम इतनी कनेक्ट आपके पास होगा इसके लिए एक परिभाषित करने के लिए।

एक तरफ नोट: एक सुरक्षा सर्वोत्तम अभ्यास के रूप में आपको क्लाइंट अनुप्रयोगों से अपने mysql डेटाबेस तक पहुंचने के लिए रूट के अलावा किसी अन्य उपयोगकर्ता को परिभाषित करना चाहिए।

आशा है कि यह मदद करता है, इस सूत्र के लिए

+0

बहुत बहुत धन्यवाद! मुझे तुम्हारा बहुत श्रेय है! –

+0

xampp का उपयोग कर im। अगर मैं phpmyadmin का उपयोग कर रहा हूं तो मैं उस mysql कमांड लाइन तक कैसे पहुंच सकता हूं? – Kokombads

0

एक अतिरिक्त:

कुछ मामलों में जहां दो कंप्यूटर एक ही नेटवर्क से जुड़े हैं में, कनेक्शन स्ट्रिंग ऊपर परिभाषित अभी भी के विन्यास के बावजूद काम नहीं कर सकते स्रोत कंप्यूटर और क्लाइंट कंप्यूटर से उपयोगकर्ता के लिए विशेषाधिकार प्रदान करना।

ऐसे मामलों में, कृपया "आगे बढ़ने से पहले और कंप्यूटर कंप्यूटर पर अधिक गंभीर कार्रवाई करना जैसे कि माइस्क्ल कॉन्फ़िगरेशन फ़ाइल इत्यादि के संशोधन के रूप में)" कंप्यूटर नाम का उपयोग आईपी पते के बजाय सर्वर नाम के रूप में करें "पर विचार करें।

यानी

  • पहले जैसा कि ऊपर वर्णित उपयोगकर्ता के लिए विशेषाधिकार देते हैं,
  • लेकिन कनेक्शन स्ट्रिंग ऊपर प्रस्तावित के बजाय , निम्नलिखित कनेक्शन स्ट्रिंग का प्रयास करें:
तो

, कनेक्शन स्ट्रिंग इस तरह दिखेगी:

server = "pc-name-whateveritis"; 
database = "restaurantdb"; 
uid = "root"; 
password = ""; 
string connectionString; 
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 
mycon = new MySqlConnection(connectionString); 

स्रोत कंप्यूटर का नाम कई मामलों में काम कर सकता है स्रोत कंप्यूटर का आईपी पता त्रुटि देता है।

शुभकामनाएं!

0

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