web-dev-qa-db-ja.com

MySQLパスワードが期限切れです。接続できない

私はちょうど私のMacを一掃し、そしてEl Capitanのフレッシュインストールをした。私は今Mysqlに接続するのに苦労しています。 Webサーバーのセットアッププロセスを経て、簡単な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.

私は以前に接続からのその応答を見たことがありません。接続できない場合はどうすれば解決できますか?

EDIT

ターミナルでコマンドを入力しました:

mysql -u root -p

これは私が入れた私のパスワード(現在のもの)を私にたずねました。

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

ALTER USERを使用してパスワードをリセットする方法

74
Coop

それで私はついに自分で解決策を見つけました。

まずターミナルに入り、次のように入力しました。

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');

166
Coop

まず、私が使用します:

 mysql -u root -p

現在の 'root'のパスワードを教えてください。次:

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

'new_password'をユーザー「root」の新しいパスワードに変更します。
それは私の問題を解決しました。

77
Piotr N.

mysqladmin -u [username] -p passwordは私のためにOS X El CapitanとMySQL 5.7.12 Community Serverで働きました。例:

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

これは、pavan sachiの回答と似ていますが、パスワードの入力を求められます。

私のエラーは「#1862 - あなたのパスワードは期限切れです。ログインするには、期限切れのパスワードをサポートするクライアントを使ってパスワードを変更する必要があります。」初めてphpMyAdminログイン画面で。

45
Kit

MySQLパスワードの有効期限

パスワードをリセットしても一時的にしか問題が解決されません。 MySQL 5.7.4から5.7.10まで(よりよいセキュリティを促進するために MySQL:Password Expiration Policy を参照)のデフォルトのdefault_password_lifetime変数値は360(1年)です。これらのバージョンの場合、この変数(または個々のユーザーアカウント)に変更を加えないとallパスワードは360日後に期限切れになります。

そのため、スクリプトから「あなたのパスワードは期限切れです。ログインするには、期限切れのパスワードをサポートするクライアントを使用してパスワードを変更する必要があります」というメッセージを受け取ることがあります。

自動パスワードの有効期限を停止するには、root(mysql -u root -p)としてログインし、サーバーに自動的に接続するクライアント(スクリプトなど)の場合、パスワードの有効期限設定を変更します。

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

またはあなたは自動パスワード有効期限を無効にすることができますすべてのユーザー

SET GLOBAL default_password_lifetime = 0;

コメントでMertaydinによって指摘されているように、この永続的なものにするためにMySQLは設定のmy.cnfグループの下で、[mysqld]ファイルに次の行を追加します。 my.cnfの場所はあなたの設定(例:Windows、OS XではHomebrew、インストーラー)、そしてUnixでもグローバルでもこの​​ユーザーごとにしたいかどうかによって異なります。

[mysqld] default_password_lifetime = 0(ここでも他の設定があるかもしれません...)

設定ファイルに関するMySQLのドキュメント を参照してください。

15
Dave Everitt

私は最近Mac os x capitanにmysqlをインストールしている間に同じ問題を経験しました。私はここで正しい答えを見つけることができなかったので、この答えを追加しました。

現在のバージョンのMySqlでは、mysqlをインストールすると一時パスワードが生成されます。このパスワードを使用して、以下のようにmysqladminユーティリティを使用して新しいパスワードを設定します。

/ usr/local/mysql/bin/mysqladmin -u root -p '<一時パスワード>' password '<新しいパスワード>

それがあなたや他の人々の役に立つことを願っています。

11
pavan sachi

ログインするにはMySQLワークベンチをダウンロードするだけです。パスワードを直ちに自動的に変更するように促されます。

7
Grassright

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
Dylan B

私は数日前にこの問題に直面しました。 5.7バージョンのMySQLに最適なソリューションです。 mysqlコンソールにログインし、次のコマンドでパスワードを変更してください。

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

Windowsのphpmyadminで、Variables:default_password_lifetimeを調べて、(360ではなく)0に切り替えてお楽しみください。

MySQLよりも360日かかる可能性があるので、my.iniに追加します。

[mysqld]
default_password_lifetime=0

そしてmysqlを再起動してください。

3
Laurent Zminka

警告:これはどのユーザもログインを許可します

私は他のことを試みなければなりませんでした。私のrootパスワードは期限が切れていて変更することはできないので

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

一時的にskip-grant-tables[mysqld]の下にmy.cnfを追加してmysqlを再起動するとうまくいきます

3
Marius.C

これは私のために働いた:

ALTER USER 'root' @ 'localhost' 'yourpassword'によって識別され、 'root' @ 'localhost'はパスワードを絶対に期限切れにしません。

3
Robert Saylor

最も簡単な解決策:

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

それから正常に動作します。

1
Fastorro

これらすべての答えはMySQLにアクセスするためにLinuxコンソールを使用しています。

Windowsを使用していてWAMPを使用している場合は、MySQLコンソール(click WAMP icon->MySQL->MySQL console)を開くことから始めることができます。

それからそれはあなたの現在のパスワードを入力するようにあなたに要求するでしょう、それを入力してください。

そしてSET PASSWORD = PASSWORD('some_pass');と入力してください。

1
Rust

mySQLサーバを--skip-grant-tablesオプションで再起動してから、新しいrootパスワードを設定します。

$ 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')を更新できます。

0

MySQLコンソールを開き、SET PASSWORD = 'your password'と入力します。そしてENTERキーを押して、rootユーザー用にあなたが定義したパスワードを設定します。

SET PASSWORD = ''だけ書くことができます。これにより、rootユーザーのパスワードが空白に設定されます。

0
Prasant Kumar

私はこのようなことをしました。

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

0

パスワードの有効期限はMySQL 5.6または5.7の新機能です。

答えは明らかです。期限切れのパスワード変更が可能なクライアントを使用する(私はSequel Proがそれを行うことができると思う)。

MySQLiライブラリは明らかに期限切れのパスワードを変更することができません。

Localhostへのアクセスが制限されていて、コンソールクライアントしか持っていない場合は、標準のmysqlクライアントで実行できます。

0
Daniel W.