Macにインストールした後、ALTER USERステートメントを使用してMySQLルートパスワードをリセットする


184

私はMac体験全体に不慣れです。最近MySQLをインストールしましたが、インストール後にパスワードをリセットする必要があるようです。それ以外には何もできません。

今、私はすでに通常の方法でパスワードをリセットしています:

update user set password = password('XXX') where user = root;

(ところで、MySQLが奇妙な理由でフィールドの名前を 'password'から 'authentication_string'に変更したことを理解するのに何年もかかりました。そのような変更についてはかなり腹を立てています。)

残念ながら、私には知らない方法でパスワードを変更する必要があるようです。たぶんここの誰かがすでにその問題に遭遇したのでしょうか?

回答:


508

これが初めてのパスワード設定ではない場合は、次の方法を試してください。

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

また、次のエラーが発生した場合は、これまでにパスワードを設定したことがない可能性が高くなります。

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

初めてパスワードを設定するには:

mysql> SET PASSWORD = PASSWORD('your_new_password');
Query OK, 0 rows affected, 1 warning (0.01 sec)

リファレンス:https : //dev.mysql.com/doc/refman/5.6/en/alter-user.html


10
ありがとう!ただし、MySQLからの非常にわかりにくいエラーメッセージが表示されます。
Ed。

1
これは私にとっては mysql-5.7.13-osx10.11-x86_64
うまくいった

1
'mysql> SET PASSWORD = PASSWORD(' your_new_password ');'の後、次のエラーが発生します: 'ERROR 29(HY000):File' ./mysql/user.MYD 'not found(Errcode:2-No suchファイルまたはディレクトリ) '。誰かが私を助けてくれますか?
レイ・キム

4
MySQLの提案とは逆に、「ALTER USER」ステートメントではなく「SET PASSWORD」のみを使用することに注意してください...
Fabien Haddadi 2017

1
最初の例では、その行を送信するときに使用しているユーザーとは別のユーザーのパスワードを設定しようとする可能性があります。2番目は、mysqlへのログインに使用したユーザーのパスワードを設定しようとします。したがって、後者は機能します。
Hafenkranich 2018年

130

mysqlを使用して開始した場合 mysql -u root -p

試す ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

ソース:http : //dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html


1
ありがとうございました!これは私のために働いた!mysql-5.7.11-osx10.10-x86_64を使用しています。
LeArNr 2016

これはうまくいった。ありがとう!MySQLは非常に広く使用されているプログラムですが、インストールして高速に実行するためのワンストップドキュメントがないことは、とても悲しいことです。
Shatu

よろしくお願いします!それは私を助けました
Sparw

3
多くの不満の後、これの変種はミント18 mysql 5.7.18で動作しました:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';
Steve

万人ありがとう。それが私のために働いた唯一のものです。
RandyMy 2017

33

Macでも同じ問題が発生します

まず、サンドボックスモードでmysqlにログインします。

mysql -u <user> -p --connect-expired-password

次に、パスワードを設定します

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('XXXX');

Query OK, 0 rows affected, 1 warning (0.01 sec)

それは私のために働く〜

経由:https : //dba.stackexchange.com/questions/118852/your-paswssword-has-expired-after-restart-mysql-when-updated-mysql-5-7-8-rcde


1
データベースを使用する前にこれを実行する必要があることを覚えておくと、かなり複雑に思えます。
seba.wagner 2016

警告の中で使用してほしいSET PASSWORD FOR 'root'@'localhost' = 'XXXX';
Arsen Zahray 2017年

22

MySQL 5.7.6以降を使用している場合:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5以前を使用している場合:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

MySQLドキュメント


1
私はMySQL 5.7.9を使用していますが、奇妙なことがSET PASSWORD = PASSWORD('my_pass')うまくいきました。より新しいバージョンの人たちから、この声明が彼らにとってもうまくいったとのコメントがあります。これにもかかわらず、MySQLのドキュメントでこの特定のリファレンスを見つけたため、私はあなたの答えを支持しました。
アームフット2017

MySQL 8 SET PASSWORDがスローしてエラーが発生しました。ALTER USERが機能しました。
Timar Ivo Batis

13

MySQL 5.7.xでは、次のように変更できるように、ネイティブパスワードに切り替える必要があります。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

11

これらを実行します。

$ cd /usr/local/mysql/bin
$ ./mysqladmin -u root password 'password'

次に実行します

./mysql -u root

ログインするはずです。ここでFLUSH権限を実行します。

次に、MySQLコンソールを終了し、ログインしてみます。それが機能しない場合は、次のコマンドを実行します。

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

xxxxxxを新しいパスワードに変更します。その後、再度ログインしてください。

更新。これを参照してくださいhttp://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

それはあなたの問題を解決するはずです。

オラクルにいる場合はこれを試してください

ALTER USER username IDENTIFIED BY password

いいえ、これも機能しません。少なくとももう。'password'列はOracleによって名前が変更されました。現在はauthentication_stringと呼ばれています。しかし、最初にALTER USERコマンドを使用してパスワードを変更する必要があるため、このコマンドを実行できません。これは、伝統的にパスワードを更新する方法ではないため、非常にイライラします。ALTERは、テーブル内のエントリを変更するのではなく、テーブル、関数、およびスタッフ用に予約する必要があります。それがUpdateステートメントです。(ごめんなさい)
dengar81 2015年

@Shivan Paw:予想される2つの警告:mysqladmin:[警告]コマンドラインインターフェースでパスワードを使用すると、安全でない場合があります。警告:パスワードはプレーンテキストでサーバーに送信されるため、ssl接続を使用してパスワードの安全性を確保してください。-パスワードが更新されたと思います。実際、新しいパスワードでログオンできます。私は、ALTER USERコマンドを使用してパスワードを更新する必要があるとして、しかし、私はまだ、任意のクエリを実行することはできません。:(
dengar81

@Shivan Paw:何を試してみますか?私はすでにあなたが提案したコマンドを使ってみました。./mysqladminコマンド(2つの警告)を使用してパスワードをリセットして、mysql.user上でアップデートを実行するために進め... 2番目のコマンドは、「あなたは、ALTER USERの[...]を使用してパスワードをリセットする必要があります」というメッセージで失敗します
dengar81

これは私のために働いた唯一の解決策です。mysqlの最新バージョンで期限切れのパスワードを持っている場合、ALTER_USERまたはSET_PASSWORDを使用できません。
アーロンヘンダーソン

7

多分それを試してみますか?

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('XXX');

または

SET PASSWORD FOR 'root'@'%' = PASSWORD('XXX');

使用するアクセスに応じて。

(そして、あなたは自分でフィールド名を変更すべきかわからない...)

https://dev.mysql.com/doc/refman/5.0/en/set-password.html


申し訳ありませんが、これは機能しません:エラー1820(HY000):このステートメントを実行する前に、ALTER USERステートメントを使用してパスワードをリセットする必要があります。
dengar81 2015年


7

UPDATEユーザーSET authentication_string = PASSWORD( "MyPassWord")WHERE User = 'root'; エラー1064(42000):SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、1行目の '( "MyPassWord")WHERE User =' root ''の近くで使用する正しい構文を確認してください。

で解決

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

下のサイトからの参照

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html


5

Ver 14.14 Distrib 5.7.19, for macos10.12 (x86_64)、次のようにログインしまし mysql -uroot -pた。インストール時にMySQLによって生成されたパスワードを入力しました。それから

ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';

例:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ab1234'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye $ mysql -uroot -p

「Ab1234」と入力できます


3

MySQL 5.7.24最初のログインでルートを取得

ステップ1:ログからパスワードを取得する

 grep root@localhost /var/log/mysqld.log
    Output
        2019-01-17T09:58:34.459520Z 1 [Note] A temporary password is generated for root@localhost: wHkJHUxeR4)w

ステップ2:彼と一緒にmysqlにログインする

mysql -uroot -p'wHkJHUxeR4)w'

ステップ3:新しいrootパスワードを入力する

SET PASSWORD = PASSWORD('xxxxx');

あなたは得る ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

どのように修正しますか?

これを実行します SET GLOBAL validate_password_policy=LOW;

再試行 SET PASSWORD = PASSWORD('xxxxx');



2

ここに私のために働く方法があります。

mysql> show databases ;

エラー1820(HY000):このステートメントを実行する前に、ALTER USERステートメントを使用してパスワードをリセットする必要があります。

mysql> uninstall plugin validate_password;

エラー1820(HY000):このステートメントを実行する前に、ALTER USERステートメントを使用してパスワードをリセットする必要があります。

mysql> alter user 'root'@'localhost' identified by 'root';

クエリは正常、0行が影響を受けた(0.01秒)

mysql> flush privileges;

クエリは正常、0行が影響を受けた(0.03秒)


1

使用するSET PASSWORD = PASSWORD('your_new_password');とクラッシュする可能性があります

(エラー1819(HY000):パスワードが現在のポリシー要件を満たしていません)

あなたはSET GLOBAL validate_password_policy=LOW;それを愛するために使用することができます。


1

5.7バージョン。「パスワード」フィールドが削除されました。「authentication_string」に置き換えてください

use mysql;
update user set authentication_string=password('123456') where user='root';
flush privileges;

0

Mac OS X 10.10.4(Yosemite).SET PASSWORDでも同じ問題が発生しました。mysql-mysql>のパスワードを変更してください> SET PASSWORD = PASSWORD( 'your_password'); クエリは正常、影響を受ける行は0、警告は1(0.01秒)

Mysql環境パス変数を.bash_profileに設定し、以下の行
export PATH = $ PATH:/ usr / local / mysql / bin を追加し、その後、次のコマンドを実行します:source .bash_profile


0

mysqlワークベンチとmysqlコミュニティサーバーをインストールした後、問題が発生しました。サーバーのインストール中に生成されたパスワードを取得しました。ワークベンチで既存のローカルインスタンスをダブルクリックすると、新しいパスワードを設定できるダイアログが表示されました。


0

mysql> SET PASSWORD = PASSWORD('your_new_password'); それは私にとってはうまくいきます。


0

バージョン5.7.23以降を忘れないでください。ユーザーテーブルには、認証文字列ではなく列パスワードがないため、以下はユーザーのパスワードをリセットするときに機能します。

update user set authentication_string=password('root') where user='root';
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.