CREATE USER

CREATE USER文は、TimesTenデータベースでユーザーを作成します。

必要な権限

ADMIN

TimesTen Scaleoutでの使用

この文は、TimesTen Scaleoutでサポートされています。

SQL構文

CREATE USER user IDENTIFIED BY {password | "password"}
  [PROFILE profile] [ACCOUNT {LOCK|UNLOCK}] [PASSWORD EXPIRE]

または

CREATE USER user IDENTIFIED EXTERNALLY
  [PROFILE profile] [ACCOUNT {LOCK|UNLOCK}]

パラメータ

パラメータ 説明

user

ユーザーの名前。

IDENTIFIED BY {password | "password"}

内部ユーザーの識別句。内部ユーザーのパスワードを指定する必要があります。

指定できるパスワードは、ユーザーに割り当てられたプロファイルによって異なります。具体的には、PASSWORD_COMPLEXITY_CHECKERパスワード・パラメータの値によって、パスワードの複雑さが決まります。この値がTT_VERIFY_FUNCTIONTT_STRONG_VERIFY_FUNCTIONまたはTT_STIG_VERIFY_FUNCTIONの場合、パスワードは特定のパスワード検証要件を満たしている必要があります。たとえば、この値がTT_VERIFY_FUNCTIONの場合は、パスワードにデータベースの名前を含めることはできません。詳細は、「パスワード複雑度チェッカの検証について」を参照してください。

IDENTIFIED EXTERNALLY

外部ユーザー(オペレーティング・システム・ユーザー)を識別します。外部ユーザーとしてデータベース操作を実行するには、外部ユーザー名がオペレーティング・システムまたはネットワークで認証されたユーザー名と一致する必要があります。ユーザーはログイン時にオペレーティング・システムで認証されているため、TimesTenではパスワードが要求されません。

PROFILE profile

PROFILE句を使用して、ユーザーに割り当てるプロファイルの名前を指定します(profileで指定)。このプロファイルによって、ユーザーのパスワード・パラメータの制限が設定されます。各パスワード・パラメータの詳細は、「CREATE PROFILE」を参照してください。PROFILE句を省略すると、TimesTenはユーザーにDEFAULTプロファイルを割り当てます。外部ユーザー(EXTERNALLYキーワードの指定で示される)を作成する場合は、PROFILE句を指定できますが、外部ユーザーにはパスワード・パラメータの効果がありません。また、外部ユーザーにPROFILE句を指定しなかった場合、TimesTenはユーザーにDEFAULTプロファイルを割り当てます(ただし、パスワード・パラメータの効果はありません)。

ACCOUNT [LOCK|UNLOCK]

ACCOUNT LOCKは、ユーザーのアカウントをロックして、データベースへの接続を禁止する場合に指定します。ACCOUNT UNLOCKは、ユーザーのアカウントのロックを解除して、データベースに接続できるようにする場合に指定します。デフォルトは、ACCOUNT UNLOCKです。

PASSWORD EXPIRE

PASSWORD EXPIREは、ユーザーのパスワードを期限切れにする場合に指定します。この設定により、ADMIN権限を持つユーザーは、データベースに接続する前にパスワードを変更するように強制されます。期限切れのパスワードを変更するには、ADMIN権限を持つユーザーが、IDENTIFIED BY句を含むALTER USER文を使用して、パスワードを変更する必要があります。パスワードが変更されると、ユーザーはデータベースに新しいパスワードでログインできます。新しく作成したユーザーにADMIN権限が付与されていても、新しく作成したユーザーはデータベースにログインできないため、最初はパスワードを変更できない点に注意してください。詳細は、「ALTER USER」を参照してください。この句は、外部で識別されるユーザー(IDENTIFIED EXTERNALLY句で示される)には無効です。

説明

  • データベース・ユーザーには、内部ユーザーまたは外部ユーザーを指定できます。

    • 内部ユーザーは、TimesTenデータベース用に定義されるユーザーです。

    • 外部ユーザーは、オペレーティング・システムで定義されています。外部ユーザーにTimesTenパスワードを割り当てることはできません。

  • パスワードの要件:
    • 30文字を超えることはできません。
    • 大文字と小文字が区別されます。
    • 先頭に文字を使用する必要があります。パスワードを二重引用符で囲まないかぎり、パスワードの先頭を数字または特殊文字にすることはできません。
    • 特殊文字を使用する場合は、パスワードを二重引用符で囲む必要があります。例外は、#@の特殊文字です。#または@の特殊文字を含むパスワードは、二重引用符で囲む必要がありません。
    • セミコロン(;)や二重引用符(")を含めることはできません。
  • ユーザーを作成すると、ユーザーにはPUBLICに付与されている権限が付与され、その他の権限は付与されません。

  • PROFILE句は、ユーザーにプロファイルを割り当てる場合に使用します。内部ユーザーにプロファイルを割り当てた場合、そのユーザーはプロファイルで指定された制限を超えることはできません。内部ユーザーにプロファイルを割り当てない場合は、そのユーザーにDEFAULTプロファイルが割り当てられます。詳細は、「CREATE PROFILE」を参照してください。

  • ACCOUNT LOCKまたはACCOUNT UNLOCKは、ユーザー・アカウントをロックまたはロック解除する場合に使用します。

  • PASSWORD EXPIRE句は、データベースに接続する前に、ユーザーのパスワードを期限切れにして、パスワードの変更を強制するために使用します。

  • 接続がTLSで暗号化されている場合は、クライアント/サーバー接続でユーザーを作成できます。詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』「TimesTen Client/Server用のTransport Layer Security」を参照してください。

  • TimesTenでは、ユーザーbradはユーザー"brad"と同じになります。いずれの場合も、ユーザーの名前はBRADと作成されます。

  • ユーザー名は、TT_CHARデータ型です。

  • この文はレプリケートされます。

ユーザーの作成およびパスワード検証の確認

この例では、user_pw1ユーザーを作成しますが、user1_pwユーザーにはプロファイルを割り当てません。このユーザーは、DEFAULTプロファイルの制限の対象になります。DEFAULTプロファイルでは、PASSWORD_COMPLEXITY_CHECKERパスワード・パラメータがNULLに設定されています。そのため、このユーザーのパスワードにはパスワード検証が実行されません。その後で、DEFAULTプロファイルを変更して、PASSWORD_COMPLEXITY_CHECKERの値をTT_VERIFY_FUNCTIONに変更します。user1_p1ユーザーは、それまでと同じように元のパスワードを使用してデータベースに接続できます。パスワード検証は、新しく作成したユーザーにのみ実行されます。

Command> CREATE USER user_pw1 IDENTIFIED BY user1_pw1;

User created.
dba_profilesシステム・ビューを問い合せることで、DEFAULTプロファイルのパスワード・パラメータの制限を確認します。PASSWORD_COMPLEXITY_CHECKERパスワード・パラメータの値は、NULLになっています。
Command> SELECT * FROM dba_profiles WHERE profile = 'DEFAULT';
< DEFAULT, FAILED_LOGIN_ATTEMPTS, PASSWORD, 10 >
< DEFAULT, PASSWORD_LIFE_TIME, PASSWORD, UNLIMITED >
< DEFAULT, PASSWORD_REUSE_TIME, PASSWORD, UNLIMITED >
< DEFAULT, PASSWORD_REUSE_MAX, PASSWORD, UNLIMITED >
< DEFAULT, PASSWORD_COMPLEXITY_CHECKER, PASSWORD, NULL >
< DEFAULT, PASSWORD_LOCK_TIME, PASSWORD, .0034 >
< DEFAULT, PASSWORD_GRACE_TIME, PASSWORD, UNLIMITED >
< DEFAULT, TEMP_SPACE_PER_SESSION_MAX, MEMORY, UNLIMITED >
8 rows found.
DEFAULTプロファイルを変更して、PASSWORD_COMPLEXITY_CHECKERパラメータの値をTT_VERIFY_FUNCTIONに変更します。user_pw1ユーザーとして、データベースに接続してみます。パスワード検証は新しく作成したパスワードにのみ実行されるため、接続は成功します。
Command> ALTER PROFILE "DEFAULT" LIMIT 
           PASSWORD_COMPLEXITY_CHECKER TT_VERIFY_FUNCTION;

Profile altered.

Command> connect adding "UID=user_pw1;PWD=user_pw1" as user1;
Connection successful: DSN=access1;UID=user_pw1;
DataStore=/scratch/user1/mydatabase1;DatabaseCharacterSet=AL32UTF8;
ConnectionCharacterSet=AL32UTF8;PermSize=128;
(Default setting AutoCommit=1)
user_pw2ユーザーを作成して、パスワードにuser_pw2を指定します。CREATE USER文は失敗します。user_pw2のパスワードは新しく作成したパスワードであるため、パスワード検証が実行されます。TT_VERIFY_FUNCTION関数の要件を満たしているパスワードを指定して、user_pw2ユーザーを再度作成します。CREATE USER文は正常に実行され、ユーザーが作成されます。TT_VERIFY_FUNCTION関数の詳細は、「TT_VERIFY_FUNCTION」を参照してください。
Command> CREATE USER user_pw2 IDENTIFIED BY user_pw2;
15186: Password complexity check for the specified password failed
15188: TT-20002: Password contains the username
The command failed.

Command> CREATE USER user_pw2 IDENTIFIED BY abc75#n4;

User created.

TT_STRONG_VERIFY_FUNCTIONのパスワード要件があるユーザーの作成

次の例では、TT_STRONG_VERIFY_FUNCTION関数のパスワード検証要件について説明します。profile_pw3プロファイルを作成して、PASSWORD_COMPLEXITY_CHECKERパスワード・パラメータにTT_STRONG_VERIFY_FUNCTIONの値を指定します。user_pw3ユーザーを作成して、このユーザーにprofile_pw3プロファイルを割り当てます。異なるパスワードを試してみて、パスワードがTT_STRONG_VERIFY_FUNCTION関数の要件を満たしていることを確認します。パスワードが要件を満たしている場合は、CREATE USER文が成功して、ユーザーが作成されます。「TT_STRONG_VERIFY_FUNCTION」を参照してください。
Command> CREATE PROFILE profile_pw3 LIMIT 
           PASSWORD_COMPLEXITY_CHECKER TT_STRONG_VERIFY_FUNCTION;

Profile created.
user_pw3ユーザーを作成して、様々なパスワードを試してみます。特殊文字(#@を除く)は、二重引用符で囲む必要があることに注意してください。
Command> CREATE USER user_pw3 IDENTIFIED BY abcABC1# 
           PROFILE profile_pw3;
15186: Password complexity check for the specified password failed
15188: TT-20001: Password length less than 9
The command failed.

Command> CREATE USER user_pw3 IDENTIFIED BY abcABCD1# 
           PROFILE profile_pw3;
15186: Password complexity check for the specified password failed
15188: TT-20001: Password must contain at least 2 digit(s)
The command failed.

Command> CREATE USER user_pw3 IDENTIFIED BY abcABCD11# 
           PROFILE profile_pw3;
15186: Password complexity check for the specified password failed
15188: TT-20001: Password must contain at least 2 special character(s)
The command failed.

Command> CREATE USER user_pw3 IDENTIFIED BY "!abcABCD11#" 
           PROFILE profile_pw3;

User created.

プロファイルを割り当てるユーザーの作成

この例では、user1ユーザーを作成して、そのユーザーにprofile1プロファイルを割り当てます。

Command> CREATE USER user1 IDENTIFIED BY user1 PROFILE profile1;
 
User created.

プロファイルを割り当てないユーザーの作成

この例では、user2ユーザーを作成して、プロファイルを割り当てません。user2ユーザーには、DEFAULTプロファイルのパスワード・パラメータの値が割り当てられます。

Command> CREATE USER user2 identified by user2;
 
User created.

dba_usersシステム・ビューを問い合せて、user2ユーザーにDEFAULTプロファイルが割り当てられていることを確認します。

Command> SELECT profile FROM dba_users WHERE username='USER2';
< DEFAULT >
1 row found.

ユーザーの作成とユーザー・アカウントのロック

この例では、user3ユーザーを作成して、user3アカウントをロックします。user3アカウントは、user3ユーザーがデータベースに接続する前に、ADMIN権限を持つユーザーがロック解除しておく必要があります。

Command> CREATE USER user3 IDENTIFIED BY user3 ACCOUNT LOCK;
 
User created.

user3CONNECT権限を付与します。

Command> GRANT CONNECT TO user3;

user3として、データベースに接続してみます。user3アカウントはロックされているため、接続に失敗します。

Command> connect adding "UID=user3;PWD=user3" as user3;
15179: the account is locked
The command failed.

インスタンス管理者としてデータベースに再接続し、ALTER USER文を使用してuser3アカウントのロックを解除します。

none: Command> use database1
database1: Command> ALTER USER user3 ACCOUNT UNLOCK;
 
User altered.

データベースに、user3ユーザーとして接続してみます。接続が成功します。

database1: Command> connect adding "UID=user3;PWD=user3" as user3;
Connection successful: DSN=database1;UID=user3;DataStore=/scratch/database1;
DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;PermSize=128;
(Default setting AutoCommit=1)

ユーザー・アカウントのロックとパスワードの変更の強制

この例では、user4ユーザーを作成します。user4ユーザーには、profile1プロファイルを割り当てます。user4アカウントをロックして、user4ユーザーがデータベースに接続する前にuser4のパスワードの変更が必要になるようにします。

Command> CREATE USER user4 identified by user4 PROFILE profile1 
         ACCOUNT LOCK PASSWORD EXPIRE;
 
User created.

user4として、データベースに接続してみます。user4アカウントをロックして、user4ユーザーがデータベースに接続する前にパスワードの変更が必要になるようにします。

Command>  connect adding "UID=user4;PWD=user4" as user4;
15179: the account is locked
The command failed.

インスタンス管理者としてデータベースに再接続し、ALTER USER文を使用してuser4アカウントのロックを解除します。

none: Command> use database1
database1: Command> ALTER USER user4 ACCOUNT UNLOCK;
 
User altered.

user4CONNECT権限を付与します。その次に、user4の期限切れのパスワードを変更します。(この例では、パスワードをboldで示したuser4_changedに変更します)。

database1: Command> GRANT CONNECT TO user4;
database1: Command> ALTER USER user4 IDENTIFIED BY user4_changed;
 
User altered.

user4ユーザーとして、データベースに接続してみます。接続が成功します。アカウントのロックが解除され、パスワードが変更されています。

database1: Command> connect adding "UID=user4;PWD=user4_changed" as user4;
Connection successful: DSN=database1;UID=user4;DataStore=/scratch/database1;
DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;PermSize=128;
(Default setting AutoCommit=1)

外部ユーザーの作成

この例では、外部ユーザーとしてuser5ユーザーを作成します。

Command> CREATE USER user5 IDENTIFIED EXTERNALLY;
 
User created.