MySQLのエラー1396(HY000)を解決:DROP USER操作が「'user'@'localhost'」に対して失敗する原因と対処法
エラー1396(HY000)が発生する原因
このエラーは、ホストを「%」(すべてのホスト)として作成したユーザーを、誤って「localhost」を指定して削除(DROP USER)しようとしたときに発生します。MySQLではユーザーは「ユーザー名@ホスト名」の組み合わせで管理されているため、ホスト部分が異なると別のユーザーとして認識され、該当するユーザーが存在しないというエラーになります。
ホスト「%」でユーザーを作成する
まず、ホストに「%」を指定してユーザーを作成してみましょう。構文は以下の通りです。
CREATE USER 'yourUserName'@'%' IDENTIFIED BY 'yourPassword';
実際に上記の構文を使用してユーザーを作成します。以下のクエリを実行してください。
mysql> CREATE USER 'Jack'@'%' IDENTIFIED BY '1234'; Query OK, 0 rows affected (0.26 sec)
ユーザーが作成されたか確認する
ユーザーが正常に作成されたかどうかを確認します。
mysql> select user,host from MySQL.user;
実行結果は以下の通りです。
+------------------+-----------+ | user | host | +------------------+-----------+ | Jack | % | | Manish | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | Adam Smith | localhost | | User1 | localhost | | am | localhost | +------------------+-----------+ 10 rows in set (0.00 sec)
上記の出力例を見ると、ユーザー名「Jack」、ホスト「%」のユーザーが存在していることがわかります。ここで、誤って「localhost」を指定してこのユーザーを削除しようとすると、次のようなエラーが発生します。
mysql> DROP USER 'Jack'@'localhost'; ERROR 1396 (HY000): Operation DROP USER failed for 'Jack'@'localhost'
正しい対処法:ホスト「%」を指定して削除する
この問題を解決するには、ユーザーを作成したときと同じホスト「%」を指定して削除します。クエリは以下の通りです。
mysql> DROP USER 'Jack'@'%'; Query OK, 0 rows affected (0.19 sec)
ユーザーがMySQL.userテーブルから削除されたかどうかを確認しましょう。
mysql> select user,host from MySQL.user;
以下の出力から、ユーザー「Jack」が正常に削除されたことが確認できます。
+------------------+-----------+ | user | host | +------------------+-----------+ | Manish | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | Adam Smith | localhost | | User1 | localhost | | am | localhost | +------------------+-----------+ 9 rows in set (0.00 sec)
まとめ
ERROR 1396(HY000)は、削除対象として指定した「ユーザー名@ホスト名」の組み合わせが実際には存在しない場合に発生します。「%」で作成したユーザーは必ず「%」を指定して削除する必要があります。ユーザーを作成するときと削除するときで、ホスト名の指定を一致させることを忘れないようにしましょう。
-
【解決方法】Windows 11/10で「Set user settings to drive failed」エラーが出たときの対処法
タッチパッドは、ノートパソコンでの作業効率を高めるための重要な入力デバイスです。ジェスチャーやマルチフィンガータップなどの機能により、さまざまなショートカット操作が可能になります。しかし、Alps Pointing Device製のタッチパッドドライバーを使用している一部のLenovoノートパソコンでは、「Set user settings to drive failed(ユーザー設定をドライブに設定できませんでした)」というエラーが発生することがあります。 このエラーは主にパソコンの起動時に表示され、バックグラウンドで自動的にインストールされたAlpsポインティングデバイスドライバーの不具合
-
MySQLの「Access Denied for User 'root'@'localhost'」エラーを解決する方法
MySQLは、SQL言語をベースとしたオープンソースのデータベース管理システムです。XAMPPコントロールパネルにも標準で同梱されており、誰でも無料で利用できることから、開発環境として広く普及しています。しかし近年、「ブラウザからMySQLデータベースにアクセスできない」「Access Denied for User root@localhost(ユーザーroot@localhostのアクセスが拒否されました)」というエラーが表示されるという報告が多数寄せられています。本記事では、この問題を最も簡単に解決する方法と、エラーが発生する原因について詳しく解説します。トラブルシューティング中にさらな