MySQL
पुनर्प्राप्त करें और MySQL 5.7+ के लिए डिफ़ॉल्ट रूट पासवर्ड रीसेट करें
खोज…
परिचय
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>