CREATE USER
CREATE USER は StarRocks ユーザーを作成します。StarRocks では、「user_identity」によってユーザーが一意に識別されます。v3.3.3 以降、StarRocks はユーザー作成時にユーザープロパティを設定することをサポートしています。
user_admin ロールを持つユーザーのみがこの操作を実行する権限を持っています。
構文
CREATE USER [IF NOT EXISTS] <user_identity>
[auth_option]
[DEFAULT ROLE <role_name>[, <role_name>, ...]]
[PROPERTIES ("key"="value", ...)]
パラメータ
-
user_identityは「user_name」と「host」の2つの部分から構成され、形式はusername@'userhost'です。「host」部分には、あいまい一致のために%を使用できます。「host」が指定されない場合、デフォルトで「%」が使用され、ユーザーが任意のホストから StarRocks に接続できることを意味します。ユーザー名の命名規則については、System limits を参照してください。
-
auth_optionは認証方法を指定します。現在、StarRocks ネイティブパスワード、mysql_native_password、および「authentication_ldap_simple」の3つの認証方法がサポートされています。StarRocks ネイティブパスワードは、ロジック上は mysql_native_password と同じですが、構文がわずかに異なります。1つのユーザーIDは、1つの認証方法のみを使用できます。auth_option: {IDENTIFIED BY 'auth_string'IDENTIFIED WITH mysql_native_password BY 'auth_string'IDENTIFIED WITH mysql_native_password AS 'auth_string'IDENTIFIED WITH authentication_ldap_simple AS 'auth_string'}| 認証方法 | ユーザー作成時のパスワード | ログイン時のパスワード | | ---------------------------- | ------------------------------ | ---------------------- | | ネイティブパスワード | 平文または暗号文 | 平文 | |
mysql_native_password BY| 平文 | 平文 | |mysql_native_password WITH| 暗号文 | 平文 | |authentication_ldap_simple| 平文 | 平文 |
パスワードは保存される前に暗号化されます。
-
DEFAULT ROLE <role_name>[, <role_name>, ...]:このパラメータが指定されている場合、ユーザーがログインした際に、これらのロールが自動的にユーザーに割り当てられ、デフォルトで有効化されます。指定されない場合、このユーザーは権限を持ちません。指定するすべてのロールがすでに存在することを確認してください。 -
PROPERTIESは、最大ユーザー接続数(max_user_connections)、パスワードポリシー(PASSWORD_POLICY)、catalog、ユーザーレベルのデータベースまたはセッション変数など、ユーザープロパティを設定します。ユーザーレベルのセッション変数は、ユーザーがログインした時点で有効になります。この機能は v3.3.3 以降でサポートされています。-- 最大ユーザー接続数を設定します。PROPERTIES ("max_user_connections" = "<Integer>")-- 既存のパスワードポリシーをユーザーにバインドします。PROPERTIES ("PASSWORD_POLICY" = "<policy_name>")-- catalog を設定します。PROPERTIES ("catalog" = "<catalog_name>")-- データベースを設定します。PROPERTIES ("catalog" = "<catalog_name>", "database" = "<database_name>")-- セッション変数を設定します。PROPERTIES ("session.<variable_name>" = "<value>", ...)ヒントPROPERTIESは user identity ではなく user に対して機能します。PASSWORD_POLICYは既存のパスワードポリシーを参照する必要があります。設定されている場合、そのユーザーに対してはシステムレベルのパスワードポリシーよりも優先されます。- グローバル変数と読み取り専用変数は、特定のユーザーに対して設定できません。
- 変数は次の順序で有効になります:SET_VAR > Session > User property > Global。
- 特定のユーザーのプロパティを表示するには、SHOW PROPERTY を使用できます。
例
例1:ホストを指定せずに平文パスワードを使用してユーザーを作成します。これは jack@'%' と同等です。
CREATE USER 'jack' IDENTIFIED BY '123456';
例2:平文パスワードを使用してユーザーを作成し、'172.10.1.10' からのログインを許可します。
CREATE USER jack@'172.10.1.10' IDENTIFIED WITH mysql_native_password BY '123456';
例3:暗号化パスワードを使用してユーザーを作成し、'172.10.1.10' からのログインを許可します。
CREATE USER jack@'172.10.1.10' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
CREATE USER jack@'172.10.1.10' IDENTIFIED WITH mysql_native_password AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
注:暗号化されたパスワードは password() 関数を使用して取得できます。
例4:ドメイン名「example_domain」からのログインを許可されたユーザーを作成します。
CREATE USER 'jack'@['example_domain'] IDENTIFIED BY '123456';
例5:LDAP 認証を使用するユーザーを作成します。
CREATE USER jack@'172.10.1.10' IDENTIFIED WITH authentication_ldap_simple;
例6:LDAP 認証を使用するユーザーを作成し、LDAP 内のユーザーの識別名(DN)を指定します。
CREATE USER jack@'172.10.1.10' IDENTIFIED WITH authentication_ldap_simple AS 'uid=jack,ou=company,dc=example,dc=com';
例7:「192.168」サブネットからのログインを許可されたユーザーを作成し、db_admin と user_admin をそのユーザーのデフォルトロールとして設定します。
CREATE USER 'jack'@'192.168.%' DEFAULT ROLE db_admin, user_admin;
例8:ユーザーを作成し、その最大ユーザー接続数を 600 に設定します。
CREATE USER 'jack'@'192.168.%' PROPERTIES ("max_user_connections" = "600");
例9:ユーザーを作成し、そのユーザーの catalog を hive_catalog に設定します。
CREATE USER 'jack'@'192.168.%' PROPERTIES ('catalog' = 'hive_catalog');
例10:ユーザーを作成し、デフォルトの catalog において、そのユーザーのデータベースを test_db に設定します。
CREATE USER 'jack'@'192.168.%' PROPERTIES ('catalog' = 'default_catalog', 'database' = 'test_db');
例11:ユーザーを作成し、そのユーザーのセッション変数 query_timeout を 600 に設定します。
CREATE USER 'jack'@'192.168.%' PROPERTIES ('session.query_timeout' = '600');
例12:JSON Web Token Authentication を使用するユーザーを作成します。
CREATE USER tom IDENTIFIED WITH authentication_jwt AS
'{
"jwks_url": "http://localhost:38080/realms/master/protocol/jwt/certs",
"principal_field": "preferred_username",
"required_issuer": "http://localhost:38080/realms/master",
"required_audience": "starrocks"
}';
例13:ユーザーを作成し、既存のパスワードポリシーをバインドします。
CREATE USER 'jack'@'192.168.%' IDENTIFIED BY '123456Ab!' PROPERTIES ('PASSWORD_POLICY' = 'app_password_policy');
例14:OAuth 2.0 認証を使用するユーザーを作成します。
CREATE USER tom IDENTIFIED WITH authentication_oauth2 AS
'{
"auth_server_url": "http://localhost:38080/realms/master/protocol/openid-connect/auth",
"token_server_url": "http://localhost:38080/realms/master/protocol/openid-connect/token",
"client_id": "12345",
"client_secret": "LsWyD9vPcM3LHxLZfzJsuoBwWQFBLcoR",
"redirect_url": "http://localhost:8030/api/oauth2",
"jwks_url": "http://localhost:38080/realms/master/protocol/openid-connect/certs",
"principal_field": "preferred_username",
"required_issuer": "http://localhost:38080/realms/master",
"required_audience": "12345"
}';