ALTER USER
ALTER USER文を使用すると、ユーザーのパスワードを変更できます。また、ユーザーのプロファイルを変更することも、ユーザーのアカウントをロックまたはロック解除することも、ユーザーのパスワードを有効期限切れにすることもできます。こうした操作は、ADMIN権限を持つユーザーが実行できます。
また、この文を使用すると、ユーザーを内部から外部に変更することも、外部から内部に変更することもできます。
必要な権限
ユーザー自身のパスワードの変更に必要な権限はありません。
その他のすべての操作には、ADMIN権限が必要です。
TimesTen Scaleoutでの使用
この文は、TimesTen Scaleoutでサポートされています。
SQL構文
これは、ALTER USER...IDENTIFIED BYの構文です。少なくともIDENTIFIED BY句、PROFILE句、ACCOUNT句またはPASSWORD EXPIRE句のいずれかを必ず指定します。
ALTER USER user [IDENTIFIED BY {password | "password"}]
[PROFILE profile] [ACCOUNT {LOCK|UNLOCK}] [PASSWORD EXPIRE];これは、ALTER USER...IDENTIFIED EXTERNALLYの構文です。少なくともIDENTIFIED EXTERNALLY句、PROFILE句またはACCOUNT句のいずれかを必ず指定します。
ALTER USER user [IDENTIFIED EXTERNALLY] [PROFILE profile] [ACCOUNT {LOCK|UNLOCK}];
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
変更するユーザーの名前。 |
|
|
内部ユーザーと、その内部ユーザーのパスワードを指定します。 指定できるパスワードは、ユーザーに割り当てられたプロファイルによって異なります。具体的には、 |
|
|
ユーザーが外部ユーザーであることを指定します。 |
|
|
|
|
|
|
|
|
|
説明
-
データベース・ユーザーには、内部ユーザーまたは外部ユーザーを指定できます。
-
内部ユーザーは、TimesTenデータベース用に定義されるユーザーです。
-
外部ユーザーは、オペレーティング・システムで定義されています。外部ユーザーにTimesTenパスワードを割り当てることはできません。
-
- パスワードの要件:
- 30文字を超えることはできません。
- 大文字と小文字が区別されます。
- 先頭に文字を使用する必要があります。パスワードを二重引用符で囲まないかぎり、パスワードの先頭を数字または特殊文字にすることはできません。
- 特殊文字を使用する場合は、パスワードを二重引用符で囲む必要があります。例外は、
#と@の特殊文字です。#または@の特殊文字を含むパスワードは、二重引用符で囲む必要がありません。 - セミコロン(
;)や二重引用符(")を含めることはできません。
-
PROFILE句は、ユーザーのプロファイルを変更する場合に使用します。詳細は、「CREATE PROFILE」を参照してください。 -
ACCOUNTLOCKまたはACCOUNTUNLOCKは、ユーザー・アカウントのロック設定を変更する場合に使用します。 -
PASSWORDEXPIRE句は、データベースに接続する前に、ユーザーのパスワードを期限切れにして、パスワードの変更を強制するために使用します。 -
接続がTLSで暗号化されている場合は、クライアント/サーバー接続を使用してユーザーを変更できます。詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』の「TimesTen Client/Server用のTransport Layer Security」を参照してください。
-
レプリケーションが構成されている場合、この文はレプリケートされます。
例
ユーザー変更時のパスワード検証の説明
この例では、myprofile_strongpwプロファイルを作成して、PASSWORD_COMPLEXITY_CHECKERパスワード・パラメータにTT_VERIFY_FUNCTIONの値を指定します。その後で、sampleuser_pwchangeユーザーを作成し、このユーザーにmyprofile_strongpwプロファイルを割り当てます。指定したパスワードはTT_STRONG_VERIFY_FUNCTION関数の要件を満たしていて、ユーザーが作成されます。TT_STRONG_VERIFY_FUNCTION関数の詳細は、「TT_STRONG_VERIFY_FUNCTION」を参照してください。
Command> CREATE PROFILE myprofile_strongpw LIMIT
PASSWORD_COMPLEXITY_CHECKER TT_STRONG_VERIFY_FUNCTION;
Profile created.
Command> CREATE USER sampleuser_pwchange
IDENTIFIED BY "5&AbbN*60" PROFILE myprofile_strongpw;
User created.次に、myprofile_strongpwプロファイルを変更することで、PASSWORD_COMPLEXITY_CHECKERパスワード・パラメータの値をTT_STIG_VERIFY_FUNCTIONに変更します。ALTER USER文を使用して、sampleuser_pwchangeユーザーのパスワードを期限切れにします。sampleuser_pwchangeユーザーとしてデータベースに接続してみます。この接続は、パスワードの有効期限が切れているために失敗します。
Command> ALTER PROFILE myprofile_strongpw LIMIT
PASSWORD_COMPLEXITY_CHECKER TT_STIG_VERIFY_FUNCTION;
Profile altered.
Command> ALTER USER sampleuser_pwchange PASSWORD EXPIRE;
User altered.
Command> GRANT CONNECT TO sampleuser_pwchange;
Command> connect adding "UID=sampleuser_pwchange;PWD=5&AbbN*60" as sampleuser;
15180: the password has expired
The command failed.
ALTER USER文を使用して、sampleuser_pwchangeユーザーのパスワードを変更します。このパスワードはTT_STIG_VERIFY_FUNCTION関数の要件を満たしているため、ALTER USER文は成功します。sampleuser_pwchangeユーザーとしてデータベースに接続してみます。その接続に成功します。TT_STIG_VERIFY_FUNCTION関数の詳細は、「TT_STIG_VERIFY_FUNCTION」を参照してください。
access1: Command> ALTER USER sampleuser_pwchange
IDENTIFIED BY "bd@<!BCvvKASn67";
User altered.
Command> connect adding "UID=sampleuser_pwchange;PWD=bd@<!BCvvKASn67"
as sampleuser;
Connection successful: DSN=access1;UID=sampleuser_pwchange;
DataStore=/scratch/sampleuser/mydatabase1;DatabaseCharacterSet=AL32UTF8;
ConnectionCharacterSet=AL32UTF8;PermSize=128;
(Default setting AutoCommit=1)
ユーザーのプロファイルの変更
この例では、user1ユーザーを作成して、user1ユーザーにprofile1プロファイルを割り当てます。その次に、ALTER USER文を使用して、user1ユーザーのプロファイルをprofile2に変更します。
Command> CREATE USER user1 IDENTIFIED BY user1 PROFILE profile1; User created. Command> ALTER USER user1 PROFILE profile2; User altered.
dba_usersシステム・ビューを問い合せて、user1プロファイルがprofile2に変更されたことを確認します。
Command> SELECT profile FROM dba_users WHERE username = 'USER1'; < PROFILE2 > 1 row found.
ユーザーのアカウントのロックとロック解除
この例では、user2ユーザーを作成します。その次に、ALTER USER文を使用して、user2ユーザーのアカウントをロックしてからロックを解除します。
Command> CREATE USER user2 IDENTIFIED BY user2 PROFILE profile1; User created. Command> ALTER USER user2 ACCOUNT LOCK; User altered.
user2にCONNECT権限を付与します。
Command> GRANT CONNECT TO user2;
user2として、データベースに接続してみます。user2アカウントはロックされているため、接続に失敗します。
Command> connect adding "UID=user2;PWD=user2" as user2; 15179: the account is locked The command failed.
インスタンス管理者としてデータベースに再接続し、ALTER USER文を使用してuser2アカウントのロックを解除します。
none: Command> use database1 database1: Command> ALTER USER user2 ACCOUNT UNLOCK; User altered.
user2ユーザーとして、データベースに接続してみます。接続が成功します。
database1: Command> connect adding "UID=user2;PWD=user2" as user2; Connection successful: DSN=database1;UID=user3;DataStore=/scratch/database1; DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;PermSize=128; (Default setting AutoCommit=1)
ユーザーのパスワードの有効期限
この例では、ALTER USER文を使用して、user2ユーザーのアカウントを変更し、パスワードを期限切れにします。ADMIN権限を持つユーザーは、user2がデータベースに接続する前に、user2のパスワードを変更しておく必要があります。
Command> ALTER USER user2 PASSWORD EXPIRE; User altered.
user2として、データベースに接続してみます。user2ユーザーがデータベースに接続する前に、user2のパスワードを変更しておく必要があります。
Command> connect adding "UID=user2;PWD=user2" as user2; 15180: the password has expired The command failed.
インスタンス管理者としてデータベースに再接続し、ALTER USER文を使用してuser2のパスワードを変更します。
none: Command> use database1 database1: Command> ALTER USER user2 IDENTIFIED BY newuser2password; User altered.
user2ユーザーとして、データベースに接続してみます。接続が成功します。
database1: Command> connect adding "UID=user2;PWD=newuser2password" as user2; Connection successful: DSN=database1;UID=user4;DataStore=/scratch/database1; DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;PermSize=128; (Default setting AutoCommit=1)
ユーザーの外部から内部への変更と内部から外部への変更
この例では、ALTER USER文を使用して、user2内部ユーザーを外部ユーザーに変更してから、内部ユーザーに戻します。
Command> ALTER USER user2 IDENTIFIED EXTERNALLY; User altered.
ALTER USER文を使用して、user2外部ユーザーを内部ユーザーに戻します。
Command> ALTER USER user2 IDENTIFIED BY user2_password_change; User altered.