MySQL/MariaDBのユーザー管理まとめ。作成・名前変更・削除・一覧確認

MySQL/MariaDBのユーザー管理まとめ。作成・名前変更・削除・一覧確認

MySQL・MariaDBのユーザー管理に必要なSQLを、この記事1本にまとめて解説します。

  • 一覧確認: mysql.user
  • 作成: create user
  • 名前変更: rename user
  • 削除: drop user

MySQLとMariaDBはどちらも同じ方法で操作できます。DBはインストールされている前提です。インストール方法はLinuxWindowsそれぞれの手順記事を参考にしてください。

ユーザー一覧の確認:mysql.user

ユーザー一覧は mysql.user テーブルで確認します。

select host, user from mysql.user;
MariaDB [(none)]> select host, user from mysql.user;
+-----------+---------+
| host      | user    |
+-----------+---------+
| localhost | root    |
| 127.0.0.1 | root    |
| ::1       | root    |
| %         | test001 |
+-----------+---------+

MySQL/MariaDBのユーザーは「ユーザー名+接続元ホスト」の組み合わせで管理されます。host% のユーザーは任意のホストから接続できます。

なお、古いバージョン(MySQL 5.6以前・MariaDB 10.3以前)ではパスワードハッシュが password 列にありましたが、MySQL 5.7以降は authentication_string 列に格納されます

mysql.user にどんな列があるかは show columns で確認できます。

show columns from mysql.user;

Select_privInsert_priv といった権限フラグ、max_connections などの接続制限がユーザーごとに格納されています。

ユーザー作成:create user

create user の基本構文は次のとおりです。

create user user_name identified by 'password';

Oracleとは違い、ユーザー名は大文字・小文字を区別するので注意してください。

以下が実行例です。作成後に一覧へ追加され、そのユーザーでログインできることを確認しています。

MariaDB [(none)]> create user testuser identified by 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> select user, host from mysql.user;
+----------+-----------+
| user     | host      |
+----------+-----------+
| test001  | %         |
| testuser | %         |
| root     | 127.0.0.1 |
| root     | ::1       |
| root     | localhost |
+----------+-----------+

[test001@test-server ~]$ mysql -u testuser -ppassword
Welcome to the MariaDB monitor.  Commands end with ; or \g.

接続元ホストを限定する場合は 'user_name'@'host' の形式で指定します。

create user 'testuser'@'localhost' identified by 'password';

ユーザー名の変更:rename user

rename user の基本構文は次のとおりです。

rename user old_user_name to new_user_name;
MariaDB [(none)]> rename user testuser to testuser001;
Query OK, 0 rows affected (0.00 sec)

カンマ区切りで複数ユーザーをまとめて変更することもできます。

rename user old_user_name to new_user_name [, old_user_name to new_user_name] ...
MariaDB [(none)]> rename user testuser001 to TESTUSER001, testuser002 to TESTUSER002;
Query OK, 0 rows affected (0.00 sec)

ユーザーの削除:drop user

drop user の基本構文は次のとおりです。

drop user user_name;
MariaDB [(none)]> drop user testuser;
Query OK, 0 rows affected (0.00 sec)

こちらもカンマ区切りで複数ユーザーをまとめて削除できます。

drop user user_name [, user_name ...];
MariaDB [(none)]> drop user testuser001, testuser002;
Query OK, 0 rows affected (0.00 sec)

削除対象のユーザー名も大文字・小文字を区別するため、事前に mysql.user で正確なユーザー名と接続元ホストを確認してから削除しましょう。

まとめ

操作SQL注意点
一覧確認select host, user from mysql.userユーザーは「名前+ホスト」の組で管理
作成create user ~ identified by '~'大文字・小文字を区別する
名前変更rename user ~ to ~カンマ区切りで複数まとめて変更可
削除drop user ~カンマ区切りで複数まとめて削除可

サービスの起動・停止方法はMySQL/MariaDBとサービス/サーバの起動・停止方法を参考にしてください。

技術ブログ一覧へ戻る