"उपयोगकर्ता 'परीक्षण' @ 'आईपी' (पासवर्ड का उपयोग करके:हाँ) के लिए प्रवेश निषेध" एक MySQL त्रुटि है।
इसका मतलब है कि नेटवर्क स्तर पर सब कुछ काम कर रहा है , क्योंकि पहुंच से वंचित होने के कारण दिए गए उपयोगकर्ता के रूप में , सर्वर यह समझ गया होगा कि आप किस उपयोगकर्ता के रूप में कनेक्ट करने का प्रयास कर रहे थे . तो नेटवर्क, फ़ायरवॉल, रूटिंग, इत्यादि इत्यादि, सभी काम कर रहे होंगे; सर्वर अवश्य सुन रहा होगा, आदि..
समस्या प्रमाणीकरण . में "बस" है ।
स्थानीय रूप से डेटाबेस से कनेक्ट करने का प्रयास करें (प्रमाणीकरण को ओवरराइड करने के लिए) और विशेषाधिकार तालिका का निरीक्षण करें:
USE mysql;
SELECT User, Host, Password from user WHERE User = 'test';
और याद रखें कि जिस पंक्ति में आप रुचि रखते हैं वह IP का उल्लेख करने वाली पंक्ति है (चूंकि त्रुटि संदेश IP निर्दिष्ट करता है , और नहीं होस्ट नाम - इस मामले में, यह एक DNS समस्या हो सकती है; होस्ट नाम होस्टनाम है जिसे सर्वर मानता है कि आप आ रहे हैं , उस होस्टनाम से नहीं जिससे आप वास्तव में आ रहे हैं)।
उपयोगकर्ता/होस्ट मिलान अधिक विशिष्ट<से होता है /मजबूत> से कम विशिष्ट . तो अगर आपके पास पहले से था:
user host password
test 1.2.3.4 foo
और भाग गया,
GRANT... TO [email protected]'%' ... PASSWORD bar
...यह अनुदान हर जगह से काम करेगा सिवाय 1.2.3.4, जहां पासवर्ड 'फू' रहेगा।
मैनुअल से (उपरोक्त लिंक):
आपको ऐसा करने के लिए मजबूर किया जा सकता है
USE mysql;
DELETE FROM user WHERE User = 'test';
GRANT ALL PRIVILEGES ON database.* TO 'test'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
यह सुनिश्चित करने के लिए कि उपयोगकर्ता 'परीक्षण' के संदर्भ में अनुदान तालिका में कोई नकली रेखाएं नहीं हैं।
(साथ ही, अनुदान होना चाहिए, मुझे लगता है,
GRANT ALL PRIVILEGES ON databasename.*
)
सुरक्षा संदेह (उत्तर से असंबंधित)
ऊपर दिया गया मैनुअल कहता है:एक शाब्दिक आईपी पते की विशिष्टता इससे प्रभावित नहीं होती है कि इसमें नेटमास्क है या नहीं, इसलिए 192.168.1.13 और 192.168.1.0/255.255.255.0 को समान रूप से विशिष्ट माना जाता है ।
अब पहली नज़र में 127.0.0.1/0.0.0.0
लोकलहोस्ट . के लिए बहुत विशिष्ट (और हानिरहित) लगता है . नेटमास्क, अगर मैं गलत नहीं हूँ, यह सुनिश्चित करता है कि यह %
. के बराबर है , सिवाय इसके कि यह अविश्वसनीय रूप से विशिष्ट है और पहले चलेगा . इसलिए
test bar %
test localfoo 127.0.0.1/0.0.0.0
इसका मतलब है कि test
. के लिए पासवर्ड कहीं से भी यह "बार" बिल्कुल नहीं है, लेकिन यह "लोकलफू" है।
कोई भी ऐसा अनुदान गलती से नहीं डालेगा, लेकिन गलती और गलती . है ।