MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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)は、削除対象として指定した「ユーザー名@ホスト名」の組み合わせが実際には存在しない場合に発生します。「%」で作成したユーザーは必ず「%」を指定して削除する必要があります。ユーザーを作成するときと削除するときで、ホスト名の指定を一致させることを忘れないようにしましょう。

  1. 【解決方法】Windows 11/10で「Set user settings to drive failed」エラーが出たときの対処法

    タッチパッドは、ノートパソコンでの作業効率を高めるための重要な入力デバイスです。ジェスチャーやマルチフィンガータップなどの機能により、さまざまなショートカット操作が可能になります。しかし、Alps Pointing Device製のタッチパッドドライバーを使用している一部のLenovoノートパソコンでは、「Set user settings to drive failed(ユーザー設定をドライブに設定できませんでした)」というエラーが発生することがあります。 このエラーは主にパソコンの起動時に表示され、バックグラウンドで自動的にインストールされたAlpsポインティングデバイスドライバーの不具合

  2. MySQLの「Access Denied for User 'root'@'localhost'」エラーを解決する方法

    MySQLは、SQL言語をベースとしたオープンソースのデータベース管理システムです。XAMPPコントロールパネルにも標準で同梱されており、誰でも無料で利用できることから、開発環境として広く普及しています。しかし近年、「ブラウザからMySQLデータベースにアクセスできない」「Access Denied for User root@localhost(ユーザーroot@localhostのアクセスが拒否されました)」というエラーが表示されるという報告が多数寄せられています。本記事では、この問題を最も簡単に解決する方法と、エラーが発生する原因について詳しく解説します。トラブルシューティング中にさらな