खोज…


परिचय

MySQL 5.7 के बाद, जब हम MySQL स्थापित करते हैं, तो कभी-कभी हमें रूट खाता बनाने या रूट पासवर्ड देने की आवश्यकता नहीं होती है। डिफ़ॉल्ट रूप से जब हम सर्वर शुरू करते हैं, तो डिफ़ॉल्ट पासवर्ड mysqld.log फ़ाइल में संग्रहीत mysqld.log है। हमें उस पासवर्ड का उपयोग करके सिस्टम में लॉगिन करना होगा और हमें इसे बदलने की आवश्यकता है।

टिप्पणियों

इस विधि का उपयोग करके डिफ़ॉल्ट रूट पासवर्ड को पुनर्प्राप्त करना और रीसेट करना केवल MySQL 5.7+ के लिए लागू है

जब सर्वर का प्रारंभिक प्रारंभ होता है तो क्या होता है

यह देखते हुए कि सर्वर का डेटा निर्देशिका खाली है:

  • सर्वर को इनिशियलाइज़ किया गया है।
  • एसएसएल सर्टिफिकेट और कुंजी फाइलें डेटा निर्देशिका में उत्पन्न होती हैं।
  • Validate_password प्लगइन स्थापित और सक्षम है।
  • सुपरयूज़र खाता 'रूट' @ 'लोकलहोस्ट' बनाया जाता है। सुपरयुसर का पासवर्ड एरर लॉग फाइल में सेट और स्टोर किया जाता है।

डिफ़ॉल्ट पासवर्ड का उपयोग करके रूट पासवर्ड कैसे बदलें

डिफ़ॉल्ट "रूट" पासवर्ड प्रकट करने के लिए:

shell> sudo grep 'temporary password' /var/log/mysqld.log

जनरेट किए गए अस्थायी पासवर्ड के साथ लॉग इन करके जितनी जल्दी हो सके रूट पासवर्ड बदलें और सुपरयूज़र खाते के लिए एक कस्टम पासवर्ड सेट करें:

shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

नोट: MySQL का validate_password प्लगइन डिफ़ॉल्ट रूप से स्थापित है। इसके लिए यह आवश्यक होगा कि पासवर्ड में कम से कम एक ऊपरी अक्षर, एक निचला केस अक्षर, एक अंक और एक विशेष वर्ण हो और कुल पासवर्ड की लंबाई कम से कम 8 अक्षर हो।

रूट पासवर्ड रीसेट करें जब UNIX सॉकेट फ़ाइल के लिए "/ var / run / mysqld 'मौजूद नहीं है"

अगर मैं पासवर्ड भूल जाता हूं तो मुझे त्रुटि मिलेगी।

$ mysql -u root -p    

पास वर्ड दर्ज करें:

ERROR 1045 (28000): उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: YES) के लिए अस्वीकृत

मैंने पहले स्थिति को जानकर समस्या को हल करने की कोशिश की:

$ systemctl status mysql.service

mysql.service - MySQL समुदाय सर्वर लोड किया गया: लोड किया गया (/lib/systemd/system/mysql.service; सक्षम; विक्रेता पूर्व निर्धारित: en सक्रिय: सक्रिय (चल रहा है) Thu 2017-06-08 14:31/33 IST; 38 से पहले;

तब मैंने कोड mysqld_safe --skip-grant-tables & मुझे त्रुटि मिली:

UNIX सॉकेट फ़ाइल के लिए mysqld_safe निर्देशिका '/ var / run / mysqld' मौजूद नहीं है।

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

मैंने हल कर लिया:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

अब मैं उसी कोड का उपयोग करता हूं mysqld_safe --skip-grant-tables & get

mysqld_safe / var / lib / mysql से डेटाबेस के साथ mysqld डेमन शुरू करना

अगर मैं $ mysql -u root उपयोग करूं तो मुझे मिलेगा:

सर्वर संस्करण: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

कॉपीराइट (c) 2000, 2017, Oracle और / या इसके सहयोगी। सभी अधिकार सुरक्षित।

ओरेकल ओरेकल कॉर्पोरेशन और / या इसके सहयोगियों का एक पंजीकृत ट्रेडमार्क है। अन्य नाम उनके अपने स्वामियों के ट्रेडमार्क हो सकते हैं।

'सहायता' टाइप करें या मदद के लिए 'h'। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए 'c' टाइप करें।

mysql>

अब पासवर्ड बदलने का समय:

mysql> use mysql
mysql> describe user;

तालिका और स्तंभ नामों को पूरा करने के लिए तालिका जानकारी पढ़ना। आप इस सुविधा को बंद कर सकते हैं -ए के साथ एक तेज स्टार्टअप प्राप्त करने के लिए

डेटाबेस बदल गया

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

या यदि आपके पास एक mysql रूट खाता है जो हर जगह से जुड़ सकता है, तो आपको यह भी करना चाहिए:

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

वैकल्पिक विधि:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

और अगर आपके पास एक रूट खाता है जो हर जगह से पहुंच सकता है:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

अब mysql से quit और रुकने / शुरू करने की आवश्यकता है

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

अब फिर से 'mysql -u root -p' और पाने के लिए नए पासवर्ड का उपयोग करें

mysql>



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow