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}];

パラメータ

パラメータ 説明

user

変更するユーザーの名前。

IDENTIFIED BY password|"password"

内部ユーザーと、その内部ユーザーのパスワードを指定します。

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

IDENTIFIED EXTERNALLY

ユーザーが外部ユーザーであることを指定します。

PROFILE profile

PROFILE句を使用して、ユーザーに割り当てるプロファイルの名前を指定します(profileで指定)。このプロファイルによって、ユーザーのパスワード・パラメータの制限が設定されます。各パスワード・パラメータの詳細は、「CREATE PROFILE」を参照してください。外部ユーザーに対してPROFILE句を指定できますが、パスワード・パラメータは外部ユーザーに影響しません。

ACCOUNT [LOCK|UNLOCK]

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

PASSWORD EXPIRE

PASSWORD EXPIREは、ユーザーのパスワードを期限切れにする場合に指定します。この設定により、ADMIN権限を持つユーザーは、データベースに接続する前にパスワードを変更するように強制されます。この句は、外部で識別されるユーザー(IDENTIFIED EXTERNALLY句で示される)には無効です。

説明

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

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

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

  • パスワードの要件:
    • 30文字を超えることはできません。
    • 大文字と小文字が区別されます。
    • 先頭に文字を使用する必要があります。パスワードを二重引用符で囲まないかぎり、パスワードの先頭を数字または特殊文字にすることはできません。
    • 特殊文字を使用する場合は、パスワードを二重引用符で囲む必要があります。例外は、#@の特殊文字です。#または@の特殊文字を含むパスワードは、二重引用符で囲む必要がありません。
    • セミコロン(;)や二重引用符(")を含めることはできません。
  • PROFILE句は、ユーザーのプロファイルを変更する場合に使用します。詳細は、「CREATE PROFILE」を参照してください。

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

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

  • 接続が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.
 

user2CONNECT権限を付与します。

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.