DROP USERを実行してもユーザーがmysql.userテーブルに残る?確認方法を解説
MySQLでDROP USERステートメントを実行したのに、ユーザーがまだmysql.userテーブルに残っているように見えることがあります。この記事では、ユーザー削除の前後でmysql.userテーブルの内容をSELECT文で確認し、ユーザーが正しく削除されたかどうかを検証する手順を解説します。
手順1:現在のユーザー一覧を確認する
まず、SELECT文を使ってmysql.userテーブルからすべてのユーザーとホストの一覧を取得します。
mysql> select user,host from mysql.user;
実行結果は以下の通りです。
+------------------+-----------+ | user | host | +------------------+-----------+ | Bob | % | | Manish | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | @UserName@ | localhost | | Adam Smith | localhost | | James | localhost | | John | localhost | | John Doe | localhost | | User1 | localhost | | am | localhost | | hbstudent | localhost | | mysql.infoschema | localhost | | mysql.session | localhost | +------------------+-----------+ 17 rows in set (0.00 sec)
現時点では17件のユーザーアカウントが登録されており、その中にhbstudent@localhostが含まれていることが確認できます。
手順2:DROP USERでユーザーを削除する
次に、DROP USERステートメントを使ってhbstudentユーザーを削除します。ユーザー名とホスト名は'ユーザー名'@'ホスト名'の形式で指定します。
mysql> drop user 'hbstudent'@'localhost'; Query OK, 0 rows affected (0.17 sec)
Query OKと表示されれば、削除処理は正常に完了しています。
手順3:削除結果を検証する
再度mysql.userテーブルを照会し、ユーザーが実際に削除されたかどうかを確認します。
mysql> select user,host from mysql.user;
実行結果は以下の通りです。
+------------------+-----------+ | user | host | +------------------+-----------+ | Bob | % | | Manish | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | @UserName@ | localhost | | Adam Smith | localhost | | James | localhost | | John | localhost | | John Doe | localhost | | User1 | localhost | | am | localhost | | mysql.infoschema | localhost | | mysql.session | localhost | +------------------+-----------+ 16 rows in set (0.00 sec)
結果を見ると、hbstudent@localhostの行が消え、総行数も17行から16行に減っています。つまり、DROP USERは正常に機能しており、指定したユーザーアカウントは確実に削除されています。
補足:ユーザーが残っているように見えるときのチェックポイント
DROP USERを実行したのにユーザーがまだ存在しているように見える場合は、以下の点を確認してみてください。
- テーブル名の表記:Linux環境ではテーブル名の大文字・小文字が区別されます。
mysql.userのように正確に指定しましょう。 - ホスト名の違い:同じユーザー名でも、ホストが
%とlocalhostでは別のアカウントとして扱われます。削除したいアカウントのホスト指定が正しいか確認してください。 - 接続先サーバー:意図したMySQLサーバー(本番・検証環境など)に接続しているかも見落としがちなポイントです。
このように、SELECT文でmysql.userテーブルを照会すれば、DROP USERの実行結果を簡単かつ確実に検証できます。
-
MySQLのテーブル名に「user」は使える?予約語エラーの原因と回避方法を解説
MySQLで「user」というテーブル名は使用できる?結論から言うと、「user」はMySQLの予約語(リザーブドワード)であるため、そのままテーブル名として使用することはできません。CREATE TABLE文などで「user」を使おうとすると、構文エラーが発生します。この問題を回避するには、主に以下の2つの方法があります。テーブル名を「users」など別の名前に変更するバッククォート(`)で「user」を囲んで使用するバッククォートを使った例どうしても「user」という名前を使いたい場合は、次のようにバッククォートで囲みます。mysql> create table `user` ( .
-
MySQLでユーザータイプごとのユーザー数を取得する方法
MySQLでは、GROUP BY句とCOUNT()関数を組み合わせることで、ユーザータイプ(種別)ごとのユーザー数を簡単に集計できます。この記事では、ENUM型のカラムを持つサンプルテーブルを使い、実際の手順を順番に解説します。1. サンプルテーブルを作成するまず、ユーザー名とユーザータイプを格納するテーブルを作成します。UserTypeカラムにはENUM型を使用し、「New User(新規ユーザー)」と「Registered User(登録済みユーザー)」の2つの値のみを許可します。mysql> create table DemoTable-> (-> UserName v