# データベースユーザーとロールの認証 （TiDB Dedicated）

+ シンタックス: `GRANT {privilege_list} ON {object_scope} TO {grantee_list} [WITH GRANT OPTION]`
+ **`{object_scope}`**
  + グローバルレベル: `*.*`
  + データベース/スキーマレベル: `{schema_name}.*`
  + テーブルレベル: `{schema_name}.{table_name}`
+ **`{privilege_list}`** には次のものがあります：`ALL`、`ALTER`、`CREATE`、`DELETE`、`USAGE`などです
+ **`WITH GRANT OPTION`**: 他の人に特定の権限を付与する権限をユーザーに与えます
+ **`{grantee_list}`**はユーザーでもロールでもかまいません
```
~!@-- Global level - Read all tables:@!~
GRANT SELECT ON *.* TO user1 WITH GRANT OPTION; ~!@-- grant@!~
REVOKE SELECT ON *.* FROM user1; ~!@-- revoke@!~

~!@-- Database level - Read all tables in the `universe` database:@!~
GRANT SELECT ON universe.* TO user1; ~!@-- grant@!~
REVOKE SELECT ON universe.* FROM user1; ~!@-- revoke@!~

~!@-- Table level - Read `universe.planets` table:@!~
GRANT SELECT ON universe.planets TO user1; ~!@-- grant@!~
REVOKE SELECT ON universe.planets FROM user1; ~!@-- revoke@!~
```
------------------------------------------------------------------------------
`GRANT`ステートメントは、`TiDB` ユーザーまたはロールに権限を割り当てます。`TiDB` 権限システムは`MySQL`に従い、資格情報はデータベース/テーブルのパターンに基づいて割り当てられます。このステートメントを実行するには、`GRANT OPTION`権限とあなたが割り当てるすべての権限が必要です。

`MySQL`と同様に、`USAGE`権限は`TiDB`サーバーにログインできることを意味します。
- カラムレベルの権限は現在サポートされていません。
- `MySQL`と同様に、`NO_AUTO_CREATE_USER sql mode`が存在しない場合、`GRANT`ステートメントは、ユーザーが存在しないときに空のパスワードで新しいユーザーを自動的に作成します。この`SQL MODE`を削除すると（デフォルトで有効になっています）、セキュリティ上のリスクがあります。

`syntax`と`{privilege_list}`の詳細については、`https://docs.pingcap.com/ja/tidb/stable/sql-statement-grant-privileges`を参照します。

詳細については、次のリンクを参照します：`https://www.pingcap.com/education/course-tidb-administration/`です。
