Mysql şifresinin süresi doldu. Bağlanamıyorum


87

Mac'imi sildim ve yeni bir El Capitan yüklemesi yaptım. Şimdi Mysql'e bağlanmakta zorlanıyorum. Bir web sunucusu kurulum sürecinden geçtikten sonra basit bir PHP test dosyası oluşturdum:

<?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();
?>

Çalıştırdığımda şu hatayı alıyorum:

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.

Daha önce bir bağlantıdan bu cevabı hiç görmemiştim. Bağlanamıyorsam nasıl düzeltebilirim?

DÜZENLE

Terminalde şu komutu girdim:

mysql -u root -p

Bu benden girdiğim şifremi (mevcut olanı) istedi. Artık mysql komutlarına erişimim var, ancak denediğim herhangi bir şey bu hatayla sonuçlanıyor:

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

Kullanarak şifreyi nasıl sıfırlarım ALTER USER?


Ben de aynı sorunu yaşıyorum.
Rohan Sanap

Bu nedenle tüm hizmetin kapatılabilmesi gerçekten sinir bozucu
tofutim

1
/usr/local/mysql/bin/mysqladmin -u root -p password
Connor Leech

1
@ConnorLeech, homebrew'in MariaDB'sinin süresi dolmuş kök şifresini sıfırlamaya çalışırken saatler harcadı, ancak bu benim için sorunu çözdü - teşekkürler!
Alex Holsgrove

Yanıtlar:


179

Sonunda çözümü kendim buldum.

Önce terminale girdim ve yazdım:

mysql -u root -p

Bu, yazdığım mevcut parolamı istedi ve daha fazla mysql komutları sağlamama erişim sağladı. Buradan denediğim her şey şu hatayı verdi:

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

Bu kafa karıştırıcı çünkü ALTER USERifadeyi kullanarak şifreyi sıfırlamanın bir yolunu gerçekten göremedim , ancak başka bir basit çözüm buldum:

SET PASSWORD = PASSWORD('xxxxxxxx');


Bu düzgün çalıştı mı? İleride bu adımları izledikten sonra herhangi bir hata verdi mi?
Rohan Sanap

Çok teşekkürler! Bu benim için de çalıştı. Bana saatler kazandırdı.
TBJ

5
MySQL 5.7.9 sürümünü kullanıyorum ve bu artık MySQL komut isteminden gelen bu hata mesajının bize söylediği için kullanımdan kaldırıldı: Uyarı (Kod 1287): 'SET PASSWORD = PASSWORD (' <plaintext_password> ')' kullanımdan kaldırıldı ve içinde kaldırılacak gelecekteki bir sürüm. Lütfen bunun yerine SET ŞİFRE = '<plaintext_password>' kullanın
Fabiano

Bunun benim için işe yaramadığı için üzgünüm, ancak Piotr N. tarafından yayınlanan alter kullanıcı çalıştı. Muhtemelen MySQL'in farklı sürümlerinde çalışıyor.
MG Developer

89

İlk olarak, kullanıyorum:

 mysql -u root -p

Mevcut şifremi 'root' için veriyor. Sonraki:

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

'new_password''Root' kullanıcısı için yeni bir şifre ile değiştirin .
Sorunumu çözdü.


3
Hata Alma: ERROR 1064 (42000): SQL sözdiziminizde bir hata var; 1. satırda 'USER' root '@' localhost '' newPassword ',' root '@' localhost 'PASSWORD' yakınında kullanılacak doğru sözdizimi için MySQL sunucu sürümünüze karşılık gelen
kılavuza bakın

Bu iyi çalıştı. ALTER KULLANICI 'kullanıcı adı' @ '%', 'şifreniz', 'kullanıcı' @ '%' ŞİFRE HİÇBİR ZAMAN GEÇERLİ OLMAZ;
TheLegendaryCopyCoder

1
Hata alma: ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
Pulkit Pahwa

52

mysqladmin -u [username] -p passwordOS X El Capitan ve MySQL 5.7.12 Community Server'da benim için çalıştı. Misal:

$ /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.

Bu, pavan sachi'nin cevabına benzer, ancak şifre istemleriyle.

Benim hatam "# 1862 - Şifrenizin süresi doldu. Giriş yapmak için, süresi dolmuş şifreleri destekleyen bir istemci kullanarak şifreyi değiştirmelisiniz." phpMyAdmin oturum açma ekranında ilk kez.


Benim için de çalıştı, OS X El Capital ve MySQL 5.17.13! Bunun için teşekkürler!
Zeke

5
"Şifre" kelimesinin bir yer tutucu olmadığından bahsetmeye değer , oysa "root" güncellemek istediğiniz kullanıcının adıdır:mysqladmin -u [username] -p password
random_user_name

Linux'ta (Fedora 25) benim için (görünüşte) işe yarayan tek şey budur. Teşekkürler.
Avinash Meetoo

Hallelujah !! en iyi. komut. hiç. Her yere baktım ama nihayet çözen buydu. Çok teşekkür ederim
Connor Leech

19

MySQL şifresinin geçerlilik süresi

Parolanın sıfırlanması sorunu yalnızca geçici olarak çözecektir. MySQL 5.7.4'ten 5.7.10'a (daha iyi güvenliği teşvik etmek için - bkz. MySQL: Parola Sona Erme Politikası ) varsayılan default_password_lifetimedeğişken değeri 360'tır (1 yıl). Bu sürümler için, bu değişkende (veya bireysel kullanıcı hesaplarında) herhangi bir değişiklik yapmazsanız, tüm parolaların süresi 360 gün sonra dolar.

Dolayısıyla, bir komut dosyasından şu mesajı alabilirsiniz: "Parolanızın süresi doldu. Giriş yapmak için, süresi dolmuş parolaları destekleyen bir istemci kullanarak parolanızı değiştirmelisiniz."

Otomatik parola süresinin dolmasını durdurmak için, root ( mysql -u root -p) olarak oturum açın , ardından sunucuya otomatik olarak bağlanan istemciler için (örn. Komut dosyaları) parola süre sonu ayarlarını değiştirin:

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

VEYA tüm kullanıcılar için otomatik şifre son kullanma tarihini devre dışı bırakabilirsiniz :

SET GLOBAL default_password_lifetime = 0;

Mertaydın'ın yorumlarda belirttiği gibi, bunu kalıcı kılmak için aşağıdaki satırı my.cnfMySQL'in başlangıçta okuduğu bir dosyaya [mysqld]ayarlar grubu altında ekleyin . Konumu, my.cnfkurulumunuza (ör. Windows veya OS X üzerinde Homebrew veya bir yükleyici) ve bunu kullanıcı başına Unix'te mi yoksa globalde mi istediğinize bağlıdır:

[mysqld] default_password_lifetime = 0 (Burada başka ayarlar da olabilir ...)

Yapılandırma dosyalarındaki MySQL belgelerine bakın .


2
Zaten süresi dolmuş bir parola ile sadece genel ayar benim için çalıştı.
maaartinus

2
Bu parametreyi /etc/mysql/my.cnf, mysqld altına ekleyebilirsiniz; default_password_lifetime = 0 Aksi takdirde, mysql yeniden başlatıldıktan sonra aynı hatayı tekrar alırsınız.
mertaydin

2
Teşekkürler @Dave Everitt & @mertaydin!
WebMW

11

Mac os x capitan üzerine mysql yüklerken son zamanlarda aynı sorunu yaşadım. Burada doğru cevabı bulamadım, bu yüzden bu cevabı ekledim.

Mevcut sürümlerde MySql, mysql'yi kurduğunuzda geçici bir parola oluşturur. Aşağıdaki gibi mysqladmin yardımcı programını kullanarak yeni bir parola belirlemek için bu parolayı kullanın;

/ usr / local / mysql / bin / mysqladmin -u root -p '<geçici şifreniz>' şifre '<yeni şifreniz>'

Umarım size ve başkalarına yardımcı olur.


7

Giriş yapmak için MySQL çalışma tezgahını indirmeniz yeterlidir. Şifreyi hemen ve otomatik olarak değiştirmenizi isteyecektir.


4

MYSQL'i güvenli modda başlat

mysqld_safe --skip-grant-tables &

MYSQL sunucusuna bağlanın

mysql -u root

şifreyi sıfırlamak için SQL komutlarını çalıştırın:

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

Son adım, mysql hizmetinizi yeniden başlatın


4

Bu sorunla birkaç gün önce karşılaştım. MySQL'in 5.7 sürümü için en iyi çözüm için; mysql konsolunuzda oturum açın ve aşağıdaki komutla şifrenizi değiştirin:

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

4

UYARI: bu, herhangi bir kullanıcının oturum açmasına izin verecektir

Başka bir şey denemeliydim. Root parolamın süresi dolduğundan ve değiştirmek bir seçenek olmadığından

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

Geçici ekleyerek skip-grant-tablesaltından da [mysqld]içinde my.cnfve yeniden başlatmayı MySQL hile yaptı


4

Windows'ta phpmyadmin'de Değişkenler'e bakın: default_password_lifetime ve bunu 0'a (360 yerine) değiştirin, keyfini çıkarın.

MySQL'in tekrar 360 gün sürmesi mümkündür, bu yüzden my.ini'ye ekleyin:

[mysqld]
default_password_lifetime=0

Ve mysql'yi yeniden başlatın.



4

Bu benim için çalıştı:

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

1

MySQL sunucusunu --skip-grant-tables seçeneğiyle yeniden başlatın ve ardından yeni bir kök parolası belirleyin

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

Şimdi ihtiyacınız olursa, parolanın süresinin dolmaması için mysql.user tablosunu (alan password_expired = 'N') güncelleyebilirsiniz.


İlk komutu mysql -u rootgirdiğimde şu hatayı alıyorum:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
CaribouCode

Kayıt için, ilk komutu olarak değiştirerek içeri girmeyi başardım ve mysql -u root -psonra benden girdiğim şifreyi istedi. Bir sonraki komutunuz benim için işe yaramadı çünküYou must reset your password using ALTER USER statement before executing this statement.
CaribouCode

ALTER USER kullanarak parolayı nasıl sıfırlayacağınızı biliyor musunuz? Mysql ile o kadar iyi değilim (daha çok NodeJS / MongoDB kişisiyim)
CaribouCode

1

Tüm bu cevaplar MySQL'e erişmek için Linux konsollarını kullanıyor.

Windows kullanıyorsanız ve WAMP kullanıyorsanız, MySQL konsolunu ( click WAMP icon->MySQL->MySQL console) açarak başlayabilirsiniz .

Sonra sizden mevcut şifrenizi girmenizi isteyecek, giriniz.

Ve sonra yazın SET PASSWORD = PASSWORD('some_pass');


1

en kolay çözüm:

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

ve sonra iyi çalışıyor.



0

Parola sona erme, MySQL 5.6 veya 5.7'deki yeni bir özelliktir.

Cevap açık: Süresi dolmuş şifre değiştirme yeteneğine sahip bir istemci kullanın (Sequel Pro'nun bunu yapabileceğini düşünüyorum).

MySQLi kütüphanesi açık bir şekilde süresi dolmuş şifreyi değiştiremez.

Localhost'a sınırlı erişiminiz varsa ve yalnızca bir konsol istemciniz varsa, standart mysql istemcisi bunu yapabilir.


2
Cevabınız için teşekkürler. Sequel Pro'yu indirdim ve bununla soket aracılığıyla bağlanmayı denedim. Parolanın süresinin dolmasıyla ilgili aynı hatayı alıyorum ...
CaribouCode

0

MySQL konsolunu açın ve SET PASSWORD = 'şifreniz' yazın; ve sonra kullanıcı kökü için tanımlı şifrenizi belirleyecek olan ENTER tuşuna basın.

Yalnızca SET PASSWORD = '' yazabilirsiniz; bu, root kullanıcısı için parolayı boş olarak ayarlayacaktır.


0

Ben böyle bir şey yaptım.

UPDATE mysql.user SET authentication_string = PASSWORD(''), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';

1
You must reset your password using ALTER USER statement before executing this statement.
Weijing Jay Lin

0

MySQL Workbench'i açın ve [Örnek] Başlatma / Kapatma'yı seçin ve sunucuyu başlat'a tıklayın. Benim için çalıştı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.