रूट पासवर्ड सेट करने के बाद MYSQL अभी भी मुझे पासवर्ड के बिना लॉगिन करने की अनुमति क्यों देता है?


10

रूट पासवर्ड सेट करने के बाद MYSQL अभी भी मुझे कमांड लाइन से पासवर्ड के बिना लॉगिन करने की अनुमति क्यों देता है? मैं रूट यूनिक्स प्रॉम्प्ट पर "mysql" टाइप कर सकता हूं और यह बिना पासवर्ड के पूछता है और फिर भी मुझे रूट एक्सेस की अनुमति देता है। मुझे समझ नहीं आ रहा है कि "mysql -u root" अब मुझसे उस पासवर्ड के लिए नहीं पूछ रहा है जो मैंने खाते में सेट किया था।

इसके अलावा, मैं एक दूरस्थ मशीन से 'रूट' के रूप में mysql में प्रवेश नहीं कर सकता। क्या मैंने इसे नीचे सही तरीके से कॉन्फ़िगर नहीं किया है? मुझे त्रुटि मिलती है: "होस्ट ... को इस MySQL सर्वर से कनेक्ट करने की अनुमति नहीं है। क्या मैंने इसे '%' के लिए कॉन्फ़िगर नहीं किया है?

यहाँ मेरी उपयोगकर्ता तालिका है:

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| %         | root |                                           |
| 127.0.0.1 | root |                                           |
| ::1       | root |                                           |
| localhost |      |                                           |
| %         |      |                                           |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)

जवाबों:


4

ऐसा लगता है कि पासवर्ड 'root'@'localhost'उपयोगकर्ता प्रविष्टि पर सेट है , लेकिन प्रविष्टि पर नहीं 'root'@'%'; उसके आधार पर पासवर्ड मुक्त प्रमाणीकरण की अनुमति होगी।

सुरक्षा उद्देश्यों के लिए, कहीं से भी रूट एक्सेस की अनुमति देने पर पुनर्विचार करें। यदि आपको इसकी आवश्यकता है, तो बस लोकलहोस्ट विनिर्देशों से छुटकारा पाएं:

drop user 'root'@'localhost';
drop user 'root'@'127.0.0.1';
drop user 'root'@'::1';

और 'root'@'%'उपयोगकर्ता के लिए पासवर्ड सेट करें:

set password for 'root'@'%' = password('passwordhere');

यही कारण था कि मुझे कुछ चाहिए था और फिर कुछ। धन्यवाद। मैं अनिश्चित था कि सुरक्षित निकालने के लिए क्या सुरक्षित था या नहीं और आपने मेरे प्रश्न का उत्तर दिया। बहुत बढ़िया जवाब। :-)
djangofan

4

ठीक है, जवाब उस तालिका में सही है - आपको "रूट" लाइनों को हटाने की आवश्यकता है जिसमें कोई पासवर्ड सूचीबद्ध नहीं है।

इसके अलावा, ऐसा लगता है कि आप किसी भी उपयोगकर्ता या पास का उपयोग करते समय कहीं से भी (?!) कनेक्शन की अनुमति देते हैं। शायद एक बुरा विचार है। मैं कुछ करना चाहता हूँ:

mysql> use mysql;
mysql> delete from user where password = "";

2

FLUSH PRIVILEGES को न भूलें या फिर आप पासवर्ड के बिना भी लॉगिन कर सकते हैं।

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