MySQL v5.7 का उपयोग करके MySQL 'रूट' पासवर्ड कैसे बदलें?


14

वर्तमान वातावरण:

mysql> show variables like "%version%";
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 5.7.13                       |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| tls_version             | TLSv1,TLSv1.1                |
| version                 | 5.7.13                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86_64                       |
| version_compile_os      | Linux                        |
+-------------------------+------------------------------+
8 rows in set (0.01 sec)

पासवर्ड बदलें कमांड उपयोगकर्ता:

mysql> update user set password=PASSWORD("XXXX") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

क्या मैं कुछ भूल रहा हूँ?


mysqlसुरक्षित मोड के तहत शुरू करने का प्रयास करें। तो आप रूट पासवर्ड बदल सकते हैं
Mongrel

इस धागे को पढ़ने वाले किसी को भी। MySQL 5.7 में हुड के तहत काफी बदलाव हैं। कृपया उन्नयन से पहले उनके बारे में पढ़ें ।
रुई एफ रिबेरो

जवाबों:


24

MySQL 5.7 में, passwordमें क्षेत्र mysql.userतालिका फ़ील्ड हटा दिया गया था, अब क्षेत्र का नाम है authentication_string

पहले डेटाबेस चुनें:

mysql> use mysql;

और फिर तालिकाएँ दिखाएं:

mysql> show tables;

आप userतालिका पाएंगे , और इसके क्षेत्र देखेंगे:

mysql> describe user;

आपको एहसास होगा कि कोई फ़ील्ड नाम नहीं है password, पासवर्ड फ़ील्ड नाम है authentication_string। तो, बस यह करें:

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

जैसा कि @ रुई एफ रिबेरो द्वारा सुझाया गया है, वैकल्पिक रूप से आप चला सकते हैं:

mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');

1
प्रमाणीकरण_ संदर्भ के लिए +1। मैं हाल ही में 5.7
रुई एफ रिबेरो

4
हालांकि यह पूरी तरह से इस उत्तर के लिए निर्देशित नहीं है, 5.7 के लिए एक और विकल्प हैSET PASSWORD FOR 'root' = PASSWORD('new_password');
रुई एफ रिबेरो

1
@RuiFRibeiro धन्यवाद, मेरा जवाब अपडेट किया
राहुल

1
राहुल ने शुरू में धागा को बाद में 5.7 से संपादित किया, लेकिन फिर इसे MySQL 5.7 का उपयोग करके बदल दिया, ताकि प्रश्न की भावना को अधिक रखा जा सके। उदा। @ शिवू को नहीं पता था कि यह 5.7 में बदलाव है।
रुई एफ रिबेरो

1
यह प्रश्न को तैयार करने का एक तरीका है। हम केवल ओपी के लाभ के लिए प्रश्न और उत्तर संपादित नहीं कर रहे हैं, बल्कि बाद में दूसरों के लिए भी।
रुई एफ रिबेरो

2

पासवर्ड बदलने का MySQL तरीका है SET PASSWORD

SET PASSWORD FOR 'root' = PASSWORD('new_password');

MySQL 5.7 संदर्भ मैनुअल देखें ... / / सेट पासवर्ड सिंटैक्स

SET PASSWORD स्टेटमेंट एक MySQL उपयोगकर्ता खाते को एक पासवर्ड निर्दिष्ट करता है, जो या तो क्लीयरटेक्स्ट (अनएन्क्रिप्टेड) ​​या एन्क्रिप्टेड मूल्य के रूप में निर्दिष्ट होता है:

'auth_string' represents a cleartext password.

'hash_string' represents an encrypted password.

राहुल के स्वीकृत जवाब से पता चलता है कि DMLस्टेटमेंट के साथ पासवर्ड कैसे अपडेट करें ।

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

चेतावनी: यह आधिकारिक और समर्थित तरीका नहीं है। यह परेशानी पैदा कर सकता है, अगर आपको नहीं पता कि आप क्या कर रहे हैं। मत भूलना FLUSH PRIVILEGES

अधिकांश परिचालनों के लिए, जैसे उपयोगकर्ता बनाना, उसके विशेषाधिकारों को बदलना या उसके पासवर्ड को बदलना, आप उच्च-स्तरीय कथनों का उपयोग करना चाहेंगे। न केवल उनका उपयोग करना आसान है और वे बड़ी संख्या में MySQL संस्करणों के साथ संगत हैं, लेकिन वे आपको गलतियाँ करने से भी रोकेंगे (निश्चित रूप से, "NO_AUTO_CREATE_USER" sql मोड) सेटअप करने के लिए याद रखें। यहां तक ​​कि वे आमतौर पर MyeraAM- शत्रुतापूर्ण वातावरण में एक गैलेरा क्लस्टर की तरह अच्छी तरह से काम करते हैं।

FLUSH PRIVILEGES का उपयोग बंद करें

कृपया उपयोग GRANT, REVOKE, SET PASSWORD, या RENAME USERऔर नहीं प्रत्यक्ष DML बयान।

अपडेट: SET PASSWORD ... = PASSWORD ('ost_string') सिंटैक्स को MySQL 5.7.6 के रूप में चित्रित किया गया है और इसे भविष्य के MySQL रिलीज में हटा दिया जाएगा।


1

mysqladmin -u user-name password -p "oldpassword" "newpass"

यदि आप लॉगिन कर सकते हैं तो इस ""अभ्यस्त काम को ''एकल उद्धरण की कोशिश करें

update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';


जबकि मैं mysqladmin उत्तर पसंद करता हूं, राहुल का जवाब देखें। आपकी SQL क्वेरी पुरानी है। मैंने mysqladmin को सही किया, आपको पासवर्ड निर्देश याद आ रहा था।
रुई एफ रिबेरो

1
धन्यवाद रिबेरो। मैं चूक गयाauthentication_string
मोंगरेल

0

मेरे मामले में

mysql.server start
$ mysql -uroot
mysql> update user set authentication_string=password('123456') where User='root';
mysql> exit;
mysql.server restart (if you not restart , connection will not work.)

तो मुझे लगता है, आपका अपडेट कमांड सही है, लेकिन आपको अपने mysql सर्वर को पुनरारंभ करना होगा।


-1

इस समस्या के लिए, मैंने एक सरल और अशिष्ट विधि का उपयोग किया, पासवर्ड के लिए फ़ील्ड नाम का नाम बदलें, इसका कारण यह है कि मैं विज़ुअल ऑपरेशन त्रुटि में मैक नेवीकैट प्रीमियम सॉफ़्टवेयर का उपयोग करता हूं: अज्ञात कॉलम 'पासवर्ड' 'फ़ील्ड सूची' में, सॉफ़्टवेयर स्वयं पासवर्ड का उपयोग करता है ताकि मैं आसानी से काम न कर सकूं। इसलिए, मैं डेटाबेस कमांड लाइन में रूट करता हूं, रन करता हूं

Use mysql;

और फिर फ़ील्ड नाम को संशोधित करें:

ALTER TABLE user CHANGE authentication_string password text;

सब सामान्य होने के बाद।

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