मैं अपने MySQL उपयोगकर्ता नाम और पासवर्ड को कैसे पुनः प्राप्त करूँ?


जवाबों:


186

MySQL प्रक्रिया बंद करो।

MySQL प्रक्रिया को --स्काइप-ग्रांट-टेबल विकल्प से शुरू करें।

-U रूट विकल्प के साथ MySQL कंसोल क्लाइंट शुरू करें।

सभी उपयोगकर्ताओं को सूचीबद्ध करें;

SELECT * FROM mysql.user;

पासवर्ड रीसेट;

UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

लेकिन करने के लिए भूल नहीं है

MySQL प्रक्रिया बंद करो

MySQL प्रक्रिया को सामान्य रूप से प्रारंभ करें (यानी --स्काइप-ग्रांट-टेबल विकल्प के बिना)

जब आपने काम ख़त्म कर लिया हो। अन्यथा, आपके डेटाबेस की सुरक्षा से समझौता किया जा सकता है।


7
लगता है कि आपको सामान्य उपयोगकर्ताओं को रीसेट करने के लिए डेमॉन को पुनरारंभ करने की आवश्यकता नहीं है। सिर्फ "फ्लश PRIVILEGES;" उपयोगकर्ता पासवर्ड अपडेट करने के बाद। रूट उपयोगकर्ता पासवर्ड रीसेट के लिए केवल आवश्यक -स्कैप-अनुदान-टेबल! यह आमतौर पर एक मानक उपयोगकर्ता रीसेट के लिए अनुशंसित नहीं होगा।
आमोस फोलारिन

dpkg-reconfigure mysql-server-5.5MySQL पासवर्ड को रूट करने के लिए कमांड का उपयोग करने का क्या महत्व है ?
phillipsK

@Xenph, आप क्यों "-रूट रूट विकल्प के साथ MySQL कंसोल क्लाइंट शुरू करें " कहते हैं ? ऐसा करने का कोई मतलब नहीं है कि -uजब सर्वर के साथ शुरुआत की जाती है तो इसे अनदेखा किया जाता है --skip-grant-tables
पचेरियर

15
MySQL 5.7 में। *, mysql.userनामक कोई स्तंभ नहीं है password, authentication_stringइसके बजाय उपयोग करें ।
अदीब अउरी

3
मुझे यह + stackoverflow.com/a/35277160/1604601 बहुत मददगार लगा
एलियन लाइफ फॉर्म

42

दुर्भाग्य से आपका उपयोगकर्ता पासवर्ड अप्राप्य है। यह एक तरह से हैश के साथ हैश किया गया है जो कि अगर आपको नहीं पता है तो यह अपरिवर्तनीय है। मैं ऊपर Xenph यान के साथ जाने की सलाह देता हूं और बस एक नया निर्माण करता हूं।

आप Windows पर किसी भी MySQL रूट खातों के लिए पासवर्ड रीसेट करने के लिए मैनुअल से निम्न प्रक्रिया का उपयोग कर सकते हैं :

  1. व्यवस्थापक के रूप में अपने सिस्टम पर लॉग ऑन करें।
  2. यदि चल रहा है तो MySQL सर्वर को बंद करें। Windows सेवा के रूप में चल रहे सर्वर के लिए, सेवा प्रबंधक पर जाएँ:

प्रारंभ मेनू -> नियंत्रण कक्ष -> प्रशासनिक उपकरण -> सेवाएं

फिर सूची में MySQL सेवा ढूंढें, और इसे रोकें। यदि आपका सर्वर सेवा के रूप में नहीं चल रहा है, तो आपको इसे रोकने के लिए बाध्य करने के लिए टास्क प्रबंधक का उपयोग करने की आवश्यकता हो सकती है।

  1. एक टेक्स्ट फ़ाइल बनाएं और उसमें निम्नलिखित कथनों को रखें। पासवर्ड को उस पासवर्ड से बदलें जिसे आप उपयोग करना चाहते हैं।

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
    FLUSH PRIVILEGES;

    अद्यतन और फ्लश बयान प्रत्येक एक पंक्ति पर लिखा होना चाहिए। अद्यतन बयान सभी मौजूदा जड़ खातों के लिए पासवर्ड रीसेट करता है, और फ्लश बयान सर्वर स्मृति में अनुदान टेबल फिर से लोड करने में बताता है।

  2. फ़ाइल सहेजें। इस उदाहरण के लिए, फ़ाइल का नाम C: \ mysql-init.txt रखा जाएगा
  3. कमांड प्रॉम्प्ट पर जाने के लिए एक कंसोल विंडो खोलें:

    प्रारंभ मेनू -> भागो -> cmd

  4. MySQL सर्वर को विशेष -इनिट-फाइल विकल्प से शुरू करें:

    C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt

    यदि आपने C: \ mysql के अलावा किसी अन्य स्थान पर MySQL स्थापित किया है , तो उसके अनुसार कमांड को समायोजित करें।

    सर्वर प्रत्येक रूट खाता पासवर्ड को बदलते हुए स्टार्टअप में --init- फ़ाइल विकल्प द्वारा नामित फ़ाइल की सामग्री को निष्पादित करता है ।

    यदि आप सर्वर आउटपुट को कंसोल विंडो में लॉग इन फ़ाइल के बजाय प्रदर्शित करना चाहते हैं तो आप कमांड को --console विकल्प भी जोड़ सकते हैं ।

    यदि आपने MySQL अधिष्ठापन विज़ार्ड का उपयोग करके MySQL स्थापित किया है, तो आपको एक --defaults-file विकल्प निर्दिष्ट करने की आवश्यकता हो सकती है :

    C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt

    उपयुक्त --defaults- फ़ाइल सेटिंग को सेवा प्रबंधक का उपयोग करके पाया जा सकता है:

    प्रारंभ मेनू -> नियंत्रण कक्ष -> प्रशासनिक उपकरण -> सेवाएं

    सूची में MySQL सेवा खोजें, उस पर राइट-क्लिक करें और गुण विकल्प चुनें। निष्पादन योग्य फ़ील्ड के पथ में --defaults-file सेटिंग है।

  5. सर्वर सफलतापूर्वक शुरू होने के बाद, C: \ mysql-init.txt हटाएं
  6. MySQL सर्वर बंद करो, फिर इसे सामान्य मोड में फिर से शुरू करें। यदि आप सर्वर को सेवा के रूप में चलाते हैं, तो इसे Windows सेवा विंडो से प्रारंभ करें। यदि आप सर्वर को मैन्युअल रूप से शुरू करते हैं, तो सामान्य रूप से जो भी कमांड का उपयोग करें।

अब आपको नए पासवर्ड का उपयोग करके रूट के रूप में MySQL से कनेक्ट करने में सक्षम होना चाहिए।


5
@ जेक - उत्तर के लिए धन्यवाद। मैं इसे एक अंगूठे देना चाहता था, लेकिन किसी कारण से स्टैकओवरफ्लो ने मुझे प्रतिष्ठा के कारण ऐसा करने की अनुमति नहीं दी। क्यों सब कुछ है कि मैं पर केवल गूगल पढ़ने मेरे लिए दिशा-निर्देश दिया अपने विवरण "दुर्भाग्य से अपने उपयोगकर्ता पासवर्ड असाध्य है। यह एक एक तरह से हैश जो अगर तुम ऐसा नहीं कर पता है कि अपरिवर्तनीय है के साथ टुकड़ों में बांटा गया है" मेरी समझ के लिए महत्वपूर्ण था बदल मेरी कुंजिका। अच्छे स्पष्टीकरण अकेले निर्देशों की तुलना में अधिक व्यावहारिक हैं।
dsdsdsdsd

1
@ जेक मैं सेवाओं की सूची में mysql नहीं पा सकता कृपया मुझे बताएं कि मुझे क्या करना है?

1
क्यों तुम्हारी mysqld-ntजगह है mysqld?
पचेरियर

Btw, वहाँ एक गैर फ़ाइल विकल्प है --init-file? (कुछ ऐसा ही mysql.exe की --executeकमांड के समान है ।)
पचेरियर

34

यहां सबसे उपयोगी उत्तर में सुधार:

1] mysql सर्वर को पुनरारंभ करने की आवश्यकता नहीं है
2] नेटवर्क से जुड़े MySQL सर्वर के लिए सुरक्षा चिंता

MySQL सर्वर को पुनरारंभ करने की कोई आवश्यकता नहीं है।

FLUSH PRIVILEGES;पासवर्ड बदलने के लिए अपडेट mysql.user स्टेटमेंट के बाद उपयोग करें ।

FLUSH स्टेटमेंट सर्वर से मेमोरी टेबल को मेमोरी में पुनः लोड करने के लिए कहता है ताकि यह पासवर्ड परिवर्तन को नोटिस करे।

--skip-grant-optionsपासवर्ड के बिना और सभी विशेषाधिकारों के साथ कनेक्ट करने के लिए किसी को भी सक्षम बनाता है। क्योंकि यह असुरक्षित है, आप चाहते हो सकता है

दूरदराज के ग्राहकों को जोड़ने से रोकने के लिए --skip- नेटवर्किंग के साथ संयोजन में --skip- अनुदान-तालिकाओं का उपयोग करें ।

से: संदर्भ: रीसेट-अनुमतियाँ-सामान्य


@ThinkingMonkey, क्या यह नहीं माना जाता है कि उपयोगकर्ता पर लॉग ऑन किया गया वर्तमान में संशोधन करने के लिए विशेषाधिकार हैं mysql.user? अक्सर हालांकि, यह मामला नहीं है।
पचेरियर

6

हालांकि आप सीधे तौर पर बिना किसी MySQL पासवर्ड को ठीक किए नहीं रह सकते हैं, तो दूसरा तरीका हो सकता है - यदि आपने डेटाबेस से जुड़ने के लिए MySQL वर्कबेंच का उपयोग किया है, और क्रेडेंशियल्स को "वॉल्ट" में सहेजा है, तो आप सुनहरे हैं।

विंडोज पर, क्रेडेंशियल को % APPDATA% \ MySQL \ Workbench \ workbench_user_data.dat में संग्रहीत किया जाता है - CryptProtectData (बिना किसी अतिरिक्त एंट्रॉपी के) के साथ एन्क्रिप्ट किया गया । डिक्रिप्ट करना आसान है

std::vector<unsigned char> decrypt(BYTE *input, size_t length) {
    DATA_BLOB inblob { length, input };
    DATA_BLOB outblob;

    if (!CryptUnprotectData(&inblob, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &outblob)) {
            throw std::runtime_error("Couldn't decrypt");
    }

    std::vector<unsigned char> output(length);
    memcpy(&output[0], outblob.pbData, outblob.cbData);

    return output;
}

या आप एक त्वरित और गंदे कार्यान्वयन के स्रोत + निष्पादन योग्य के लिए इस डोनेशन कोडर धागे की जांच कर सकते हैं ।


2
यह एकदम सही था। मेरे MySQL कार्यक्षेत्र तिजोरी में संग्रहीत मेरे उपयोगकर्ता खाते के पासवर्ड को पुनः प्राप्त करने के लिए उल्लेख किए गए थ्रेड स्नैमार्क पर स्रोत कोड के साथ एक exe है। हालाँकि ये अन्य तरीके शायद तब भी काम करेंगे जब मेरे पास उपयोगकर्ता तालिका को पढ़ने या अपडेट करने का अधिकार होगा।
रोब्बज

लेकिन अपेक्षाकृत कम, बहुत कम लोग कार्यक्षेत्र का उपयोग कर रहे हैं।
पचेरियर

यहाँ एक और कार्यान्वयन है जो
वर्कबेंच

6

इसे बिना समय गवाएं करें

टर्मिनल में DBMS से कनेक्ट करने के लिए निम्नलिखित कमांड चलाएँ (आपको रूट एक्सेस की आवश्यकता है):

sudo mysql -u root -p;

लक्ष्य उपयोगकर्ता का अपडेट पासवर्ड चलाएं (मेरे उदाहरण के लिए उपयोगकर्ता नाम है mousaviऔर यह पासवर्ड होना चाहिए 123456):

UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';  

इस बिंदु पर आपको परिवर्तनों को लागू करने के लिए एक फ्लश करने की आवश्यकता है:

FLUSH PRIVILEGES;

किया हुआ! आपने इसे बिना किसी रोक टोक के या mysql सेवा को पुनः आरंभ किया।


5

यदि आपके पास सर्वर तक रूट एक्सेस है जहां mysql चल रहा है तो आपको इस कमांड का उपयोग करके mysql सर्वर को बंद कर देना चाहिए

sudo service mysql stop

अब इस कमांड का उपयोग करके mysql को शुरू करें

sudo /usr/sbin/mysqld --skip-grant-tables  --skip-networking &

अब आप mysql का उपयोग करके लॉगिन कर सकते हैं

sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

पूर्ण निर्देश यहां देखे जा सकते हैं http://www.techmatterz.com/recover-mysql-root-password/


3

मौजूदा उपयोगकर्ता का उपयोग करके विंडोज़ cmd से MySql लॉगिन करें:

mysql -u उपयोगकर्ता नाम
पासवर्ड दर्ज करें: ****

फिर निम्न कमांड चलाएँ:

mysql> SELECT * FROM mysql.user;

उसके बाद संबंधित उपयोगकर्ता के लिए एन्क्रिप्टेड md5 पासवर्ड कॉपी करें और वेब में कई ऑनलाइन पासवर्ड डिक्रिप्ट किए गए एप्लिकेशन उपलब्ध हैं। इस डिक्रिप्ट पासवर्ड का उपयोग करना और अगली बार लॉगिन के लिए इसका उपयोग करना। या फ़्लो कमांड का उपयोग करके उपयोगकर्ता पासवर्ड अपडेट करें:

mysql> UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

फिर नए पासवर्ड और उपयोगकर्ता का उपयोग करके लॉगिन करें।


0

यदि आप ODBC सेट अप करने के लिए होते हैं, तो आप ODBC कॉन्फ़िग फ़ाइल से पासवर्ड प्राप्त कर सकते हैं। यह लिनक्स के लिए /etc/odbc.ini में है और विंडोज में रजिस्ट्री में सॉफ्टवेयर / ODBC फ़ोल्डर में (कई हैं - इसमें कुछ शिकार लग सकते हैं)


0

फ़ाइल सहेजें। इस उदाहरण के लिए, फ़ाइल का नाम C: \ mysql-init.txt रखा जाएगा। यह फाइल को बचाने के लिए प्रशासनिक अनुमति मांगता है


-1

हालाँकि, ऑप्स प्रश्न की एक सख्त, तार्किक, कंप्यूटर विज्ञान की व्याख्या दोनों को "मेरे MySQL उपयोगकर्ता नाम को कैसे पुनः प्राप्त करें" और "पासवर्ड" की आवश्यकता होगी - मैंने सोचा कि यह किसी के लिए भी उपयोगी हो सकता है या व्याख्या को भी संबोधित कर सकता है। दूसरे शब्दों में ...

1) मैं अपने MySQL उपयोगकर्ता नाम को कैसे पुनः प्राप्त करूँ?

या

2) पासवर्ड

ऐसा लगता है कि यह बाद की स्थिति पहले से ही संबोधित कर दी गई है इसलिए मैं इससे परेशान नहीं होऊंगा। निम्नलिखित मामले के लिए एक समाधान है "मैं अपने MySQL उपयोगकर्ता नाम को कैसे पुनः प्राप्त करूँ"। HIH।

अपने mysql उपयोगकर्ता नाम को खोजने के लिए mysql शेल से निम्न कमांड चलाएँ ...

Mysql.user से उपयोगकर्ता का चयन करें;

यह सभी mysql उपयोगकर्ताओं की एक तालिका प्रिंट करेगा।


1
यह एक देर से जवाब है और आपको ये केवल तभी पोस्ट करना चाहिए जब आपका समाधान पहले से पोस्ट या स्वीकृत से स्पष्ट रूप से भिन्न हो। यह इस मामले में नहीं है, विशेष रूप से यह कि आपका उत्तर एक स्वीकृत डुप्लिकेट है।
m.cekiera
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.