MySQL のデータベースユーザーとデータベースアクセス権限

はじめに

 MySQL でデータベースの作成からデータベースユーザーの作成とアクセス権限の付与、はよく実行するので覚えているのですが、反対の操作、つまりデータベースアクセス権限の削除、データベースユーザーの削除、データベースの削除を忘れがちになるのでメモしておきます。
 一番ややこしく感じさせるのは、作成時は 2 コマンドでできるのに対して、削除時は 3 コマンドが必要になる、というところでしょうか。

作成時のコマンド

$ mysql -u root

(データベース作成)
> CREATE DATABASE dbname;

(データベースユーザー作成とアクセス権限付与)
> GRANT ALL PRIVILEGES ON dbname.* TO dbuser@'localhost' IDENTIFIED BY 'dbpassword';

 ちなみに、作成時も3コマンドで対応することができます。

$ mysql -u root

(データベース作成)
> CREATE DATABASE dbname;

(データベースユーザー作成)
> CREATE USER dbuser@'localhost' IDENTIFIED BY 'dbpassword';

(データベースに対するユーザーのアクセス権限付与)
> GRANT ALL PRIVILEGES ON dbname.* TO dbuser@'localhost;

削除時のコマンド

$ mysql -u root

(アクセス権限の剥奪)
> REVOKE ALL PRIVILEGES ON dbname.* FROM dbuser@'localhost';

(適用)
> FLUSH PRIVILEGES;

(データベースユーザーの削除)
> DROP USER dbuser@'localhost';

(データベースの削除)
> DROP DATABASE dbname;

登録されている各情報の確認方法

 管理文書などでしっかり管理出来ていればいいのですが、あいにく現物を見るしかない、という状況もよくあります。このようなときに、どんなデータベースやユーザーが登録されているのか確認する方法を紹介します。

データべース

$ mysql -u root

(データベース一覧)
> SHOW DATABASES;

データベースユーザー

 この一覧から、登録済みのデータベースユーザーのユーザ名とホスト名のペア ( dbuser@’localhost’ の部分 ) を確認できます。

$ mysql -u root

(データベースユーザー一覧)
> SELECT user, host, password FROM mysql.user;

アクセス権限

 どのデータベースユーザーがどのデータベースにアクセスできるのかを簡単に確認するには、次の SQL 文を使用します。

$ mysql -u root

(データベースユーザーと、そのユーザーがアクセスできるデータベースの一覧)
> SELECT user, host, db FROM mysql.db;

 さらに詳しい権限の内訳を調べるには、上記結果から user, host, db のうち任意の条件を指定すると、余計なレコードが表示されず、目的の情報のみ表示できます。
 SQL 文の最後、「;」ではなく「\G」を付けると、表形式から1レコード毎に Key-Value 形式で表示でき、見やすくなります。

$ mysql -u root

(データベースユーザーと、そのユーザーがアクセスできるデータベースの一覧)
> SELECT * FROM mysql.db WHERE user = 'dbuser' AND host = 'localhost' AND db = 'dbname' \G

(結果サンプル)
*************************** 1. row ***************************
                 Host: localhost
                   Db: dbname
                 User: dbuser
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: Y
         Execute_priv: Y
1 row in set (0.00 sec)

MySQL のデータベースユーザーとデータベースアクセス権限」への1件のフィードバック

  1. ピンバック: AmazonLinux2にMariaDBをインストールする | SaintSouth.NET

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください