この記事では、ユーザーを作成する方法について説明します。
ユーザーを作成できるのは誰か
データベースが稼働中には、さまざまなユーザーを作成し、それぞれに適切な権限を付与する必要があります。一般的に、CREATE USER 権限が付与されたユーザーはユーザーを作成できます。
CREATE USER 権限は非常に強力なため、デフォルトではクラスタ管理者とテナント管理者のみがこのシステム権限を持っています。他のユーザーがユーザーを作成するには、CREATE USER 権限を付与されている必要があります。権限付与に関する操作の詳細については、直接権限付与を参照してください。
ユーザー名のルール
ユーザーに名前を指定する際には、以下の制限に注意する必要があります:
ユーザー名の一意性:各ユーザー名はテナント内で一意である必要があります。
ユーザー名はテナント内で一意ですが、異なるテナント間で同じ名前のユーザーを持つことができます。そのため、
ユーザー名@テナント名の形式で、システム全体で一意に特定されるテナントユーザーを作成できます。ユーザー名の命名規則:
OBClientやODCなどのクライアントを使用してユーザーを作成する場合、ユーザー名の長さは64バイトを超えないようにします。
OCPを使用してユーザーを作成する場合、ユーザー名は英字で始まり、大文字、小文字、数字、アンダースコアを含むことができ、長さは2~64文字です。
SQLステートメントを使用して最小限のデータベース権限を持つユーザーを作成する
CREATE USER のシステム権限を持つユーザーについては、ユーザー作成時に最小権限原則を堅持することを推奨します。これは、すべてのユーザーが自分のタスクを実行するために必要な最小限の権限のみを持つというものです。
ユーザー作成のSQLステートメントは以下のとおりです:
CREATE USER user_name [host_name] IDENTIFIED BY password [REQUIRE {NONE | SSL | X509 | tls_option_list}]
[PROFILE user_profile] [DEFAULT TABLESPACE table_space] [PRIMARY_ZONE 'zone_name']
password:
STR_VALUE
tls_option_list:
tls_option
| tls_option_list, tls_option
tls_option:
CIPHER STR_VALUE
| ISSUER STR_VALUE
| SUBJECT STR_VALUE
ステートメントの説明:
user_name:ユーザー名。同名のユーザーが既に存在する場合、システムはエラーを報告します。host_name:ユーザーが属するホストのIPアドレス。形式は@xx.xx.xx.xxです。IDENTIFIED BY:Oracleモードでは、ユーザーにパスワードを指定するためにIDENTIFIED BYを使用する必要があります。REQUIRE:ユーザーが使用する暗号化プロトコルをNONE、SSL、X509、またはtls_option_listのいずれかに指定します。PROFILE:ユーザーが使用するProfileを指定します。指定しない場合、システムのデフォルトのDEFAULT設定ファイルが使用されます。DEFAULT設定ファイルのすべての設定は、デフォルトで制限なしです。DEFAULT TABLESPACE table_space:ユーザーのデフォルトテーブルスペースを指定します。一般的には実際の意味はありません。PRIMARY_ZONE:ユーザーのPrimary Zoneを指定します。Primary Zoneに関する詳細情報については、Primary Zoneを参照してください。
最小限のデータベース権限、つまりデータベースへの接続権限を持つユーザー test2 を作成する例を以下に示します。
SYSユーザーを使用して、クラスタのOracleテナントにログインします。以下のコマンドを実行して、ユーザー
test2を作成します。obclient> CREATE USER test2 IDENTIFIED BY ******;CREATE USERステートメントの詳細については、CREATE USERを参照してください。以下のコマンドを実行して、ユーザー
test2にデータベースへの接続権限を付与します。obclient>GRANT CREATE SESSION TO test2;GRANTステートメントの詳細については、GRANTを参照してください。