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}]
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ユーザーの名前。 |
|
|
内部ユーザーの識別句。内部ユーザーのパスワードを指定する必要があります。 指定できるパスワードは、ユーザーに割り当てられたプロファイルによって異なります。具体的には、 |
|
|
外部ユーザー(オペレーティング・システム・ユーザー)を識別します。外部ユーザーとしてデータベース操作を実行するには、外部ユーザー名がオペレーティング・システムまたはネットワークで認証されたユーザー名と一致する必要があります。ユーザーはログイン時にオペレーティング・システムで認証されているため、TimesTenではパスワードが要求されません。 |
|
|
|
|
|
|
|
|
|
説明
-
データベース・ユーザーには、内部ユーザーまたは外部ユーザーを指定できます。
-
内部ユーザーは、TimesTenデータベース用に定義されるユーザーです。
-
外部ユーザーは、オペレーティング・システムで定義されています。外部ユーザーにTimesTenパスワードを割り当てることはできません。
-
- パスワードの要件:
- 30文字を超えることはできません。
- 大文字と小文字が区別されます。
- 先頭に文字を使用する必要があります。パスワードを二重引用符で囲まないかぎり、パスワードの先頭を数字または特殊文字にすることはできません。
- 特殊文字を使用する場合は、パスワードを二重引用符で囲む必要があります。例外は、
#と@の特殊文字です。#または@の特殊文字を含むパスワードは、二重引用符で囲む必要がありません。 - セミコロン(
;)や二重引用符(")を含めることはできません。
-
ユーザーを作成すると、ユーザーには
PUBLICに付与されている権限が付与され、その他の権限は付与されません。 -
PROFILE句は、ユーザーにプロファイルを割り当てる場合に使用します。内部ユーザーにプロファイルを割り当てた場合、そのユーザーはプロファイルで指定された制限を超えることはできません。内部ユーザーにプロファイルを割り当てない場合は、そのユーザーにDEFAULTプロファイルが割り当てられます。詳細は、「CREATE PROFILE」を参照してください。 -
ACCOUNTLOCKまたはACCOUNTUNLOCKは、ユーザー・アカウントをロックまたはロック解除する場合に使用します。 -
PASSWORDEXPIRE句は、データベースに接続する前に、ユーザーのパスワードを期限切れにして、パスワードの変更を強制するために使用します。 -
接続が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.
user3にCONNECT権限を付与します。
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.
user4にCONNECT権限を付与します。その次に、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.