MySQL रूट पासवर्ड परिवर्तन


95

मैं अपने MySQL रूट पासवर्ड को रीसेट करने की कोशिश कर रहा हूं। मैंने mysqld_safe --skip-अनुदान-टेबल चलाए हैं, रूट पासवर्ड अपडेट किया है, और यह सुनिश्चित करने के लिए उपयोगकर्ता तालिका की जांच की कि यह वहां है। एक बार mysql डेमॉन को पुनरारंभ करने के बाद मैंने नए रूट पासवर्ड के साथ लॉगिंग करने की कोशिश की, जिसे मैंने अभी सेट किया है और अभी भी उपयोगकर्ता की 'रूट' त्रुटियों के लिए एक्सेस अस्वीकृत है। मैंने पूरी तरह से mysql को हटाने और पुनः स्थापित करने का प्रयास किया है (my.cnf फ़ाइल को हटाने सहित) और अभी भी कोई भाग्य नहीं है। क्या किसी के पास कोई सुझाव है कि मैं आगे क्या कर सकता हूं?

अग्रिम में धन्यवाद


2
कृपया अपनी वास्तविक त्रुटि को पोस्ट करें
विश्वनाथ दलवी

16
यदि आपका ताला बंद नहीं SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword'); है तो सबसे सुरक्षित है।
सबजेंटन

मैंने अपने एक सर्वर youtu.be/gFo5DV_pSg8
प्रेम


1
सर्वर संस्करण: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) ERROR 1064 (42000): आपके SQL सिंटैक्स में एक त्रुटि है; मैनुअल को चेक करें जो लाइन 1 पर 'PASSWORD ("1")' पास 'रूट' @ 'लोकलहोस्ट' = PASSWORD ("कुछ क्रॉसवर्ड") के लिए उपयोग करने के लिए सही वाक्यविन्यास के लिए आपके MySQL सर्वर संस्करण से मेल खाती है;
discipleartem

जवाबों:


123

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');


7
यह मेरे लिए 5.7 में काम कर रहा है जबकि स्वीकृत उत्तर नहीं है।
स्तूपकीड

2
यह सही समाधान है यदि आपका MySQL रूट पासवर्ड रिक्त है।
fschuindt

3
> अद्यतन mysql.user SET प्रमाणीकरण_string = PASSWORD ('MyNewPass') जहां उपयोगकर्ता = 'रूट'; > फ्लश PRIVILEGES; MySQL संस्करण 5.7.x में mysql तालिका में अधिक पासवर्ड फ़ील्ड नहीं है। इसे प्रमाणीकरण_स्ट्रिंग के साथ बदल दिया गया था।
रॉबर्ट एंथनी एस। ट्रिबियाना

2
यह मुझे एक ठीक देता है, लेकिन वास्तव में कुछ भी नहीं करते हैं
फ्रीडो

1
FLUSH PRIVILEGESडेटाबेस सर्वर को पुनरारंभ किए बिना परिवर्तन को प्रभावी बनाने के लिए इसे एक अतिरिक्त कमांड की आवश्यकता है।
नेटव्यूज

60

MySQL संदर्भ मैनुअल से इस पर एक नज़र:

पहला लॉगिन mysql:

# mysql -u root -p

फिर mysql प्रॉम्प्ट रन पर:

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

फिर

FLUSH PRIVILEGES;

अधिक जानकारी के लिए इस पृष्ठ को देखें: रूट पासवर्ड रीसेट करना: यूनिक्स सिस्टम


मुझे एक त्रुटि मिली "आप सुरक्षित अपडेट मोड का उपयोग कर रहे हैं और आपने उपयोगकर्ता के पासवर्ड को अपडेट करते समय बिना WHERE के एक तालिका को अपडेट करने का प्रयास किया है जो कि एक कुंजी स्तंभ का उपयोग करता है ..."। इस त्रुटि के आसपास कैसे काम करें, इसके लिए stackoverflow.com/questions/11448068/… देखें ।
जो बॉरिस्को

त्रुटि 1064 (42000): आपके SQL सिंटैक्स में कोई त्रुटि है; जाँच के मैनुअल है कि सही वाक्य रचना के लिए अपने सर्वर संस्करण से मेल खाती पास '(' MyNewPass ') का उपयोग करने के जहाँ उपयोगकर्ता =' पर लाइन 1 जड़ ''
discipleartem

28
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

आप MySQL प्रलेखन में रूट पासवर्ड रीसेट कर पा सकते हैं ।


यह क्वेरी मेरे लिए काम की है लेकिन नया पासवर्ड काम नहीं कर रहा है (प्रवेश निषेध)। मेरे द्वारा रूट उपयोगकर्ता askubuntu.com/a/784347/160368 को पुनः बनाने के बाद ही यह काम करना शुरू करता है ।
hlcs

1
मेरे लिए MySQL 8.0.20 पर काम करता है और इस कमांड का उपयोग करके डेटा फ़ोल्डर को इनिशियलाइज़ करने के बादmysqld --initialize --console
हेनरी में ए हेंटेटी

27

यह WAMP v3.0.6 और अप के लिए अद्यतन उत्तर है

> UPDATE mysql.user 
> SET authentication_string=PASSWORD('MyNewPass') 
> WHERE user='root';

> FLUSH PRIVILEGES;

MySQL संस्करण 5.7.x में mysql तालिका में अधिक पासवर्ड फ़ील्ड नहीं है। इसे प्रमाणीकरण_स्ट्रिंग के साथ बदल दिया गया था। (यह टर्मिनल / सीएलआई के लिए है)

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

FLUSH PRIVILEGES;

(यह अगर PHPMyAdmin या किसी भी मैसकल GUI के लिए)


यह उत्तर उन कुछ में से एक है जो कहते हैं कि mysql.userतालिका को अद्यतन किया जाना चाहिए। ध्यान दें कि यदि आप किसी अन्य डेटाबेस ( useकमांड द्वारा सेट ) का उपयोग कर रहे हैं , तो आपको एक त्रुटि मिलेगी कि तालिका userमौजूद नहीं है। धन्यवाद महोदय!
अलेक्जेंडर

1
मेरे लिये कार्य करता है । मैं 5.7.x का उपयोग कर रहा हूं, कोई mysql.userतालिका नहीं है। अन्य उत्तर आउट-डेटेड हैं
Siwei शेन '

मदद करने के लिए खुश!!
रॉबर्ट एंथनी एस। ट्रिबियाना

मैं इसे वापस रोल करता हूं क्योंकि यह मेरा उपयोग करने का इरादा है> प्रति पंक्ति अर्धविराम के कारण जो टर्मिनल के लिए अभिप्रेत है
रॉबर्ट एंथनी एस ट्रिबियाना

0 पंक्तियाँ प्रभावित, पंक्तियाँ मिलान: 3 परिवर्तित: 0 ...?
9

22

मिल गया! जब मैंने इसे बदला तो मैं पासवर्ड हैश करना भूल गया। मैंने अपनी समस्या को हल करने के लिए इस क्वेरी का उपयोग किया:

update user set password=PASSWORD('NEW PASSWORD') where user='root';

मैं भूल गया PASSWORD('NEW PASSWORD')और सीधे सादे पाठ में नया पासवर्ड डाल दिया


सुनिश्चित करें कि आप वापस आते हैं और दूसरों को समाधान देखने की अनुमति देने के लिए अपने उत्तर को स्वीकार करते हैं
भूतजागो

1
dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html यह दिखाता है कि --init-file=अगर आपने देखा तो यह कैसे करना है ।
सबजेंटन

3
कोई भी विचार क्यों जब मैं एक ही कमांड का उपयोग करता हूं, तो निम्न त्रुटि वापस आ जाती है? त्रुटि 1054 (42S22): अज्ञात कॉलम 'पासवर्ड' 'फ़ील्ड सूची' में
एड्रियन एम।

1
आपके SQL सिंटैक्स में कोई त्रुटि है; उस मैनुअल की जाँच करें जो आपके MySQL सर्वर संस्करण के लिए सही सिंटैक्स के निकट '(' नया पासवर्ड ') का उपयोग करता है, जहाँ उपयोगकर्ता 1 = पंक्ति 1 में उपयोक्ता =' रूट '
अनुशासन 13

20

कृपया नीचे दिए गए चरणों का पालन करें।

चरण 1। mysql बंद करो

चरण 2। sudo mysqld_safe --skip-grant-tables

चरण 3।mysql -u root

चरण 4।use mysql;

step5।show tables;

step6।describe user;

step7।update user set authentication_string=password('1111') where user='root';

पासवर्ड 1111 से लॉगिन करें


3
flush privilegesअंतिम चरण के रूप में महत्वपूर्ण है।
खोम नाज़िद

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

अगर mysqld शुरू नहीं हो रहा है और इस mysqld डेमॉन जैसे संदेश / डेटाबेस से डेटाबेस के साथ / var / lib / mysql mysqld_safe mysqld से pid फ़ाइल /var /run/mysqld .mysqld.pid समाप्त हो गया: mkdir / var / run / mysqld chomod 777 var / run / mysqld और सभी को भीख से शुरू करें
jokermt235

18

मैंने आसपास भी खोज की और शायद कुछ जवाब कुछ स्थितियों के लिए फिट हैं,

मेरी स्थिति उबंटू 18.04.2 LTS सिस्टम पर मैसूर 5.7 है:

(रूट विशेषाधिकार प्राप्त करें)

$ sudo bash

(रूट db उपयोगकर्ता + चरणों में सुरक्षा लागू करने के लिए पासवर्ड सेट करें)

# mysql_secure_installation

(सॉकेट के बजाय पासवर्ड के माध्यम से रूट उपयोगकर्ता तक पहुंच प्रदान करें)

(+ संपादित करें: जाहिरा तौर पर आपको पासवर्ड फिर से सेट करने की आवश्यकता है?)

(इसे 'mySecretPassword' पर सेट न करें !!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

के लिए zetacu (और erich ) के लिए बहुत धन्यवादइस उत्कृष्ट उत्तर (कुछ घंटों की खोज के बाद ...)

आनंद लें :- डी

एस


यह अब तक का सबसे अच्छा जवाब है, कम से कम mysql सर्वर 5.7 के लिए।
Zoltán Hajdú

सबसे अच्छा जवाब। धन्यवाद।
लुसियानो फंटुज़ी

11

MySQL 8.0.4+ पर

वर्तमान रूट उपयोगकर्ता को अद्यतन करने के लिए:

select current_user();
set password = 'new_password';

अन्य उपयोगकर्ता को अपडेट करने के लिए:

set password for 'otherUser'@'localhost' = 'new_password';

पासवर्ड अपडेट करने से पहले पासवर्ड पॉलिसी सेट करने के लिए:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

रूट पासवर्ड अपडेट करने का अन्य / बेहतर तरीका:

mysql_secure_installation

5.x प्रमाणीकरण के साथ रहना चाहते हैं ताकि आप अभी भी विरासत एप्लिकेशन का उपयोग कर सकें?

पर my.cnf

default_authentication_plugin = mysql_native_password

रूट अपडेट करने के लिए:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';

7

यह मेरे लिए काम किया -

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html


त्रुटि 1064 (42000): आपके SQL सिंटैक्स में कोई त्रुटि है; पंक्ति 1 पर 'IDNIFPED' 'MyNewPass' के पास उपयोग करने के लिए सही सिंटैक्स के लिए आपके MySQL सर्वर संस्करण से मेल खाने वाले मैनुअल की जाँच करें
9

सीएलआई के माध्यम से बस एसक्यूएल में सटीक नकल की: ओ
ट्रिनोनेसिस

बेशक, अपने सर्वर + mysql -u जड़ -p को sshed को mysql CLI पाने के लिए
trainoasis

6

आपको पासवर्ड रीसेट करना होगा! मैक ओएक्सएक्स (परीक्षण और काम करने वाले) और ubuntu के लिए कदम

MySQL बंद करो

$ sudo /usr/local/mysql/support-files/mysql.server stop

इसे सुरक्षित मोड में शुरू करें:

$ sudo mysqld_safe --skip-grant-tables

(ऊपर की लाइन पूरी कमांड है)

यह एक चालू कमांड होगा जब तक कि यह प्रक्रिया पूरी न हो जाए, एक और शेल / टर्मिनल विंडो खोलें, बिना पासवर्ड के लॉग इन करें:

$ mysql -u root

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

MySQL प्रारंभ करें

sudo /usr/local/mysql/support-files/mysql.server start

आपका नया पासवर्ड 'पासवर्ड' है।


मुझे एक संदेश मिला है: कोई डेटाबेस चयनित नहीं
Mimouni

@ मिमौनी इसे आज़माएं: stackoverflow.com/questions/21944936/…
tk_

5

MySQL 5.7.6 के लिए और बाद में:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 और पहले के लिए:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

3

वर्तमान नवीनतम mysql संस्करण (8.0.16) के लिए, इनमें से किसी भी उत्तर ने मेरे लिए काम नहीं किया।

कई अलग-अलग उत्तरों को देखने और उन्हें एक साथ मिलाने के बाद, मैंने यही काम करते हुए समाप्त किया:

update user set authentication_string='test' where user='root';

उम्मीद है की यह मदद करेगा।


2

एक सामान्य त्रुटि जिसे मैं समय-समय पर चलाता हूं, क्या मैं -pविकल्प भूल जाता हूं, तो क्या आप सुनिश्चित हैं कि आपने उपयोग किया है:

mysql -u root -p

2

MySQL 5.7 में, पासवर्ड को 'प्रमाणीकरण_स्ट्रिंग' से बदल दिया गया है।

उपयोग

update user set authentication_string=password('myfavpassword') where user='root';

2

MySQL पासवर्ड को बदलने के लिए mysqladmin कमांड-लाइन उपयोगिता का उपयोग करना :

mysqladmin --user=root --password=oldpassword password "newpassword"

स्रोत


1

@Kta से जवाब की कोशिश की, लेकिन मेरे लिए काम नहीं किया।

मैं MySQL 8.0 का उपयोग कर रहा हूं

यह मेरे लिए काम किया:

mysql> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'


1
कृपया अपने कोड में कुछ स्पष्टीकरण जोड़ें - यह वास्तव में सात साल पुराने प्रश्न को कैसे हल करता है?
निको हसे

ऐसा लगता है कि सात वर्षों में वाक्यविन्यास को बदल दिया गया है। यह PASSWORD () dev.mysql.com/doc/refman/8.0/en/set-password.html
kangkyu

पासवर्ड हैश का 41 अंकों का हेक्साडेसिमल नंबर होना चाहिए
Mimouni

1

इतने सारे हास्य, लेकिन मुझे इस विधि की मदद की गई थी:

sudo mysqladmin -u root password 'my password'

मेरे मामले में रूट करने के बाद मुझे रूट उपयोगकर्ता के लिए पासवर्ड के बिना mysql सेवा मिली थी, और मुझे अपनी सुरक्षा के लिए पासवर्ड सेट करने की आवश्यकता थी।


यह पुराने वाले को जाने बिना mysql रूट यूजर पासवर्ड को रीसेट करने के लिए इस्तेमाल किया जा सकता है। लेकिन सुनिश्चित करें कि किसी के पास आपके syslog तक पहुंच नहीं है, क्योंकि यह पासवर्ड लॉग किया गया है:Aug 07 16:21:55 ubuntupc sudo[93250]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/mysqladmin -u root password 'my password'
Gryu

0

सभी वैंप सेवाओं को रोकें, वैंप से बाहर निकलें।

ओपन नोटपैड तब टाइप करें> 'रूट' @ 'लोकलहोस्ट' के लिए सेट पासवर्ड = पासवर्ड ('');

फिर इसे c पर सहेजें: किसी भी नाम के साथ ड्राइव करें .. जैसे "c: /example.txt"

अब आपके "वैंप" फेल्डर वैंप> बिन> mysql> mysql (आपका संस्करण)> बिन मेरे केस पथ में "C: \ wamp \ bin \ mysql \ mysql5.6.1.15 \ bin" है

अब अपने पथ को कॉपी करें और फिर cmd चलाएं (ctrl + r) फिर "cmd" टाइप करें (एंटर करें)

cd टाइप करें, फिर cmd और पेस्ट पथ पर राइट क्लिक करें (अब) टाइप करें (mysqld --init-file = C: \ example.txt) बिना ब्रेसेस के फिर (दर्ज करें)

फिर पीसी को फिर से शुरू करें या टास्कमॉग खोलें और mysqld.exe को मारें

वैंप चालू करें और आपका पासवर्ड हटा दिया जाएगा ...


0

MacOS उपयोगकर्ताओं के लिए, यदि आप अपना रूट पासवर्ड भूल जाते हैं, तो @ इस तरह से @ Khara जवाब ( https://stackoverflow.com/a/28601069/5628856) ) अच्छा है, लेकिन कुछ और ट्रिक्स हैं:

यदि आप mysql serveride शुरू करने के लिए सिस्टम वरीयता का उपयोग कर रहे हैं, तो बस

sudo mysqld_safe --skip-grant-tables

आपके लिए काम नहीं कर सकता।

आपको यह सुनिश्चित करना होगा कि कमांड लाइन के तर्क सिस्टम स्टार्ट कॉन्फिगर के साथ ही हों।

निम्नलिखित कमांड मेरे लिए काम करती है:

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

आप उपयोग कर सकते हैं

ps aux | grep mysql

अपनी जांच करने के लिए।


-1

उबंटू पर,

sudo dpkg-reconfigure mysql-server-5.5 

5.5अपने वर्तमान संस्करण से बदलें और आपसे नया रूट पासवर्ड मांगा जाएगा।


किस OS में? इसका कोई अर्थ नहीं निकलता।
खोम नाज़िद

-1
  1. मैक ओपन सिस्टम वरीयताओं पर> MySQL।
  2. डेटाबेस को इनिशियलाइज़ करने के लिए MySQL के कॉन्फ़िगरेशन सेक्शन में।
  3. प्रॉम्प्ट में पासवर्ड बदलें। डेटाबेस इनिशियलाइज़ करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.