मैंने इस मुद्दे को ठीक करने के लिए कई कदम उठाए। इस मुद्दे के संभावित समाधान के लिए बहुत सारे स्रोत हैं जो बकवास से समझ को फ़िल्टर करना मुश्किल है। मुझे अंत में यहाँ एक अच्छा समाधान मिला :
चरण 1: डेटाबेस संस्करण की पहचान करें
$ mysql --version
आपको MySQL के साथ कुछ आउटपुट दिखाई देंगे:
$ mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
या इस तरह के उत्पादन के लिए MariaDB:
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
ध्यान दें कि आप किस डेटाबेस और किस संस्करण को चला रहे हैं, जैसा कि आप उन्हें बाद में उपयोग करेंगे। अगला, आपको डेटाबेस को रोकने की आवश्यकता है ताकि आप इसे मैन्युअल रूप से एक्सेस कर सकें।
चरण 2: डेटाबेस सर्वर को रोकना
रूट पासवर्ड बदलने के लिए, आपको पहले से डेटाबेस सर्वर को बंद करना होगा।
आप MySQL के लिए ऐसा कर सकते हैं:
$ sudo systemctl stop mysql
और MariaDB के लिए:
$ sudo systemctl stop mariadb
चरण 3: डेटाबेस सर्वर को बिना अनुमति जाँच के पुनः आरंभ करना
यदि आप उपयोगकर्ता विशेषाधिकारों के बारे में जानकारी लोड किए बिना MySQL और MariaDB चलाते हैं, तो यह आपको पासवर्ड प्रदान किए बिना डेटाबेस कमांड लाइन को रूट विशेषाधिकार के साथ एक्सेस करने की अनुमति देगा। इससे आप बिना जाने-समझे डेटाबेस तक पहुंच प्राप्त कर सकेंगे।
ऐसा करने के लिए, आपको डेटाबेस को अनुदान तालिकाओं को लोड करने से रोकना होगा, जो उपयोगकर्ता विशेषाधिकार जानकारी संग्रहीत करते हैं। क्योंकि यह एक सुरक्षा जोखिम का एक सा है, इसलिए आपको अन्य क्लाइंट्स को कनेक्ट होने से रोकने के लिए नेटवर्किंग को भी छोड़ देना चाहिए।
अनुदान तालिकाएँ लोड किए बिना या नेटवर्किंग सक्षम किए बिना डेटाबेस शुरू करें:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
इस आदेश के अंत में एम्परसैंड पृष्ठभूमि में इस प्रक्रिया को चलाएगा ताकि आप अपने टर्मिनल का उपयोग करना जारी रख सकें।
अब आप रूट उपयोगकर्ता के रूप में डेटाबेस से जुड़ सकते हैं, जिसे पासवर्ड नहीं मांगना चाहिए।
$ mysql -u root
आपको तुरंत इसके बजाय एक डेटाबेस शेल प्रॉम्प्ट दिखाई देगा।
MySQL शीघ्र
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
मारियाडीबी प्रॉम्प्ट
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
अब आपके पास रूट एक्सेस है, आप रूट पासवर्ड बदल सकते हैं।
चरण 4: रूट पासवर्ड बदलना
mysql> FLUSH PRIVILEGES;
अब हम वास्तव में रूट पासवर्ड बदल सकते हैं।
के लिए MySQL 5.7.6 और नए के साथ-साथ MariaDB 10.1.20 और नए , निम्न आदेश का उपयोग:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
के लिए MySQL 5.7.5 और पुराने के साथ-साथ MariaDB 10.1.20 और पुराने , उपयोग करें:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
new_password
अपनी पसंद के नए पासवर्ड से प्रतिस्थापित करना सुनिश्चित करें ।
नोट: यदि ALTER USER
कमांड काम नहीं करता है, तो यह आमतौर पर एक बड़ी समस्या का संकेत होता है। हालाँकि, आप UPDATE ... SET
इसके बजाय रूट पासवर्ड रीसेट करने का प्रयास कर सकते हैं।
[महत्वपूर्ण] यह विशिष्ट लाइन है जिसने मेरे विशेष मुद्दे को तय किया है:
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
इसके बाद अनुदान तालिका को पुनः लोड करना याद रखें।
किसी भी स्थिति में, आपको यह पुष्टि करनी चाहिए कि कमांड को सफलतापूर्वक निष्पादित किया गया है।
Query OK, 0 rows affected (0.00 sec)
पासवर्ड बदल दिया गया है, इसलिए अब आप डेटाबेस सर्वर के मैनुअल इंस्टेंस को रोक सकते हैं और इसे फिर से शुरू कर सकते हैं जैसा कि पहले था।
चरण 5: डेटाबेस सर्वर को सामान्य रूप से पुनरारंभ करें
डेटाबेस को पुनः आरंभ करने के लिए ट्यूटोरियल कुछ और चरणों में जाता है, लेकिन मेरे द्वारा उपयोग किया जाने वाला एकमात्र टुकड़ा था:
MySQL के लिए, उपयोग करें:
$ sudo systemctl start mysql
MariaDB के लिए, उपयोग करें:
$ sudo systemctl start mariadb
अब आप पुष्टि कर सकते हैं कि नया पासवर्ड सही ढंग से चलाकर लागू किया गया है:
$ mysql -u root -p
कमांड को अब नए नियत पासवर्ड के लिए संकेत देना चाहिए। इसे दर्ज करें, और आपको अपेक्षा के अनुसार डेटाबेस प्रॉम्प्ट तक पहुंच प्राप्त करनी चाहिए।
निष्कर्ष
अब आपके पास MySQL या MariaDB सर्वर के लिए प्रशासनिक पहुँच बहाल है। सुनिश्चित करें कि आपके द्वारा चुना गया नया रूट पासवर्ड मजबूत और सुरक्षित है और इसे सुरक्षित स्थान पर रखें।