68

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

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 がこのような一時パスワードを自動的に生成したことがないことを覚えていますね。

4

17 に答える 17

37

Now that the password MySQL had generated is expired, the problem is reduced to getting this password to work again (1) or generate a new one (2). This can be accomplished by running MySQL with the skip-grant-tables option which would make it ignore the access rights:

  1. Stop your MySQL server.

  2. Add the below at the end of the [mysqld] section of my.cnf file and save it.

    skip-grant-tables

  3. Start MySQL server.

  4. In terminal, type

    mysql -u root -p

to get into MySQL command prompt.

  1. In the command prompt, type

    USE mysql;

to get into the mysql database where it keeps database users.

  1. Type

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

to let MySQL know the password is not expired (1) or

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

to assign a new password YourNewPassword to root (2).

于 2015-11-06T09:25:04.037 に答える
16

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

すでにMySQLがインストールされていることを考えると..

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

  1. sudo /usr/local/mysql/support-files/mysql.server 停止
  2. sudo mysqld_safe --skip-grant-tables

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

  1. mysql -u ルート -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 再起動

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

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

于 2016-07-28T17:38:06.303 に答える
5

MySQL パスワードの有効期限が切れています

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

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

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

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

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

SET GLOBAL default_password_lifetime = 0;

リンク:

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

于 2017-01-09T16:01:04.687 に答える
4

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

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

を実行cdする/usr/local/mysql/binmysql -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'); 
于 2016-12-30T06:29:29.540 に答える
1

回答7は私にとってはうまくいきました:dmgと自動生成されたパスワードからインストールされましたが、Obviousに入る前に確認しEl capitanましたが 、初めてではありませんでした。MySQLcd/usr/local/bin/mysql./mysql -root -p

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

于 2016-01-09T01:50:48.650 に答える
1

Mysql 5.7の場合、私は使用します

shell $ > sudo grep '一時パスワード' /var/log/mysqld.log

于 2016-04-25T10:21:21.787 に答える