mysql का रूट पासवर्ड रीसेट करने में असमर्थ


28

मुझे अपने स्थानीय mysql इंस्टॉलेशन के रूट पासवर्ड को रीसेट करने की आवश्यकता है लेकिन यह मुझे निराश नहीं करता है। मैंने यह कोशिश की है:

$ sudo /etc/init.d/mysql stop
 * Stopping MySQL database server mysqld                                                                                                              [ OK ] 
[1]-  Exit 1                  sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking
[2]+  Exit 1                  sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking
reg@regDesktopHome:~$ sudo mysqld --skip-grant-tables &
[1] 13651
reg@regDesktopHome:~$ 140627 19:02:02 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.

reg@regDesktopHome:~$ mysql -u root mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
reg@regDesktopHome:~$ sudo mysql -u root mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[1]+  Exit 1                  sudo mysqld --skip-grant-tables

मुझे पासवर्ड रीसेट कैसे मिल सकता है? 1 संपादित करें मुझे यह मिला:

$ ps ax| grep mysql
16515 ?        Ssl    0:00 /usr/sbin/mysqld
16551 pts/23   S+     0:00 grep --color=auto mysql
reg@regDesktopHome:~/semios/v3upgrade$ sudo kill -9 16515
reg@regDesktopHome:~/semios/v3upgrade$ ps ax| grep mysql
16678 ?        Ssl    0:00 /usr/sbin/mysqld
16715 pts/23   S+     0:00 grep --color=auto mysql
reg@regDesktopHome:~/semios/v3upgrade$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

ऐसा लगता है कि जैसे ही मैं इसे मारूंगा, एक प्रक्रिया स्वचालित रूप से mysql को पुनः आरंभ कर रही है ...

जवाबों:


43

पहले कृपया उपयोग करके देखें

mysql -u root -p

और sql- रूट उपयोगकर्ता (ध्यान दें कि स्विच -pपासवर्ड के लिए है) के रूप में लॉगिन करने के लिए अपना पासवर्ड (यदि आपको याद है) दर्ज करें ।

यदि आपको वास्तव में mysql के लिए अपना रूट पासवर्ड रीसेट करना है, तो यहां एक आसान तरीका है - पैकेज को फिर से कॉन्फ़िगर करें dpkg-reconfigure

MySQL रूट पासवर्ड रीसेट करने के लिए आसान कदम:

  1. अपने संस्करण की जाँच करें mysql-server;

    apt-cache policy mysql-server
    

    और उस लाइन को देखें जो अन्य जानकारी के बीच स्थापित संस्करण दिखाती है। मेरी स्थापना के लिए उदाहरण के लिए:

    Installed: 5.5.37-0ubuntu0.12.04.1
    

    (इससे मुझे पता है कि मैंने mysql-server-5.5अपने सिस्टम में इंस्टॉल किया है।)

  2. के साथ पुनर्गठन शुरू करें:

    sudo dpkg-reconfigure mysql-server-*.*
    

    जहाँ mysql-server-*.*आपके पास जो संस्करण है उसे प्रतिस्थापित किया जाना चाहिए। (मेरे लिए यह होगा mysql-server-5.5)। यह डेटाबेस डेमॉन को रोक देगा। फिर एक प्रॉम्प्ट दिखाई देगा जहां आपको अपना नया पासवर्ड दर्ज करना होगा और पुन: कॉन्फ़िगर करने की पुष्टि करनी होगी।

    snap1

    पुन: पूर्ण होने के बाद डेमॉन स्वचालित रूप से शुरू हो जाएगा।

  3. फिर आप इसमें लॉग इन कर सकते हैं:

    mysql -u root -p
    

    और अपने डेटाबेस व्यवस्थापक कार्य प्रारंभ करें।

संदर्भ:

  1. https://help.ubuntu.com/community/MysqlPasswordReset [जो जल्द ही पृष्ठ में संकेत के रूप में साफ किया जाएगा।]

  2. अपने विशिष्ट संस्करण से संबंधित Ubuntu सर्वर गाइड


2
पुष्टि कर सकते हैं कि dpkg-reconfigure mariadb-server-10.1जब अन्य समाधान नहीं मारियाडीबी के लिए काम किया। इसके लिए शुक्रिया।
liviucmg

19
dpkg-reconfigureमेरे लिए पासवर्ड के लिए संकेत नहीं दिया गया .. क्या इसे लागू करने का कोई तरीका है?
18

15
मेरे लिए काम नहीं किया। मैंने ऊपर के रूप में कमांड का उपयोग किया, और "अपडेट की आवश्यकता होने पर जाँच कर रहा है। MySQL की यह स्थापना पहले से ही 5.7.13 में नवीनीकृत है, का उपयोग करें - यदि आपको अभी भी mysql_upgrad को चलाने की आवश्यकता है"। प्रयोग - प्रवर्तन ने समान प्रतिक्रिया दी।
एंथनी स्कैफ़

5
जाहिर है यह अब काम नहीं करता है।
डीपीआई

1
@Paoo Henrique No. स्थिति को देखते हुए, हमने तय किया कि हमारे समय का सबसे अच्छा उपयोग एक पूर्ण सर्वर पुनर्स्थापना था।
एंथनी स्कैफ

21

इस ब्लॉग से लिया गया संदर्भ:

चरण 1: MySQL सेवा बंद करें।

sudo service mysql stop

चरण 2: सभी रनिंग mysqld को मारें।

sudo killall -9 mysqld

चरण 3: सुरक्षित मोड में mysqld शुरू करना।

sudo mysqld_safe --skip-grant-tables --skip-networking &

चरण 4: mysql क्लाइंट प्रारंभ करें

mysql -u root

चरण 5: सफल लॉगिन के बाद, कृपया किसी भी पासवर्ड को बदलने के लिए इस कमांड को निष्पादित करें।

FLUSH PRIVILEGES;

चरण 6: आप mysql रूट पासवर्ड को अपडेट कर सकते हैं।

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

mysql के लिए> 5.7 ऊपर के बजाय इसका उपयोग करें:

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

चरण 7: कृपया इस कमांड को निष्पादित करें।

FLUSH PRIVILEGES;

चरण 8: mysql कंसोल से बाहर निकलें

exit

चरण 9: mysqld_safe को मारें और mysql शुरू करें

sudo killall mysqld_safe && sudo service mysql start

1
होना चाहिए sudo service mysql stop, नहींsudo stop mysql
knocte

1
इसके अलावा, अंत में यह चरणों को याद कर रहा है sudo killall mysqld_safe && sudo service mysql startऔर फिर
बजे

3
MYSQL 5.7 के लिए चेंज पासवर्ड सिंटैक्स बदल गया हैALTER USER root IDENTIFIED BY 'NEW_PASSWORD_HERE'
तारेक फडेल

7
नोट ! MySQL 5.7 में एक नया जानवर है जिसे or__cket कहा जाता है। यदि आप बिना रूट पासवर्ड के mysql इंस्टॉल करते हैं, तो जानवर आप पर हमला करेगा और आप 50 हिट पॉइंट्स को ढीला करेंगे। चरण 6 में आपको ऊपर की आवश्यकता है ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASS';। आप इसके बारे में यहां पढ़ सकते हैं । सैद्धांतिक रूप से (मैंने कोशिश नहीं की), आपको रूट बनने के लिए पासवर्ड के बिना mysql में लॉग इन करने में सक्षम होना चाहिए।
ओलाफ्यूर

3
और अगर ALTER USER ...काम नहीं करता है, तो उपयोग करेंUPDATE mysql.user SET authentication_string = PASSWORD('NEWPASS'), plugin = 'mysql_native_password' WHERE User = 'root' AND Host = 'localhost';
ओलाफ्यूर

9

उबंटू 16.04 और के तहत mysql-server-5.7, सही उत्तर ओलाफ्यूर की अंतिम टिप्पणी है, dpkg-reconfigure mysql-server-5.7अब काम नहीं करता है।

sudo service mysql stop
sudo killall mysqld
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root

अब mysql कंसोल में >mysql

USE mysql;
UPDATE user SET authentication_string=PASSWORD('newpass') WHERE user='root';
FLUSH PRIVILEGES;
\q

पुन: प्रारंभ करें अच्छा mysql प्रक्रिया

sudo killall mysqld
sudo service mysql start

अपना नया पासवर्ड जांचें

mysql -u root -p
Enter password: newpass
mysql>

5
पर mysqld_safeनिष्पादन, मैं त्रुटि मिलती है: Directory '/var/run/mysqld' for UNIX socket file don't exists.। इसलिए मैं भाग गया sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqldऔर बाकी उपरोक्त उत्तर काम करता है। क्या यह Ubuntu 16 पर एक बग है? मैंने इन सभी मुद्दों को पासवर्ड अपडेट करने से पहले कभी अनुभव नहीं किया है।
चेस्टर

@ चेस्टर आपको बहुत बहुत धन्यवाद !! यह एकमात्र तरीका था जो आखिरकार अब काम कर रहा है क्योंकि अन्य सभी समाधान एक त्रुटि फेंकते हैं। (उबंटू-सर्वर 16.04 यहाँ) यह जवाब में जोड़ा जाना चाहिए
derHugo

3

प्रारंभिक स्थापना के दौरान, MySQL 5.7 के साथ शुरू करना , यदि आप पासवर्ड को खाली छोड़ देते हैं, तो उस उपयोगकर्ता के लिए, प्रमाणीकरण auth_socketप्लगइन पर आधारित होगा ।

पासवर्ड बदलने का सही तरीका होगा:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


यह मेरा सटीक मामला था (mysql 5.7 में स्थापना के दौरान खाली पासवर्ड) और यह मेरे मामले का एकमात्र समाधान था।
चेरोविम

मुझे संदेश मिलता है:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
user2513149

@ user2513149 कृपया --skip-grant-tablesविकल्प के बिना अपने MySQL सर्वर को पुनः आरंभ करें और इस समाधान को देखें।
बरुन

@ बरुन, नहीं, --skip-grant-tablesविकल्प के बिना मैं रूट के रूप में MySQL में भी प्रवेश नहीं कर सकता। यह कहता हैERROR 1698 (28000): Access denied for user 'root'@'localhost'
user2513149

हल किया! मुझे mysqld_safeपासवर्ड के बिना रूट के रूप में नियमित रूप से MySQL कंसोल (नहीं ) में प्रवेश करना था । मेरे पास Ubuntu 18.04 और mysql-server-5.7 है। इस उत्तर ने मुझे askubuntu.com/a/767252/585252 (नीचे का भाग देखें) में मदद की
user2513149

1

बाकी उत्तरों में से कुछ भी मेरे लिए काम नहीं करता था। यह मेरा समाधान है:

sudo service mysql stop
sudo mysqld_safe &
sudo mysql -u root

वहाँ पर:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
FLUSH PRIVILEGES;
QUIT;

फिर:

sudo killall mysqld
sudo service mysql start
sudo mysql -u root -p

1
बाकी मेरे लिए न तो काम करता है ... न ही आपका समाधान दुर्भाग्य से: फिर भी यह त्रुटि 2017-05-30T06:33:22.291126Z mysqld_safe Logging to syslog. 2017-05-30T06:33:22.294375Z mysqld_safe Logging to '/var/log/mysql/error.log'. 2017-05-30T06:33:22.296874Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
मिलती है

1
यह एकमात्र सलाह है जो मेरे लिए छह या इतने सुझावों में से एक है जो मैंने कोशिश की, लेकिन मैंने "UNIX सॉकेट फ़ाइल से बचने के लिए @Chester 'को ऊपर नहीं जोड़ा" त्रुटि: sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqldयह mysql 5.7 और ubuntu 6.04 पर है ।
ट्वेहेलर

0

इसके साथ एक फ़ाइल बनाएँ:

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

Mysql सर्वर को बंद करें और इसे चलाएं:

mysqld_safe --init-file=/home/me/mysql-init &

अधिक जानकारी के लिए यहां देखें: http://dev.mysql.com/doc/refman/5.0/en/resetting-perm.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.