Skip to content

Latest commit

 

History

History
147 lines (110 loc) · 4.5 KB

File metadata and controls

147 lines (110 loc) · 4.5 KB
title GRANT <role> | TiDB SQL Statement Reference
summary TiDB データベースに対する GRANT <role> の使用法の概要。

GRANT <role> {#code-grant-x3c-role-code}

既存のユーザーに、以前に作成したロールを割り当てます。ユーザーは、ステートメントSET ROLE <rolename>を使用してロールの権限を引き受けるか、ステートメントSET ROLE ALL使用して割り当てられているすべてのロールを引き受けることができます。

概要 {#synopsis}

GrantRoleStmt ::=
    'GRANT' RolenameList 'TO' UsernameList

RolenameList ::=
    Rolename ( ',' Rolename )*

UsernameList ::=
    Username ( ',' Username )*

例 {#examples}

rootユーザーとして TiDB に接続します。

mysql -h 127.0.0.1 -P 4000 -u root

新しいロールanalyticsteamと新しいユーザーjenniferを作成します。

CREATE ROLE analyticsteam;
Query OK, 0 rows affected (0.02 sec)

GRANT SELECT ON test.* TO analyticsteam;
Query OK, 0 rows affected (0.02 sec)

CREATE USER jennifer;
Query OK, 0 rows affected (0.01 sec)

GRANT analyticsteam TO jennifer;
Query OK, 0 rows affected (0.01 sec)

jenniferユーザーとして TiDB に接続します。

mysql -h 127.0.0.1 -P 4000 -u jennifer

デフォルトでは、 analyticsteamロールに関連付けられた権限を使用できるようにするには、 jennifer SET ROLE analyticsteam実行する必要があることに注意してください。

SHOW GRANTS;
+---------------------------------------------+
| Grants for User                             |
+---------------------------------------------+
| GRANT USAGE ON *.* TO 'jennifer'@'%'        |
| GRANT 'analyticsteam'@'%' TO 'jennifer'@'%' |
+---------------------------------------------+
2 rows in set (0.00 sec)

SHOW TABLES in test;
ERROR 1044 (42000): Access denied for user 'jennifer'@'%' to database 'test'
SET ROLE analyticsteam;
Query OK, 0 rows affected (0.00 sec)

SHOW GRANTS;
+---------------------------------------------+
| Grants for User                             |
+---------------------------------------------+
| GRANT USAGE ON *.* TO 'jennifer'@'%'        |
| GRANT SELECT ON test.* TO 'jennifer'@'%'    |
| GRANT 'analyticsteam'@'%' TO 'jennifer'@'%' |
+---------------------------------------------+
3 rows in set (0.00 sec)

SHOW TABLES IN test;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
+----------------+
1 row in set (0.00 sec)

rootユーザーとして TiDB に接続します。

mysql -h 127.0.0.1 -P 4000 -u root

ステートメントSET DEFAULT ROLE 、ロールanalyticsteamjenniferに関連付けるために使用できます。

SET DEFAULT ROLE analyticsteam TO jennifer;
Query OK, 0 rows affected (0.02 sec)

jenniferユーザーとして TiDB に接続します。

mysql -h 127.0.0.1 -P 4000 -u jennifer

この後、ユーザーjenniferロールanalyticsteamに関連付けjenniferた権限を持ち、ステートメントSET ROLE実行する必要がなくなります。

SHOW GRANTS;
+---------------------------------------------+
| Grants for User                             |
+---------------------------------------------+
| GRANT USAGE ON *.* TO 'jennifer'@'%'        |
| GRANT SELECT ON test.* TO 'jennifer'@'%'    |
| GRANT 'analyticsteam'@'%' TO 'jennifer'@'%' |
+---------------------------------------------+
3 rows in set (0.00 sec)

SHOW TABLES IN test;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
+----------------+
1 row in set (0.00 sec)

MySQLの互換性 {#mysql-compatibility}

TiDBのGRANT <role>文はMySQL 8.0のロール機能と完全に互換性があります。互換性に関する相違点が見つかった場合は、 バグを報告する参照してください。

参照 {#see-also}