Mysql पासवर्ड समाप्त हो गया। कनेक्ट नहीं कर सकते


87

मैंने सिर्फ अपने मैक को मिटा दिया और एल कैपिटन की एक नई स्थापना की। मैं अब मैसकल से जुड़ने के लिए संघर्ष कर रहा हूं। एक वेब सर्वर सेटअप प्रक्रिया से गुजरने के बाद, मैंने एक सरल PHP परीक्षण फ़ाइल बनाई है:

<?php
  $conn = new mysqli("127.0.0.1", "root", "xxxxxxxx");
  if ($conn->connect_error) echo "Connection failed: " . $conn->connect_error; 
  else echo "Connected successfully";
  phpinfo();
?>

जब मैं इसे चलाता हूं, मुझे यह त्रुटि मिलती है:

Warning: mysqli::mysqli(): (HY000/1862): Your password has expired. To log in you must change it using a client that supports expired passwords. in /Users/rich/Documents/DESIGN/test/index.php on line 3
Connection failed: Your password has expired. To log in you must change it using a client that supports expired passwords.

मैंने पहले कभी किसी कनेक्शन से उस प्रतिक्रिया को नहीं देखा है। अगर मैं कनेक्ट नहीं कर सकता, तो मैं इसे कैसे ठीक करूं?

संपादित करें

टर्मिनल में मैंने कमांड दर्ज की:

mysql -u root -p

इसने मुझसे मेरा पासवर्ड (वर्तमान एक) मांगा, जिसे मैंने डाल दिया। अब मेरे पास mysql कमांड्स तक पहुंच है, लेकिन इस त्रुटि के परिणाम में कुछ भी मैं कोशिश करता हूं:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

मैं पासवर्ड का उपयोग करके रीसेट कैसे करूं ALTER USER?


मैं एक ही मुद्दा रहा हूँ।
रोहन सैनप

यह वास्तव में कष्टप्रद है कि इस वजह से एक पूरी सेवा बंद हो सकती है
टोफुटिम

1
दौड़ने की कोशिश करें/usr/local/mysql/bin/mysqladmin -u root -p password
कॉनर लीच

1
@ConnorLeech ने homebrew के MariaDB को रूट पासवर्ड समाप्त करने की कोशिश करने में घंटों बिताए, लेकिन यह मेरे लिए तय किया - धन्यवाद!
एलेक्स होल्सरोगेव

जवाबों:


179

इसलिए मैंने आखिरकार खुद ही इसका हल ढूंढ लिया।

सबसे पहले मैंने टर्मिनल में जाकर टाइप किया:

mysql -u root -p

इसने मेरे वर्तमान पासवर्ड के लिए कहा जो मैंने टाइप किया और इसने मुझे अधिक mysql कमांड प्रदान करने के लिए एक्सेस दिया। मैंने यहां से जो कुछ भी आजमाया, उसने यह त्रुटि दी:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

यह भ्रामक है क्योंकि मैं वास्तव में ALTER USERकथन का उपयोग करके पासवर्ड रीसेट करने का एक तरीका नहीं देख सकता था, लेकिन मुझे एक और सरल समाधान मिला:

SET PASSWORD = PASSWORD('xxxxxxxx');


क्या यह ठीक से काम करता है? क्या भविष्य में इन चरणों का पालन करने के बाद इसमें कोई त्रुटि थी?
रोहन सांप

आपका बहुत बहुत धन्यवाद! इसने मेरे लिए भी काम किया। मुझे बहुत घंटे बचे।
TBJ

5
मैं MySQL के संस्करण 5.7.9 का उपयोग करता हूं और इसे अब पदावनत कर दिया गया है क्योंकि MySQL कमांड प्रॉम्प्ट से यह त्रुटि संदेश हमें बताता है: चेतावनी (कोड 1287): 'SET PASSWORD = PASSWORD (' <plaintext_password '') 'को हटा दिया गया है और इसे हटा दिया जाएगा। भविष्य का विमोचन। कृपया इसके बजाय SET PASSWORD = '<plaintext_password>' का उपयोग करें
Fabiano

मुझे खेद है कि यह मेरे लिए काम नहीं करता था लेकिन पियोट एन द्वारा पोस्ट किए गए परिवर्तन उपयोगकर्ता ने काम किया। शायद MySQL के विभिन्न संस्करण पर काम कर रहा है।
एमजी डेवलपर

89

सबसे पहले, मैं उपयोग करता हूं:

 mysql -u root -p

'रूट' के लिए अपना वर्तमान पासवर्ड देना। आगे:

mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password',
       `root`@`localhost` PASSWORD EXPIRE NEVER;

'new_password'उपयोगकर्ता 'रूट' के लिए एक नया पासवर्ड बदलें ।
इसने मेरी समस्या हल कर दी।


3
त्रुटि प्राप्त करना: ERROR 1064 (42000): आपके SQL सिंटैक्स में एक त्रुटि है; 'USER' रूट '@' लोकलहोस्ट के पास उपयोग करने के लिए सही वाक्यविन्यास के लिए आपके MySQL सर्वर संस्करण से मेल खाने वाले मैनुअल की जाँच करें। 'newPassword' द्वारा IDENTIFIED, 'रूट' @ 'लोकलहोस्ट' PASSWORD 1 लाइन पर
केताव छोटालिया

इसने अच्छा काम किया। ALTER USER 'यूजरनेम' @ '%' IDENTIFIED BY 'your_password', 'user' @ '%' PASSWORD EXPIRE NEVER;
TheLegendaryCopyCoder

1
त्रुटि प्राप्त करना: ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
पुलकित पाहवा

52

mysqladmin -u [username] -p passwordमेरे लिए OS X El Capitan और MySQL 5.7.12 कम्यूनिटी सर्वर पर काम किया। उदाहरण:

$ /usr/local/mysql/bin/mysqladmin -u root -p password
Enter password:
New password:
Confirm new password:
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

यह पावन साची के उत्तर के समान है, लेकिन पासवर्ड संकेत देता है।

मेरी त्रुटि थी "# 1862 - आपका पासवर्ड समाप्त हो गया है। लॉग इन करने के लिए आपको उस क्लाइंट का उपयोग करके इसे बदलना होगा जो एक्सपायर्ड पासवर्ड का समर्थन करता है।" पहली बार phpMyAdmin लॉगिन स्क्रीन पर।


मेरे लिए भी काम किया, OS X El Capital और MySQL 5.17.13! इसके लिए धन्यवाद!
ज़ेके

5
यह ध्यान देने योग्य है कि शब्द "पासवर्ड" एक प्लेसहोल्डर नहीं है , जबकि "रूट" उस उपयोगकर्ता का नाम है जिसे आप अपडेट करना चाहते हैं:mysqladmin -u [username] -p password
random_user_name

यह केवल एक चीज है जो (प्रतीत होता है) मेरे लिए लिनक्स (फेडोरा 25) पर काम करती थी। धन्यवाद।
अविनाश मीतू

हलिलुय !! श्रेष्ठ। आदेश। कभी। मैंने हर जगह देखा लेकिन यह आखिर क्या है। बहुत बहुत धन्यवाद
कॉनर लीच

19

MySQL पासवर्ड एक्सपायरी

पासवर्ड रीसेट करने से समस्या केवल अस्थायी रूप से हल होगी। MySQL 5.7.4 से 5.7.10 (बेहतर सुरक्षा को प्रोत्साहित करने के लिए - MySQL: पासवर्ड समाप्ति नीति देखें ) डिफ़ॉल्ट default_password_lifetimeचर मान 360 (1 वर्ष-ईश) है। उन संस्करणों के लिए, यदि आप इस चर (या व्यक्तिगत उपयोगकर्ता खातों) में कोई बदलाव नहीं करते हैं, तो सभी पासवर्ड 360 दिनों के बाद समाप्त हो जाते हैं।

इसलिए एक स्क्रिप्ट से आपको संदेश मिल सकता है: "आपका पासवर्ड समाप्त हो गया है। लॉग इन करने के लिए आपको उस क्लाइंट का उपयोग करके इसे बदलना होगा जो एक्सपायर्ड पासवर्ड का समर्थन करता है।"

स्वचालित पासवर्ड समाप्ति को रोकने के लिए, रूट ( mysql -u root -p) के रूप में लॉग इन करें , फिर, क्लाइंट के लिए जो स्वचालित रूप से सर्वर से कनेक्ट होते हैं (जैसे स्क्रिप्ट।) पासवर्ड समाप्ति सेटिंग्स बदलें।

ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;

या आप सभी उपयोगकर्ताओं के लिए स्वचालित पासवर्ड समाप्ति को अक्षम कर सकते हैं :

SET GLOBAL default_password_lifetime = 0;

जैसा कि टिप्पणियों में मर्टायडीन ने कहा है, इस स्थाई को सेटिंग्स my.cnfके [mysqld]समूह के तहत एक लाइन MySQL में स्टार्टअप पर पढ़ी जाने वाली फ़ाइल में निम्नलिखित पंक्ति जोड़ने के लिए । के स्थानmy.cnf अपने सेटअप (जैसे विंडोज, या Homebrew ओएस एक्स पर, या एक इंस्टॉलर) पर निर्भर करता है, और आप यूनिक्स या वैश्विक पर इस प्रति-उपयोगकर्ता चाहते हैं:

[Mysqld] default_password_lifetime = 0 (यहां अन्य सेटिंग्स भी हो सकती हैं ...)

कॉन्फ़िगरेशन फ़ाइलों पर MySQL डॉक्स देखें ।


2
पहले से ही समाप्त पासवर्ड के साथ, केवल वैश्विक सेटिंग ने मेरे लिए काम किया।
मारार्टिनस

2
आप mysqld के तहत इस पैरामीटर को /etc/mysql/my.cnf में जोड़ सकते हैं; default_password_lifetime = 0 अन्यथा, mysql पुनरारंभ होने के बाद आपको फिर से वही त्रुटि मिलेगी।
मर्टायिन

2
धन्यवाद @Dave Everitt & @mertaydin!
WebMW

11

मैं हाल ही में मैक ओएस एक्स कैपिटान पर mysql स्थापित करते हुए उसी मुद्दे से गुजरा। मुझे यहाँ सही उत्तर नहीं मिला, इसलिए मैंने इस उत्तर को जोड़ा।

MySql वर्तमान संस्करणों में, जब आप mysql स्थापित करते हैं तो एक अस्थायी पासवर्ड उत्पन्न करता है। नीचे दिए गए mysqladmin उपयोगिता का उपयोग करके एक नया पासवर्ड सेट करने के लिए इस पासवर्ड का उपयोग करें;

/ usr / स्थानीय / mysql / bin / mysqladmin -u root -p '<अपने अस्थायी पासवर्ड>' पासवर्ड '<आपका नया पासवर्ड>'

आशा है कि यह आपकी और दूसरों की मदद करता है।


7

लॉग इन करने के लिए बस MySQL कार्यक्षेत्र डाउनलोड करें। यह आपको तुरंत और स्वचालित रूप से पासवर्ड बदलने के लिए संकेत देगा।


4

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

mysqld_safe --skip-grant-tables &

MYSQL सर्वर से कनेक्ट करें

mysql -u root

पासवर्ड रीसेट करने के लिए SQL कमांड चलाएं:

use mysql;
SET GLOBAL default_password_lifetime = 0;
SET PASSWORD = PASSWORD('new_password');

अंतिम चरण, अपनी mysql सेवा को पुनरारंभ करें


4

मैंने कुछ दिनों पहले इस मुद्दे का सामना किया है। MySQL के 5.7 संस्करण के लिए सबसे अच्छा समाधान के लिए; अपने mysql कंसोल को लॉगिन करें और निम्न कमांड के साथ अपना पासवर्ड बदलें:

ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;

4

चेतावनी: यह किसी भी उपयोगकर्ता को लॉगिन करने की अनुमति देगा

मुझे कुछ और कोशिश करनी थी। चूँकि मेरे रूट पासवर्ड की समय सीमा समाप्त हो गई थी और इसे बदलना एक विकल्प नहीं था क्योंकि

Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted

अस्थायी रूप से जोड़ने skip-grant-tablesके नीचे [mysqld]में my.cnfऔर पुन: प्रारंभ mysql चाल किया


4

वेरिएबल्स में phpmyadmin लुक में विंडोज पर: default_password_lifetime, और इसे 0 पर स्विच करें (360 के बजाय), आनंद लें।

MySQL की तुलना में इसकी संभावना फिर से 360 दिन है, इसलिए my.ini में जोड़ें:

[mysqld]
default_password_lifetime=0

और mysql को पुनरारंभ करें।


Default_password_lifetime की तुलना में संभव है फिर से 360 दिन, इसलिए my.ini में जोड़ें:
लॉरेंट ज़मिन्का


1

MySQL सर्वर को --स्काइप-ग्रांट-टेबल विकल्प के साथ पुनरारंभ करें और फिर एक नया रूट पासवर्ड सेट करें

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET password=PASSWORD("NEWPASSWORD") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

अब यदि आपको आवश्यकता है, तो आप mysql.user तालिका (फ़ील्ड password_expired = 'N') को अपडेट कर सकते हैं, पासवर्ड को समाप्त करने के लिए नहीं।


जब मैं पहली कमांड दर्ज करता हूं तो मुझे mysql -u rootयह त्रुटि मिलती है:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
CaribouCode

जिस रिकॉर्ड के लिए मैं पहली कमांड को बदलकर प्राप्त करने में सफल रहा, mysql -u root -pउसके बाद उसने मुझसे पासवर्ड पूछा, जो मैंने डाला। आपके अगले कमांड ने मेरे लिए काम नहीं किया क्योंकि उसने कहाYou must reset your password using ALTER USER statement before executing this statement.
कारिबूकोड

क्या आप जानते हैं कि ALTER USER का उपयोग करके पासवर्ड कैसे रीसेट करें? मैं मैसकल के साथ अच्छा नहीं हूँ (मैं एक NodeJS / MongoDB व्यक्ति हूं)।
कारिबूकोड

1

ये सभी जवाब MySQL तक पहुंचने के लिए लिनक्स कंसोल का उपयोग कर रहे हैं।

यदि आप विंडोज पर हैं और WAMP का उपयोग कर रहे हैं, तो आप MySQL कंसोल ( click WAMP icon->MySQL->MySQL console) खोलकर शुरू कर सकते हैं ।

फिर यह आपसे आपका वर्तमान पासवर्ड दर्ज करने का अनुरोध करेगा, इसे दर्ज करें।

और फिर टाइप करें SET PASSWORD = PASSWORD('some_pass');


1

सबसे अच्छा आसान समाधान:

[PATH MYSQL]/bin/mysql -u root
[Enter password]
SET GLOBAL default_password_lifetime = 0;

और फिर ठीक काम करता है।


1

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

स्रोत: https://www.diariodeunprogramador.net/fallo-al-conectar-mysql-your-password-expired/

रूट के रूप में लॉगिन करें:

mysql -u root -p

और फिर आप सभी उपयोगकर्ताओं के पासवर्ड की स्वचालित समाप्ति को निष्क्रिय कर देते हैं:

SET GLOBAL default_password_lifetime = 0;

0

पासवर्ड की समाप्ति MySQL 5.6 या 5.7 में एक नई सुविधा है।

उत्तर स्पष्ट है: एक क्लाइंट का उपयोग करें जो समाप्त पासवर्ड बदलने में सक्षम है (मुझे लगता है कि सीक्वल प्रो यह कर सकता है)।

MySQLi पुस्तकालय स्पष्ट रूप से समयसीमा समाप्त पासवर्ड को बदलने में सक्षम नहीं है।

यदि आपकी लोकलहोस्ट तक सीमित पहुंच है और आपके पास केवल कंसोल क्लाइंट है, तो मानक mysql क्लाइंट कर सकता है।


2
आपके प्रतिक्रिया के लिए धन्येवाद। मैंने Sequel Pro डाउनलोड किया है और उस के साथ सॉकेट के माध्यम से जुड़ने की कोशिश की है। मुझे पासवर्ड की समय-सीमा समाप्त होने के बारे में वही त्रुटि मिलती है ...
कारिबूकोड

0

MySQL कंसोल खोलें और SET PASSWORD = 'अपना पासवर्ड' टाइप करें; और फिर ENTER कुंजी दबाएं जो उपयोगकर्ता रूट के लिए आपका निर्धारित पासवर्ड सेट करेगा।

आप केवल SET PASSWORD = '' लिख सकते हैं; जो रूट उपयोगकर्ता के लिए रिक्त के रूप में पासवर्ड सेट करेगा।



0

बस MySQL वर्कबेंच खोलें और [इंस्टेंस] स्टार्टअप / शटडाउन चुनें और स्टार्ट सर्वर पर क्लिक करें। इसने मेरे लिए काम किया

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