支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • MySQLでユーザーを作成、削除、ユ

MySQLとユーザー

MySQLを使用時ユーザーを分けて使用したい場面がでてくると思います。

MySQLではユーザーを作成、削除、ユーザー一覧を確認することができます。

ここではMySQLではユーザーを作成、削除、ユーザー一覧を確認する方法について説明します。

ユーザー一覧を確認する方法

MySQLでユーザーを作成すると、MySQLデータベースの中のuserテーブルに格納されます。

userテーブルのカラムの中でよく参照されるものは、ユーザー名のホスト部分以外が格納されているuserカラムとユーザー名のホスト部分が格納されているhostカラムです。

また、userテーブルには認証プラグインが格納されている plugin やパスワードの有効期限に関する項目など様々なものがあります。

ユーザー一覧を確認するにはSELECT句を使用します。

SELECT カラム FROM mysql.user

ユーザー名でユーザー一覧を確認する場合はカラムにuserと記述します。

カラムを指定しないとuserテーブルがもつすべてカラムが出力されてしまいとても見づらくなります。

サンプルコード

mysql>  SELECT user, host FROM mysql.user;
実行結果

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

サンプルコードではカラムにuser、hostを指定しています。

そのため、現在存在してるユーザー名とホスト名のユーザー一覧が表示されます。

ユーザーを作成する方法

ユーザーを作成するにはCREATE USERを使用します。

CREATE USER user //パスワードなし
CREATE USER user IDENTIFIED BY 'パスワード' //パスワードあり

パスワードはシングルクォーテーションで囲む必要があります。

userは「'user_name'@'host_name'」の書式で記述します。

ユーザー名と接続を行うクライアントのホスト名の組み合わせで記述します。

指定したホストから指定したユーザー名でログインした場合だけ接続を行うことが出来ます。

ユーザー名とホスト名は特別な文字(例えば @ など)を含まない限りは引用符で囲う必要はありません。

ですが、特別な文字を含む場合やホスト名にワイルドカードを使用する場合は逆引用符( ` ) 、シングルクォーテーション( ' )、ダブルクォーテーション( " )で囲う必要があります。

また、引用符で囲む場合はユーザー名とホスト名は別々に囲う必要があります。

userの記述例

user@localhost
`user`@`hostname`
'user'@'localhost'
"user"@"host"
'username'@'192.168.128.10'

またホスト名にはIPアドレスやlocalhostを指定することが可能です。

サンプルコード

ユーザー作成前のユーザー一覧は以下となります。

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

ユーザー名nagoya、ホスト名localhost、パスワードaichiのユーザーを作成するには以下のコードとなります。

mysql> CREATE USER 'nagoya'@'localhost' identified by 'aichi';
Query OK, 0 rows affected (0.08 sec)

ユーザー名nagoya、ホスト名192.168.128.10のユーザーを作成するには以下のコードとなります。

mysql> CREATE USER 'tokyo'@'192.168.128.10';
Query OK, 0 rows affected (0.08 sec)

実行後「Query OK, 0 rows affected 」となればユーザー作成完了です。

実際にユーザー一覧を確認してみます。

mysql>  SELECT user, host FROM mysql.user;
+------------------+----------------+
| user             | host           |
+------------------+----------------+
| tokyo            | 192.168.128.10 |
| mysql.infoschema | localhost      |
| mysql.session    | localhost      |
| mysql.sys        | localhost      |
| nagoya           | localhost      |
| root             | localhost      |
+------------------+----------------+

しっかりとtokyoとnagoyaが表示されているのが確認できます。

ユーザーを削除する方法

ユーザーを削除するにはDROP USERを使用します。

DROP USER user

userの書式はCREATE USERで紹介したものと一緒になります。

サンプルコード

削除する前のユーザー一覧

+------------------+----------------+
| user             | host           |
+------------------+----------------+
| tokyo            | 192.168.128.10 |
| mysql.infoschema | localhost      |
| mysql.session    | localhost      |
| mysql.sys        | localhost      |
| nagoya           | localhost      |
| root             | localhost      |
+------------------+----------------+

nagoyaとtokyoを削除するには以下のコードを使用します。

mysql> DROP USER 'nagoya'@'localhost';
mysql> DROP USER 'tokyo'@'192.168.128.10';

実行後、Query OK, 0 rows affected と出れば削除完了です。

実際にユーザー一覧を確認します。

mysql>  SELECT user, host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

nagoyaとtokyo削除されているのが確認できます。

まとめ

MySQLでユーザーを作成、削除、ユーザー一覧を確認する方法を説明しました。