सबसे पहले, आप (कभी नहीं) उपयोग नहीं करना चाहिए mysql_ होना नहीं है * विस्तार और इसके कार्य अब और। वे पुराने हैं, बहिष्कृत हैं और निकट संस्करण में php से हटा दिए जाएंगे। mysqli_, या PDO का उपयोग करें। अधिक जानकारी के लिए the huge red warning at the top of the mysql_connect page in the php docs देखें।
- चेक कि आप ssh में अपने वेब सर्वर पर सही सर्वर
कनेक्ट करने के लिए कनेक्ट, और रूट के रूप में डेटाबेस सर्वर से कनेक्ट करने के लिए स्थानीय mysql ग्राहक का उपयोग (आप के लिए पासवर्ड के लिए कहा जाएगा रूट उपयोगकर्ता):
$ mysql -uroot -p -hXXXXXXX.XXXXXXXXXX.eu-west-1.rds.amazonaws.com
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 100530
Server version: 5.1.66-0+squeeze1 (Debian)
[...]
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
यदि यह काम है, तो आपको एक mysql प्रॉम्प्ट पर समाप्त होना चाहिए। यदि यह काम नहीं करता है, तो आपकी समस्या आपके नेटवर्क कॉन्फ़िगरेशन में निहित है, आपका वेबसर्वर MySQL सर्वर से कनेक्ट नहीं हो सकता है (पोर्ट्स खोलने की जांच करें)।
यकीन है कि प्रश्न में डेटाबेस सर्वर पर मौजूद
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| [... db names ...] |
+--------------------+
X rows in set (0.00 sec)
mysql>
आपको सूची में अपने डेटाबेस नाम नहीं देख सकते हैं, इसका मतलब है सर्वर phpmyadmin में अपने देखने सही नहीं है बनाओ एक; अपनी phpmyadmin सेटिंग्स की जांच करें। आप CLI mysql ग्राहक का उपयोग कर इस उपयोगकर्ता के साथ कनेक्ट कर सकते हैं
चेक। ध्यान दें कि मैं कनेक्शन लाइन पर डेटाबेस निर्दिष्ट नहीं करता हूं।
// close the root connection
mysql> quit
Bye
// connect using your specific user, replace USERNAME with your db user (and type its password when asked)
$ mysql -uUSERNAME -p
Enter password:
[...]
mysql>
इस विफल रहता है और आपको एक संदेश मिलता लिए नहीं मिलता है, तो यह हो सकता है क्योंकि या तो अनुमति नहीं है मौजूद है, या क्योंकि यह उपयोगकर्ता मेजबान से कनेक्ट नहीं कर सकता आपके द्वारा निर्दिष्ट। त्रुटि संदेश देखें mysql प्रदर्शित करेगा; कुछ इस तरह!
ERROR 1045 (28000): Access denied for user 'USERNAME'@'HOST' (using password: NO)
HOST में क्या है महत्वपूर्ण है और आपको यह सुनिश्चित करना होगा कि यह आपके विशेषाधिकारों में अनुमति है। अगर सबकुछ ठीक लगता है और यह अभी भी काम नहीं कर रहा है, तो उस उपयोगकर्ता के लिए विशेषाधिकारों को संपादित करने का प्रयास करें और HOST को '%' पर सेट करें (जिसका अर्थ है कि कुछ भी अनुमति है)। यदि यह इसके साथ काम करता है, तो इसका मतलब है कि HOST गलत तरीके से mysql के विशेषाधिकारों में कॉन्फ़िगर किया गया है।
जांचें कि क्या उपयोगकर्ता प्रश्न में डेटाबेस देख सकता है। जब आप किसी विशिष्ट उपयोगकर्ता से कनेक्ट होते हैं, तो "डेटाबेस दिखाएं" केवल डेटाबेस को सूचीबद्ध करेगा, इस उपयोगकर्ता को देखने के लिए विशेषाधिकार हैं।
mysql > show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| [... db names ...] |
+--------------------+
X rows in set (0.00 sec)
mysql>
आपको सूची में अपने डेटाबेस नहीं देख सकते हैं, इसका मतलब है उपयोगकर्ता के लिए विशेषाधिकार गलत/इस डेटाबेस के लिए सेट नहीं कर रहे हैं।
यहाँ हर चरणों ठीक काम करता है, तो यह शायद मतलब है कि आप अपने php कोड में कोई त्रुटि है, डबल मेजबान, पासवर्ड, उपयोगकर्ता नाम जांचें, ...
तुम सच में समझ नहीं सकता, तो
$ mysql -uroot -p -hXXXXXXX.XXXXXXXXXX.eu-west-1.rds.amazonaws.com
Enter password:
mysql > GRANT ALL ON yourdbname.* to 'testuser'@'%' IDENTIFIED BY 'dummypassword';
mysql > quit
Bye
// note that I give the password in the prompt directly, to make sure this isn't an input error just in case
$ mysql -utestuser -pdummypassword
mysql >
बार जब आप इस उपयोगकर्ता बना है और इसे करने के लिए कनेक्ट कर सकते हैं, अपने php का उपयोग कर इसे कनेक्ट करने का प्रयास: बाहर क्या विशेषाधिकार के कुछ हिस्सों गलत कर रहे हैं, किसी भी मेजबान से सभी अनुमतियों को एक डमी उपयोगकर्ता बनाने का प्रयास करें कोड। एक बार यह काम करने के बाद, उपयोगकर्ता को हटाएं (DROP USER 'testuser'
का उपयोग करके), इसे एक और सीमित HOST विशेषाधिकार के साथ फिर से बनाएं और फिर से प्रयास करें, जब तक आप अपनी इच्छित अनुमतियों को दोहराना नहीं चाहते।
उस उपयोगकर्ता को हटाने के लिए याद रखें और आप कर चुके हैं।
ठीक है, यह वास्तव में अच्छी प्रतिक्रिया है। मैंने क्वेरी 'शो डेटाबेस' चलाया और यह डेटाबेस 'info_schema', 'performance_schema',' mysql' और 'ckdb' सूचीबद्ध किया। लेकिन 'phpMyAdmin' में मैं केवल उपरोक्त दो स्कीमा देखता हूं, साथ ही 'mysql' प्लस जिन्हें मैंने' test' और 'test1'' बनाया है, लेकिन' ckdb' नहीं। मैं 'phpMyAdmin' में बनाए गए टेबल 'test' और' test1' को कैसे पढ़ूं और लिखूं? –
आह, ऐसा लगता है जैसे आपने अमेज़ॅन आरडीएस की बजाय phpMyAdmin के माध्यम से अपनी स्थानीय मशीन में डेटाबेस बनाए हैं। अमेज़ॅन आरडीएस को बाहरी डेटाबेस के रूप में उपयोग करने के लिए आपको phpMyAdmin को कॉन्फ़िगर करना होगा। इसे कॉन्फ़िगर करने के तरीके पर इस ट्यूटोरियल को देखें: 'http: // blog.benkuhl.com/2010/12/how-to-remotely-manage-an-amazon-rds-instance-with-phpmyadmin/'। और फिर आपको उस डेटाबेस का उल्लेख करना होगा जिसे आप डेटाबेस चयन बॉक्स पर क्वेरी चलाने के लिए चाहते हैं। – user568109