メインコンテンツまでスキップ
バージョン: 4.1 Preview

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_adminuser_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_timeout600 に設定します。

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"
}';