लिनक्स कमांड लाइन से MySQL क्रेडेंशियल्स का परीक्षण करें?


जवाबों:


5

@ फिल का उत्तर और @ मिस्टरबर्नस्टोन का उत्तर आपके प्रश्न के लिए पर्याप्त होना चाहिए, इसलिए उन दोनों के लिए +1।

निम्नलिखित के लिए, मान लें कि आप उपयोगकर्ता नाम के साथ लॉग इन कर रहे हैं myuser

एक बार जब आप mysql से जुड़ जाते हैं, तो आपको निम्नलिखित प्रश्न चलाने चाहिए:

SELECT USER(),CURRENT_USER();
  • USER () रिपोर्ट करता है कि आपने MySQL में कैसे प्रमाणित करने का प्रयास किया
  • CURRENT_USER () रिपोर्ट करता है कि आपको MySQL में प्रमाणित करने की अनुमति कैसे दी गई

कभी-कभी, वे अलग होते हैं। यह आपको इस बात की जानकारी दे सकता है कि आपको mysql में प्रवेश करने की अनुमति क्यों है।

यहाँ एक और क्वेरी है जिसे आपको चलाने की आवश्यकता है:

SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';

यह आपको उन तरीकों को दिखाएगा जिनमें आपको प्रवेश करने की अनुमति है myuser

यदि आप देखते हैं 'myuser'@'localhost', तो आप DB सर्वर के भीतर से प्रमाणित कर सकते हैं।

यदि आप देखते हैं 'myuser'@'127.0.0.1'और नहीं देखते हैं 'myuser'@'localhost', तो आप DB सर्वर के भीतर से फिर से प्रमाणित कर सकते हैं लेकिन आपको --protocol=tcpकमांड लाइन से निर्दिष्ट करना होगा ।

यदि आप देखते हैं 'myuser'@'%', तो आप किसी भी सर्वर से दूरस्थ लॉगिन कर सकते हैं।

यदि आप देखते हैं 'myuse'r@'10.20.30,%', तो आप केवल 10.20.30% से दूरस्थ लॉगिन कर सकते हैं।

एक बार जब आप देखते हैं कि 'mysql.user' में आपके उपयोगकर्ता के लिए क्या है, तो आप एक तरह से लॉगरिन से मायूसर को अनुमति देने या प्रतिबंधित करना चाह सकते हैं, दूसरे में नहीं।

यदि आप केवल यह जानना चाहते हैं कि पासवर्ड किसके लिए myuserहै whateverpassword, तो आप निम्न कार्य कर सकते हैं:

SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');

आप कमांड लाइन से निम्नानुसार जांच कर सकते हैं:

PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`

यदि आप नहीं हैं rootऔर केवल मायूसर का परीक्षण करना चाहते हैं, तो आप यह कर सकते हैं:

PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`

यदि आपको 1 मिलता है, तो myuser के लिए पासवर्ड अच्छे के रूप में सत्यापित है।


13
mysql -h host -u user -p<whatever> -e"quit"

यह आपको उसी कनेक्शन स्ट्रिंग का उपयोग करने की अनुमति देता है जिसका उपयोग आप प्रोग्राम को सर्वर से क्वेरी भेजने के लिए करते हैं। आप || exit 1अमान्य तर्कों पर ऑटो निकास के अंत में जोड़ सकते हैं । /dev/nullयदि आप स्वतः उत्पन्न MySQL त्रुटि संदेश पसंद नहीं करते हैं, तो आप stderr को पुनर्निर्देशित करना चाह सकते हैं ।


6

आप निम्न आदेश का उपयोग कर सकते हैं (यह मानते हुए कि आपके पास मेरे पेट में स्थापित है):

mysql -h host -u user -p

बस मेजबान और उपयोगकर्ता को सही मानों के साथ बदलें और फिर आपको अपने पासवर्ड के लिए संकेत दिया जाना चाहिए।


2
मैं प्रोग्रामेटिक रूप से जांच करना चाहता हूं। जैसे कोई ऐसी चीज जो सच्ची या झूठी लौटाती है।
जेक विल्सन

2
mysql --user=user_name --password=your_password dbname

क्या आपका प्रश्न सरल है, या क्या कोई विशिष्ट मामला है जिसे आपको परीक्षण करने की आवश्यकता है?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.