【MySQL】ユーザーの確認、作成方法、権限の付与方法

データベース

一般的にデータベースのユーザーと作成者は別になります。
扱える権限もそれぞれ変更したいことが多いです。
そのためにはユーザーを複数作成する必要があるので、ユーザーの確認と作成方法と権限の付与方法を紹介します。

現在ユーザーの確認

-- 現在ユーザーの確認
select user();
-- root@localhost

rootというのが、ユーザーです。
@の次の文字列は、接続可能なホスト名です。
rootを使ってログインするためには、localhostに接続する必要があります。
MySQLでは、上のように、ユーザー名とホスト名を対で管理します。

ユーザーの作成方法

-- ユーザーの作成方法
create user {ユーザー名}@{接続元のホスト名} identified by 'password';
create user 't_user'@'localhost' identified by 'pwd';

create userのあとに上で確認したユーザー名@ホスト名を記述します。
そして、パスワードを指定します。

データベースの接続時、認証の情報でユーザー名とパスワードを記載しますが、
(MAMPならroot、root)、上の場合、ユーザー名がt_userで、パスワードがpwdとすることで
接続することができます。

ユーザー一覧の確認方法

-- ユーザー一覧
select * from mysql.user;

上のコマンドを実行することでユーザー一覧を確認できます。

ユーザーの削除方法

-- ユーザーの削除
drop user 'test'@'%';

dropを使用します。

ユーザー権限の付与方法

-- grant {権限名} on {対象のデータベースオブジェクト} to {ユーザー};

-- selectの権限を付与
grant select on t_db.* to 't_user'@'localhost';

-- すべてのデータベースのすべてのオブジェクトに対してselectの権限を付与
grant select on *.* to 't_user'@'localhost';

-- updateとinsertの権限を付与
grant update, insert on t_db.* to 't_user'@'localhost';

-- createとalterの権限を付与
grant create, alter on t_db.* to 't_user'@'localhost';

-- すべての権限を付与
grant all on t_db.* to 't_user'@'localhost';

t_dbのすべてのオブジェクトへのアクセス権限を付与したいとき、
t_db.*と指定します。

テーブルごとに権限を付与することも可能ですが、
管理が煩雑になるので、基本的にはデータベースごとに権限を付与します。

ユーザー権限の確認方法

-- 権限の確認
show grants for t_user@localhost;

ユーザー権限の削除

-- 権限の削除
revoke all on t_db.* from 't_user'@'localhost';

revokeを使用することで権限を削除できます。