mysql CLIでroot mysqlパスワード変更が失敗する

mysql CLIでroot mysqlパスワード変更が失敗する

次のコードを考えてみましょう。

UPDATE user set password=PASSWORD('NEWPASSWORD_CAME_HERE') WHERE User='root';

書かれた場所にNEWPASSWORD_CAME_HERE(引用符の間に)パスワードを入力しました。

ただし、このクエリを実行すると、次のエラーが発生します。

エラー1046(3D000):選択したデータベースがありません。

このエラーが発生するのはなぜですか?私は別のガイドに従いましたが、これが私が見た最も伝統的なアプローチなので、これが失敗する理由を理解できません。

答え1

まず、UPDATEステートメントにテーブルだけでなくデータベースも指定する必要があります。

UPDATE mysql.user ...

それ以外の場合、MySQLは作業しているデータベースを知ることができません(したがってエラーが発生します)。

しかし、これはMySQLでユーザーパスワードを変更する正しい方法ではありません。mysqlデータベース(データベースメタデータを含む)を操作することはお勧めできません。代わりにこれを行う:

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

答え2

エラーを解決するには: use mysql

しかし、mysqlリファレンスマニュアルを見てください:

ALTER USER user IDENTIFIED BY 'auth_string';

パスワード構文の設定

関連情報