MySQL/MariaDB (जैसे डेबियन स्ट्रेच, आदि) के नए संस्करणों में इस व्यवहार का सामना करने वाले उपयोगकर्ताओं को पता होना चाहिए कि mysql.user तालिका में, 'प्लगइन' नामक कॉलम है। यदि 'unix_socket' प्लगइन सक्षम है, तो रूट बिना पासवर्ड की आवश्यकता के कमांडलाइन के माध्यम से लॉग इन करने में सक्षम होगा। अन्य लॉग इन तंत्र अक्षम कर दिए जाएंगे।
यह जाँचने के लिए कि क्या ऐसा है:
SELECT host, user, password, plugin FROM mysql.user;
जिसे कुछ इस तरह वापस करना चाहिए (unix_socket सक्षम के साथ):
+-----------+------+--------------------------+-------------+
| host | user | password | plugin |
+-----------+------+--------------------------+-------------+
| localhost | root | <redacted_password_hash> | unix_socket |
+-----------+------+--------------------------+-------------+
इसे अक्षम करने के लिए और पासवर्ड का उपयोग करने के लिए रूट की आवश्यकता है:
UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;
नोट: जैसा कि MySQL के नए संस्करणों (जैसे 5.7.x) में @marioivangf (एक टिप्पणी में) द्वारा नोट किया गया है, आपको प्लगइन को 'mysql_native_password' (रिक्त के बजाय) पर सेट करने की आवश्यकता हो सकती है।
फिर पुनः आरंभ करें:
service mysql restart
समस्या ठीक हो गई!:
[email protected] ~# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
स्रोत:https://stackoverflow.com/a/44301734/3363571 @SakuraKinomoto को बहुत-बहुत धन्यवाद (यदि आपको यह उपयोगी लगे तो कृपया उनके उत्तर को वोट करें)।