ユーザー作成手順
ユーザーの作成は以下の順序で行います。
- データベースにユーザーを追加
- 追加したユーザーに権限を付与
※ 1と2を同時に実行する方法もあります。併せてご紹介します。
コマンド構文
ユーザー作成コマンド(CREATE USER)
CREATE USER "(ユーザー名)"@"(ホスト名)" IDENTIFIED BY (パスワード);
- ユーザー名
作成するユーザー名です。 - ホスト名
ホスト名またはIPアドレスが指定できます。 - パスワード
接続時に使用するパスワードです。省略することができます。
コマンドサンプル:ユーザー作成
ホスト名を指定して作成
CREATE USER "sample_user1"@"localhost";
CREATE USER "sample_user2"@"www";
CREATE USER "sample_user3"@"www.abcd";
CREATE USER "sample_user4"@"%.sample.com";
IPアドレスを指定して作成
CREATE USER "sample_user5"@"192.168.1.10";
CREATE USER "sample_user6"@"192.168.1.0/255.255.255.0";
CREATE USER "sample_user7"@"192.168.1.0/255.255.0.0";
CREATE USER "sample_user8"@"192.168.1.0/255.0.0.0;
コマンドサンプル:作成ユーザーの確認
作成されたユーザーは「mysql.user」テーブルで確認することができます。
SELECT user, host FROM mysql.user;
権限付与コマンド(GRANT)
GRANT (付与する権限) ON (対象データベース名).(対象テーブル名) TO "(ユーザー名)"@"(ホスト名)";
- 付与する権限
ユーザーに付与する権限です。
28に分類されたデータベース操作のなかから、実行を許可する操作を指定します。
カラム単位で異なる権限を付与することができます。 - 対象データベース名
権限を与える範囲を指定します。 - 対象テーブル名
データベース名と共に指定することで、権限を与える範囲をテーブル単位に指定することができます。
コマンドパラメータ:指定可能な権限
「ALL」で一度にすべての権限を付与することができます。
SELECT | CREATE | EXECUTE | FILE |
UPDATE | DROP | CREATE ROUTINE | CREATE USER |
INSERT | CREATE TEMPORARY TABLES | ALTER ROUTINE | CREATE TABLESPACE |
DELETE | CREATE VIEW | PROCESS | |
ALTER | SHOW VIEW | RELOAD | |
INDEX | REPLICATION CLIENT | ||
TRIGGER | REPLICATION SLAVE | ||
EVENT | SHOW DATABASES | ||
LOCK TABLES | SHUTDOWN | ||
SUPER |
コマンドサンプル:権限付与
サーバー内のすべてのデータベースに対して権限を付与
GRANT ALL ON *.* TO "sample_user"@"localhost";
GRANT SELECT ON *.* TO "sample_user"@"localhsot";
GRANT SELECT, UPDATE, INSERT ON *.* "sample_user"@"localhost";
特定のデータベースに対して権限を付与
/* sampleDBのすべてのテーブルに対する権限を付与 */
GRANT ALL ON sampleDB.* TO "sample_user"@"localhost";
/* sampleDBのsampleTableに対する権限を付与 */
GRANT ALL ON samoleDB.sampleTable TO "sample_user"@"localhost";
特定のテーブルカラムに対して権限を付与
/* sampleDB.sampleTableの sample_colに対する権限を付与 */
GRANT SELECT (sample_col) ON sampleDB.sampleTable TO "sample_user"@"localhost";
/* sampleDB.sampleTableの sample_colとsample_col2に異なる権限を付与 */
GRANT SELECT (sample_col), INSERT (sample_col2) ON sampleDB.sampleTable TO "sample_user"@"localhost";
GRANT SELECT (sample_col), INSERT (sample_col2) ON sampleDB.sampleTable TO "sample_user"@"localhost";
GRANT SELECT (sample_col, sample_col2) on sampleDB.sampleTable TO "sample_user"@"localhost";
GRANT SELECT, UPDATE (sample_col) on sampleDB.sampleTable TO "sample_user"@"localhost";
GRANT SELECT, UPDATE (sample_col, sample_col2) on sampleDB.sampleTable TO "sample_user"@"localhost";
コマンドサンプル:ユーザーに付与した権限の確認
SHOW GRANTS FOR "sample_user"@"localhost";
コマンドサンプル:ユーザーに付与した権限の削除
REVOKE ALL ON *.* FROM "sample_user"@"localhost";
REVOKE ALL ON sampleDB.* FROM "sample_user"@"localhost";
REVOKE ALL ON sampleDB.sampleTable FROM "sample_user"@"localhost";
REVOKE ALL (sample_col) on sampleDB.sampleTable FROM "sample_user"@"localhost";
削除コマンドでのデータベース指定、テーブル指定は、権限を付与した時と同じ範囲を指定する必要があります。「全体指定」で付与された権限から「一部」を削除したり、「一部」に対して付与された権限を「全体指定」で削除したりすることはできません。
コマンドサンプル:ユーザーに付与した権限の削除(NG例)
/* 全体指定で付与された権限から部分指定で一部分を削除 */
GRANT ALL ON *.* TO "sample_user"@"localhost";
REVOKE ALL ON sampleDB.* from "sample_user"@"localhost"; /* NG */
/* 全体指定で付与された権限から部分指定で一部分を削除 */
GRANT ALL ON sampleDB.* TO "sample_user"@"localhost";
REVOKE ALL ON sampleDB.sampleTable from "sample_user"@"localhost"; /* NG */
/* 部分指定で付与された権限を全体指定で削除 */
GRANT ALL ON sampleDB.* TO "sample_user"@"localhost";
REVOKE ALL ON *.* from "sample_user"@"localhost"; /* NG */
/* 部分指定で付与された権限を全体指定で削除 */
GRANT ALL ON sampleDB.sampleTable TO "sample_user"@"localhost";
REVOKE ALL ON sampleDB.* from "sample_user"@"localhost"; /* NG */
コマンドサンプル:ユーザーの削除
DROP USER 'sample_user'@'localhost';
コマンドサンプル:ユーザーの作成と権限付与を同時に実行する
GRANT (付与する権限) ON (DB名).(TABLE名) TO "(USER名)"@"(HOST名)" IDENTIFIED BY (PASSWORD);
コメント