次のコードを考えてみましょう。
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';