MySQL के लिए एडमिन अकाउंट पासवर्ड को रीसेट या रिकवर कैसे करें?


14

मेरे पास एक MySQL डेटाबेस है जो मुझे "विरासत में मिला है" और मुझे व्यवस्थापक क्रेडेंशियल्स नहीं दिए गए थे। हालाँकि मेरे पास उस बॉक्स तक पहुँच है जो वह चलाता है। वहाँ एक तरह से या तो व्यवस्थापक क्रेडेंशियल पुनर्प्राप्त करने या नए बनाने के लिए है?

जवाबों:


15

MySQL संदर्भ मैनुअल में रूट पासवर्ड रीसेट करने के बारे में अध्याय को पढ़ें और निष्पादित करें

यह प्रक्रिया प्राधिकरण के बिना mysql डेमॉन को शुरू करती है जिससे आप क्रेडेंशियल की आपूर्ति किए बिना कनेक्ट कर सकते हैं। इस मोड में आप सामान्य रूप से कनेक्ट कर सकते हैं, और पासवर्ड और अनुदान रीसेट कर सकते हैं। बाद में जगह में उचित प्राधिकरण के साथ फिर से mysql शुरू करने के लिए मत भूलना।


6

यदि यह एक डेबियन / उबंटू बॉक्स है, तो एक विशेष रूट-समतुल्य खाता है जिसे डेबियन-एसआईएस-मेन्ट कहा जाता है । आप /etc/mysql/debian.cnf में पासवर्ड पढ़ सकते हैं

उस पासवर्ड का उपयोग करके आप mysql में debian-sys-maint का उपयोग कर लॉग इन कर सकते हैं:

mysql --defaults-file=/etc/mysql/debian.cnf mysql

एक बार लॉग इन करने के बाद, निम्नलिखित कार्य करें:

update user set password=password('<new password>') where user='root';
flush privileges;
quit;

रूट अब आपके नए पासवर्ड का उपयोग करने के लिए सुलभ होना चाहिए:

mysql -uroot -p

3

मेरा रूट उपयोगकर्ता मौजूद नहीं था। पर

CREATE USER root@localhost;

मुझे मिला

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

का समाधान था

mysqld_safe  --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

उसके बाद मैंने इसमें से थोड़ी सी मदद से एक-एक करके सभी प्राइवेट को जोड़ा:

mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N

(और यह एक और अधिक स्वचालित होना चाहिए)

नोट: 'Y's की सही संख्या का पता INSERTPITA है।


0

जैसा कि MySQL Reference Manual के कदम बहुत स्पष्ट नहीं हैं, मैं यहाँ आसान भाषा में जवाब देने की कोशिश कर रहा हूँ। (यह उत्तर मैकबुक OSX उपयोगकर्ताओं के लिए प्रासंगिक है):

  1. जैसा कि हम वर्तमान पासवर्ड नहीं जानते हैं, MySQL सर्वर को वर्तमान लॉगिन क्रेडेंशियल्स को लंघन / बायपास करने की आवश्यकता है। MySQL सर्वर को एक्सेस ग्रांट टेबल को छोड़ देने का निर्देश दें:
    • अपना MySQL सर्वर बंद करें (यदि यह पहले से चल रहा है)।
    • अपनी MySQL कॉन्फ़िगरेशन फ़ाइल ढूंढें my.cnf,। (मेरे लिए यह @ रखा गया था /Applications/XAMPP/xamppfiles/etc। आप खोज सकते हैं यदि आप इसे नहीं पा सकते हैं)।
    • my.cnfकिसी भी टेक्स्ट एडिटर में फ़ाइल खोलें ।
    • अनुभाग "skip-grant-tables"के अंत में (बिना उद्धरण) जोड़ें [mysqld]और फ़ाइल को सहेजें।
    • अब अपना MySQL सर्वर शुरू करें। यह skip-grant-tablesविकल्प के साथ शुरू होगा ।
  2. कमांड खोलें Terminalऔर चलाएंmysql
  3. आदेश निष्पादित करें mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
  4. आदेश निष्पादित करें mysql> FLUSH PRIVILEGES;
  5. आदेश निष्पादित करें mysql> exit
  6. MySQL सर्वर को पुनरारंभ करें।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.