ユーザー管理・権限
- ユーザー作成・権限付与 ※MySQL3.22.11~〔GRANT構文〕
- ユーザー削除
- 権限削除〔REVOKE構文〕
- 管理者パスワード設定
- 権限確認
- ユーザー確認
ユーザー作成・権限付与 ※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;
または
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 ...]
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('パスワード');
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
または
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>