Search

ユーザー作成・権限付与 ※MySQL3.22.11~
GRANT構文

unknown

###############################################################################################################################################################################################################################################################

MySQL管理者は、GRANT構文を使用してユーザを作成したり、作成したユーザーに権限を付与することが可能です。 逆に、ユーザーを削除したり、権限を取り消す場合は、REVOKE構文を使用します。 権限なしのユーザーを作成するには、USAGEを使用します。

ユーザーに付与する権限には以下の4つのレベルがあります。

権限レベル
権限説明権限の保存先
グローバルレベル特定のサーバ上にある全データベースに適用されます。GRANT ALL ON *.*は、グローバル権限の付与のみを行います。mysql.userテーブル
データベースレベル指定したデータベースの全テーブルに適用されます。GRANT ALL ON db.*は、データベース権限の付与のみを行います。mysql.dbテーブル及びmysql.hostテーブル
テーブルレベル指定したテーブルの全カラムに適用されます。GRANT ALL ON db.tableは、テーブル権限の付与のみを行います。mysql.tables_privテーブル
カラムレベル指定したテーブルの特定のカラムに適用されます。mysql.columns_privテーブル

グローバルレベル(管理者権限)ユーザーの作成

# 管理者権限を持ったユーザー(coco)を作成
mysql> GRANT ALL PRIVILEGES ON Enter
    -> *.* Enter
    -> TO coco@localhost Enter
    -> IDENTIFIED BY 'cococooc'; Enter
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES; Enter
Query OK, 0 rows affected (0.20 sec)

mysql>

データベースレベルユーザーの作成

指定したデータベースの全テーブルを操作できる権限を持ったユーザーを作成します。

mysql> GRANT ALL ON Enter
    -> db_User.* Enter
    -> TO userT@localhost Enter
    -> IDENTIFIED BY 'himitsu'; Enter
Query OK, 0 rows affected (0.43 sec)

mysql> FLUSH PRIVILEGES; Enter
Query OK, 0 rows affected (0.20 sec)

mysql>

テーブルレベルユーザーの作成

指定したデータベースの指定したテーブルを操作できる権限を持ったユーザーを作成します。

mysql> GRANT ALL ON Enter
    -> db_User.tbl_Customer Enter
    -> TO userC@localhost Enter
    -> IDENTIFIED BY 'himitsu'; Enter
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES; Enter
Query OK, 0 rows affected (0.01 sec)

mysql>

実行可能な文を指定する場合

指定したデータベースの全テーブルに対して、SELECT文、INSERT文、UPDATE文、DELETE文を実行できるユーザーを作成します。

mysql> GRANT SELECT, INSERT, UPDATE, DELETE Enter
    -> ON db_User.* Enter
    -> TO userdb@localhost Enter
    -> IDENTIFIED BY 'dbdb'; Enter
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES; Enter
Query OK, 0 rows affected (0.20 sec)

mysql>

ユーザー削除

unknown

DROP USER user_name;
または
DELETE FROM mysql.user WHERE user='ユーザー名' AND host='ホスト名';
FLUSH PRIVILEGES;
# 管理者権限ユーザー「hoge」を登録
mysql> GRANT ALL PRIVILEGES ON *.* TO hoge@localhost; Enter
Query OK, 0 rows affected (0.00 sec)

# パスワード設定
mysql> SET PASSWORD FOR hoge=PASSWORD('hogehoge'); Enter
Query OK, 0 rows affected (0.00 sec)

# 登録されているか確認
mysql> SELECT Host, User, Password FROM mysql.user WHERE user='hoge'; Enter
+-----------+------+------------------+
| Host      | User | Password         |
+-----------+------+------------------+
| localhost | hoge | 0b9eb44c024ed960 |
+-----------+------+------------------+
1 row in set (0.00 sec)

# userテーブルから、ユーザー「hoge」を削除
mysql> DELETE FROM mysql.user WHERE user='hoge' AND host='localhost'; Enter
Query OK, 1 row affected (0.00 sec)

# 削除されているか確認
mysql> SELECT Host, User, Password FROM mysql.user WHERE user='hoge';
Empty set (0.00 sec)

mysql>

権限削除
REVOKE構文

unknown

REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]
  ON {tbl_name | * | *.* | db_name.*}
  FROM user_name [, user_name ...]

MySQL管理者は、REVOKE構文を使用して既存のユーザーの権限を削除することが可能です。 逆に、ユーザーを作成したり、権限を付与する場合は、GRANT構文を使用します。

既存のユーザーから削除できる権限には以下の4つのレベルがあります。

権限レベル
権限説明権限の保存先
グローバルレベル特定のサーバ上にある全データベースに適用されます。REVOKE ALL ON *.*は、グローバル権限の削除のみを行います。mysql.userテーブル
データベースレベル指定したデータベースの全テーブルに適用されます。REVOKE ALL ON db.*は、データベース権限の削除のみを行います。mysql.dbテーブル及びmysql.hostテーブル
テーブルレベル指定したテーブルの全カラムに適用されます。REVOKE ALL ON db.tableは、テーブル権限の削除のみを行います。mysql.tables_privテーブル
カラムレベル指定したテーブルの特定のカラムに適用されます。mysql.columns_privテーブル
mysql> REVOKE ALL ON *.* FROM coco@localhost; Enter
Query OK, 0 rows affected (0.00 sec)

mysql> REVOKE ALL ON db.* FROM dbUser@localhost; Enter
Query OK, 0 rows affected (0.07 sec)

mysql> REVOKE ALL ON db.table FROM tblUser@localhost; Enter
Query OK, 0 rows affected (0.16 sec)

mysql>

管理者パスワード設定

unknown

SET PASSWORD FOR ユーザー名@'%' = PASSWORD('パスワード');
SET PASSWORD FOR root=password('パスワード');
mysql> SET PASSWORD FOR root=PASSWORD('himitsu'); Enter
Query OK, 0 rows affected (0.00 sec)

権限確認

unknown

SHOW GRANTS FOR ユーザー名@ホスト名;
C:\mysql\bin> mysql -u root -p Enter
Enter password: ***** Enter
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 77 to server version: 4.0.26-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

# ユーザー「root」の権限確認
mysql> SHOW GRANTS FOR root@localhost; Enter
+---------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                     |
+---------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '43e9a4ab75570f5b' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

ユーザー確認

unknown

SELECT Host, User, Password FROM mysql.user;
または
SELECT Host, User, Password FROM mysql.user\G
mysql> SELECT Host, User, Password FROM mysql.user; Enter
+-----------+------+------------------+
| Host      | User | Password         |
+-----------+------+------------------+
| localhost | root | 43e9a4ab75570f5b |
| localhost | coco | 43a5a6c97ccc129a |
+-----------+------+------------------+
2 rows in set (0.30 sec)

mysql>

# 特定のユーザの未確認する場合
mysql> SELECT Host, User, Password FROM mysql.user Enter
    -> WHERE user='coco'; Enter
+-----------+------+------------------+
| Host      | User | Password         |
+-----------+------+------------------+
| localhost | coco | 43a5a6c97ccc129a |
+-----------+------+------------------+
1 row in set (0.00 sec)

mysql>

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop

polarized women