mysql (mariadb) ERROR 1698 (28000): उपयोगकर्ता 'रूट' @ 'लोकल' के लिए प्रवेश निषेध


23

मैं Xubuntu 15.04 पर काम कर रहा हूं। मैंने पहले से ही विभिन्न प्रणालियों पर MariaDB- सर्वर स्थापित किया है और हमेशा स्थापना के दौरान रूट पासवर्ड के लिए कहा गया था। हालांकि, इस बार, मुझे पासवर्ड याद नहीं है। जब मैं पासवर्ड (या रिक्त पासवर्ड) के बिना लॉगिन करने का प्रयास करता हूं, तो मुझे Access denied for user 'root'@'localhost'त्रुटि मिलती है । मैंने पैकेज को पूरी तरह से अनइंस्टॉल करने की कोशिश की

sudo apt-get remove mariadb-server
sudo apt-get purge mariadb-server

जब मैंने पुनः इंस्टॉल किया, तब भी मुझे रूट पासवर्ड के लिए नहीं कहा गया था।

मैंने mysql के mysqld --skip-grant-tablesदृष्टिकोण की कोशिश की कि कैसे उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' के लिए एक्सेस अस्वीकृत को ठीक किया जाए । मैं mysql डेटाबेस में रूट उपयोगकर्ता के लिए पासवर्ड को संशोधित कर सकता हूं - कम से कम हैश मूल्य परिवर्तन - लेकिन मैं अभी भी mysql-server के पुनरारंभ होने के बाद नए पासवर्ड के साथ लॉगिन नहीं कर सकता। मुझे अब भी वही त्रुटि मिलती है।

उपयोगकर्ता डेबियन-सीस-मेन्ट मौजूद नहीं है। इसलिए, मैं इसे कुछ भी ठीक करने के लिए उपयोग नहीं कर सकता।

किसी भी विचार मैं और क्या कोशिश कर सकता है?


StackOverflow पर एक ही सवाल के साथ एक उपयोगी धागा: stackoverflow.com/questions/39281594/…
केविन -

जवाबों:


36

आपको पासवर्ड रीसेट करने की आवश्यकता है। उसके लिए तो

sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;

9
इस दृष्टिकोण के लिए गैर-स्पष्ट "जादू" यह है कि रूट ऑपरेटिंग सिस्टम उपयोगकर्ता एक पासवर्ड निर्दिष्ट करने के लिए बिना डेटाबेस में लॉग इन करने में plugin: auth_socketसक्षम है, क्योंकि डिफ़ॉल्ट रूप से सक्षम है। दूसरे शब्दों में, उपयोग करने की कोई आवश्यकता नहीं है --skip-grant-tablesजैसा कि MySQL संस्करणों में आवश्यक था। (इसके अलावा, तकनीकी रूप से, यह उपाय "पासवर्ड रीसेट नहीं कर रहा है"; यह एक प्लगइन को अक्षम कर रहा है।)
बेन जॉनसन

1
+1, क्या आप इसका कारण बता सकते हैं?
A1Gard

4
यह दृष्टिकोण बाद में समस्याएं पैदा करेगा। यदि आप प्लग-इन को अक्षम कर देते हैं, तो दैनिक क्रोन कार्य टूट जाएगा क्योंकि यह मान रहा है कि यह उस प्लग-इन के साथ लॉग इन कर सकता है। विवरण के लिए मेरा उत्तर देखें।
कॉलन

11

नए सेट-अप के साथ विचार यह है कि आपको पासवर्ड का उपयोग बिल्कुल नहीं करना चाहिए। देखें UNIX_SOCKET प्रमाणीकरण प्लगइन जानकारी के लिए।

उबंटू 16.04 पर /usr/share/doc/mariadb-server-10.0/README.Debian.gz की सामग्री विशेष रूप से प्रासंगिक है :

नए इंस्टॉल्स पर कोई रूट पासवर्ड सेट नहीं है और कोई भी डेबियन-सीस-मेन्ट उपयोगकर्ता अब नहीं बनाया गया है। इसके बजाय MariaDB रूट खाते को यूनिक्स सॉकेट का उपयोग करके प्रमाणित किया जाना है, उदाहरण के लिए रूट द्वारा या sudo के माध्यम से किसी भी mysqld मंगलाचरण को उपयोगकर्ता mysqld प्रॉम्प्ट को देखने देगा।

आप कभी भी mysql उपयोगकर्ता "रूट" को हटा नहीं सकते हैं। हालांकि इसका कोई पासवर्ड सेट नहीं है, लेकिन unix_auth प्लगइन यह सुनिश्चित करता है कि इसे केवल रूट उपयोगकर्ता के रूप में स्थानीय रूप से चलाया जा सकता है।

/Etc/mysql/debian.cnf में क्रेडेंशियल्स उस उपयोगकर्ता को निर्दिष्ट करते हैं जो सर्वर को रोकने और लॉगट्रेशन करने के लिए init स्क्रिप्ट द्वारा उपयोग किया जाता है। यह डेबियन-सीस-मेन्ट उपयोगकर्ता हुआ करता था जो अब रूट के रूप में उपयोग नहीं किया जाता है।

इसलिए यदि आप उस प्लग-इन को रूट के लिए अक्षम करते हैं और पासवर्ड सेट करते हैं, तो दैनिक क्रॉन जॉब टूट जाएगा क्योंकि यह मान रहा है कि यह पासवर्ड के बिना रूट के रूप में लॉग इन करेगा, लेकिन प्लग-इन के साथ।

बाद में यह कहता है:

लिपियों को चलाना चाहिए क्योंकि एक उपयोगकर्ता के पास आवश्यक अनुदान होते हैं और उन्हें unix_socket के माध्यम से पहचाना जाता है।

तो ऐसा लगता है कि पासवर्ड का उपयोग अब अनुप्रयोगों द्वारा नहीं किया जाना चाहिए।


1
मुझे आपके द्वारा वर्णित बहुत समस्या का सामना करना पड़ा है: "So if you disable that plug-in for root and set a password, the daily cron job will break as it's assuming it will log in as root without a password..."UNIX_SOCKET प्रमाणीकरण प्लगिन के गैर-स्पष्ट निहितार्थ को सक्षम किया जा रहा है (जो अब डिफ़ॉल्ट है) यह है कि पासवर्ड के साथ रूट डेटाबेस उपयोगकर्ता के रूप में प्रमाणित करने की क्षमता अक्षम है। Mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin पर कहीं भी इस सीमा का उल्लेख नहीं किया गया है। तदनुसार, SSH की तरह रूट के रूप में लॉगिन करना असंभव है।
बेन जॉनसन

2

मैंने इस पोस्ट के जवाब के बाद समस्या हल की:

MySQL (MariaDB) रूट पासवर्ड को रीसेट नहीं किया जा सकता

सभी के लिए mysql.user के प्लगइन क्षेत्र को एक रिक्त स्ट्रिंग में बदलना होगा।


यह समस्या यहाँ वर्णित है: percona.com/blog/2016/03/16/…
antonu17

3
यह दृष्टिकोण बाद में समस्याएं पैदा करेगा। यदि आप प्लग-इन को अक्षम कर देते हैं, तो दैनिक क्रोन कार्य टूट जाएगा क्योंकि यह मान रहा है कि यह उस प्लग-इन के साथ लॉग इन कर सकता है। विवरण के लिए मेरा उत्तर देखें।
कॉलन

1

मैंने इसे इस कमांड को चलाने के द्वारा किया, स्थापना के ठीक बाद:

$ sudo mysql_secure_installation

पहले चरण में, पासवर्ड रिक्त है, इसलिए बस Enter दबाएं।


1
यदि यह पहले से ही सेट है, तो यह रिक्त नहीं है, जो मेरा भूल गया pw है ... इसलिए अभी भी लॉग इन नहीं कर सकता
डेव एवरिट

0

मैं एक ही मुद्दे पर एक किशमिश पी खिंचाव के साथ था। मेरा समाधान निम्नलिखित करके सभी विशेषाधिकारों के साथ एक नया उपयोगकर्ता बनाना था:

sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root

MariaDB [(none)]> use mysql
MariaDB [mysql]> FLUSH PRIVILEGES;
GRANT ALL privileges ON mysql.* TO 'admin'@'localhost' with grant option;

अब मैं सुपरयुसर के रूप में उपयोगकर्ता "एडमिन" को लॉगिन कर सकता हूं।

मुझे उम्मीद है कि यह किसी की मदद करने वाला है।


0

बस उपयोग sudo mysql -u root- यही है


विवरण: नए संस्करण सिस्टम प्रमाणीकरण का उपयोग करके mysql को प्रमाणित करते हैं। तो अगर आप OS को sudo कर सकते हैं, तो यह मान लेता है कि आप db रूट भी हैं। आप इसे जारी करके इसकी पुष्टि कर सकते हैं sudo mysql -u root -e "USE mysql; SELECT User, Host, plugin FROM mysql.user;"। आपको कुछ इस तरह से देखना चाहिए (हो सकता है auth_socketकि अन्य डिस्ट्रोस के साथ)

+------+-----------+-------------+
| User | Host      | plugin      |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+

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