web-dev-qa-db-ja.com

一時パスワードを自動生成した後、MySQLにアクセスできません

OSX 10.11 El Capitanを消去してインストールし、 このチュートリアル を実行してMySQLを新しいOS Xで起動して実行しました。最初のステップは、ダウンロードすることでした MySQL For Mac OS X 10.9( x86、64ビット)、DMGアーカイブ (10.11で動作、チュートリアルで推奨)。 MySQLのインストールを完了すると、次のようなメッセージが表示されました。

2015-10-25T02:10:54.549219Z 1 [Note] A temporary password is generated for root@localhost: R>gFySuiu23U

If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.

それは変だった、私はそのようなメッセージを見たことがない。その後、Preference Paneを介してMySQLを起動し、ターミナルで/usr/local/mysql/bin/mysql -vコマンドを使用して別の手順を実行します。次のようなエラーメッセージが表示されました。

ERROR 1045 (28000): Access denied for user 'cheetah'@'localhost' (using password: NO)

Rootをユーザー名および空のパスワードとして使用して、Sequel Proを介してデータベースにアクセスしようとしましたが、アクセス拒否メッセージが表示されました:

Unable to connect to Host 127.0.0.1 because access was denied.

Double-check your username and password and ensure that access from your current location is permitted.

MySQL said: Access denied for user 'root'@'localhost' (using password: NO)

さて、rootをユーザー名として使用し、「R> gFySuiu23U」をパスワード(MySQLから生成されたもの)として使用して、これも再試行しました。私はそれを言っている接続失敗メッセージを受け取りました:

Unable to connect to Host 127.0.0.1, or the request timed out.

Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).

MySQL said: Your password has expired. To log in you must change it using a client that supports expired passwords.

どうすればこの問題を解決できますか? MySQLがこのような一時的なパスワードを自動的に生成したことは一度もないことを覚えていますか?

62
Cheetah Felidae

これを試して:

mysql -u root -h 127.0.0.1 -p
Enter password: (enter the random password here)

参照: https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html

これに続いて、ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password';を使用してパスワードをリセットできます

99
Kumar Nitin

これが、MySql v5.7(.dmgからインストール)を実行しているOS X Yosemiteで私にとってうまくいったことです。

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password

(インストーラーによって生成された一時パスワードを入力します。)

これにより、 サンドボックスモード およびmysql>プロンプトが表示されます。次に、 SET PASSWORD で目的のルートパスワードを設定します。

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mySuperSecretPassword');
39
Lesley

これで、MySQLが生成したパスワードの有効期限が切れたため、問題は、このパスワードを再び機能させる(1)か、新しいパスワードを生成する(2)ことになります。これは、アクセス権を無視するskip-grant-tablesオプションを使用してMySQLを実行することで実現できます。

  1. MySQLサーバーを停止します。

  2. My.cnfファイルの[mysqld]セクションの最後に以下を追加して保存します。

    skip-grant-tables

  3. MySQLサーバーを起動します。

  4. ターミナルで、入力します

    mysql -u root -p

mySQLコマンドプロンプトに入ります。

  1. コマンドプロンプトで、次を入力します。

    USE mysql;

データベースユーザーを保持するmysqlデータベースにアクセスします。

  1. タイプ

    UPDATE user SET password_expired = 'N' WHERE User = 'root';

パスワードが期限切れになっていないことをMySQLに通知する(1)または

UPDATE user SET authentication_string = PASSWORD('YourNewPassword'), password_expired = 'N' WHERE User = 'root';

新しいパスワードYourNewPasswordをルート(2)に割り当てます。

34
Anton Nikiforov

OSX 10.11 El CapitanおよびMySQL 5.7.Xでこれらの手順を実行すると、うまくいくはずです。

MySQLが既にインストールされていることを考慮してください。

ターミナルウィンドウを開き、次のように入力します。

  1. Sudo /usr/local/mysql/support-files/mysql.server stop
  2. 須藤mysqld_safe --skip-grant-tables

ステップ2で起動されたコマンドは進行中の状態になるため、別のターミナルウィンドウを開いて、次のように入力する必要があります。

  1. mysql -u root -p
  2. UPDATE mysql.user SET password_expired = 'N'、authentication_string = PASSWORD( '')WHERE User = 'root';
  3. 終了する;
  4. Sudo /usr/local/mysql/support-files/mysql.server restart

重要:ステップ2では、パスワードを置き換える必要があります。

それがあなたのために中華鍋になることを願っています。

16
Marcelo

MySQLパスワードが期限切れです

パスワードをリセットすると、一時的に問題が解決しますが、MySQL 5.7.4から5.7.10(セキュリティを強化すると思います)のdefault_password_lifetime変数のデフォルト値は360(約1年)です。これらのバージョンでは、この変数に変更を加えない(または個々のユーザーアカウント)を作成すると、すべてのユーザーパスワードは360日後に期限切れになります。

通常、スクリプトから「パスワードの有効期限が切れています。ログインするには、有効期限の切れたパスワードをサポートするクライアントを使用してパスワードを変更する必要があります。」というメッセージが表示されます。

そのため、パスワードの自動失効を防ぐには、ルート(mysql -u root -p)としてログインし、サーバーに自動的に接続するクライアント(スクリプトなど)でこれらのクライアントのパスワード有効期限設定を変更します。

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

orall usersの自動パスワード有効期限を無効にできます。

SET GLOBAL default_password_lifetime = 0;

リンク:

MySQL:パスワードの有効期限とサンドボックスモード
MySQL:パスワード有効期限ポリシー
MySQL Server 5.7のパスワード有効期限ポリシー

5
Dave Everitt

MacOS Sierra(10.12.3)を実行しており、mysql-5.7.17-macos10.12-x86_64.dmgをインストールしました。

@lesleyからの答えは、現在の作業ディレクトリでmysqlバイナリを呼び出していることを確認するために./を追加する必要があるという例外を除き、私にとってはうまくいきました。前述のパッケージがインストールされた場所です。

cd/usr/local/mysql/binに変更してmysql -u root -p --connect-expired-passwordを実行すると、次のエラーが表示される場合があります。

mysql: unknown option '--connect-expired-password'

やった。パスを指定せずに単にmysqlを実行するだけで、以前にインストールされたMariaDBクライアントのバージョンと呼ばれます。

したがって、正しいバイナリを実行していることを確認するには、次のいずれかを実行できます。

絶対パスを提供します

/usr/local/mysql/bin/mysql -u root -p --connect-expired-password

またはディレクトリを変更した後の相対パス

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password

両方の方法が機能するはずです。クライアントに接続すると、命令は@lesleyからの上記と同じです。

インストーラーによって生成された一時パスワードを入力し、新しいパスワードを設定します。

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourNewPassword'); 
4
najemnyvrah

私は同じ問題に直面しました。 https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_HowTo.html のインストールプロセスガイドに従い、DMGアーカイブをダウンロードして、MySQLをMAC OS X 10.12にインストールしました。 .2。

最後に、新しいターミナルで次のコマンドを実行しました。

cd /usr/local/mysql/bin

./mysql -u root -p --connect-expired-password

出来た。

2
hygull

回答7は私にとってはうまくいきました:El capitanMySQLはdmgからインストールされ、自動生成されたパスワードですが、/usr/local/bin/mysqlを入力する前にcdから./mysql -root -pになっていることを確認しました。

次に、すべてのデータベースとテーブルがどこにあるのか、それらをリンクする方法を見つけます。

1
james meek

Mysql 5.7には

シェル$> Sudo grep 'temporary password' /var/log/mysqld.log

1
ji-ruh

この特定のものは私のためにトリックをしました:

このリンクで指定されているとおり: https://www.variphy.com/kb/mac-os-x-reset-mysql-root-password

実行を除くすべてのステップを実行します

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

Execute

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

そしてFLUSH PRIVILEGESを実行します;

1

この問題を解決するもう1つの方法は、代わりに古いバージョンのMySQLを使用することです。

Mac OS X 10.9(x86、64ビット)、DMG Archive用のMySQL version 5.7.9をアンインストールしてから、Mac OS X 10.9(x86、64ビット)、DMG Archive用の古いバージョン、MySQL version 5.6.7をインストールしました。この問題は解決されました。この古いバージョンのインストールを完了する前に指定された自動生成されたパスワードはなくなり、最終的にユーザー名としてrootを使用し、空のパスワードを使用してデータベースにアクセスできます。すべてが魅力のように機能しています!

0
Cheetah Felidae

'mysql -u root -p --connect-expired-password'を実行してこの問題を回避し、mysqlから期限切れの自動生成パスワードを入力しました。最後に、'use mysql'でmysql dbを選択し、'ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password'でユーザー 'root' pwを更新しました

0
Shelby Bedzyk

View brewをインストールしましたが、この警告に気付くまで同じエラーメッセージが表示されました。

ルートパスワードなしでMySQLデータベースをインストールしました。保護するには、mysql_secure_installationを実行します

接続するには:mysql -uroot

Launchdでmysqlを今すぐ開始し、ログイン時に再起動するには:brew services start mysql

または、バックグラウンドサービスが必要ない場合は、mysql.server startを実行するだけです。

0
as21

パッケージを初めてダウンロードしてMySQLを手動でインストールすると、rootのデフォルトパスワードが生成されます。それをコピーして保存します。連続した再インストールで何らかの形で行われない場合、そのパスワードは表示されません。

したがって、rootにログインすることはできません。以下をせよ :

  1. システムSudo find / -name mysqlからmysql関連エントリを検索します
  2. rm -rf <mysql_entries_above>を実行して、mysql関連のエントリをすべて削除します
  3. 最新のmysql-serverをダウンロードしてインストールします。
  4. コピーする必要があるデフォルトのパスワードが表示されます。
  5. mysql_secure_installationを実行し、rootを求められたらそのパスワードを貼り付けます。
  6. その後、手順に従って、プロンプトが表示されたら管理者パスワードを変更します。
0
Souvik Das