Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ALTER USER

ユーザのパスワードを変更します。

Synopsis

ALTER USER user-name IDENTIFY BY password

ALTER USER user-name IDENTIFIED BY password

引数

user-name 変更するパスワードを持っている既存のユーザの名前。区切り識別子のサポートが有効で、ユーザ名がアンダースコア (_) で始まる場合、ユーザ名を引用符で囲む必要があります。ユーザ名は、大文字と小文字が区別されません。
password ユーザの新しいパスワード。パスワードは少なくとも 3 文字必要で、32 文字を超えることはできません。パスワードは大文字と小文字が区別されます。パスワードには Unicode 文字を使用することができます。

概要

ALTER USER コマンドを使用すると、ユーザのパスワードを変更できます。自分のパスワードはいつでも変更できます。自分以外のユーザのパスワードを変更するには、%Admin_Secure:USE システム特権が必要です。

IDENTIFY BY キーワードと IDENTIFIED BY キーワードは同義語です。

user-name は既存のユーザである必要があります。存在しないユーザを指定すると、SQLCODE -400 エラーが発生し、%msg は "エラー #838: ユーザーの badname は存在しません" になります。

password には文字列リテラル、数値、または識別子を指定できます。文字列リテラルは引用符で囲む必要があり、空白スペースを含む文字の任意の組み合わせを使用できます。数値または識別子は引用符で囲む必要はありません。数値は 0 ~ 9 の文字のみで構成する必要があります。識別子は、文字 (大文字/小文字) あるいは % (パーセント記号) で始める必要があります。その後ろに、任意の文字、任意の数字、_ (アンダースコア)、& (アンパサンド)、$ (ドル記号)、@ (アットマーク) を自由に組み合わせて使用できます。

ALTER USER は、新しいパスワードが既存のものと同一でもエラー・コードを発行しません。この場合、SQLCODE = 0 (正常終了) として設定されます。

$SYSTEM.Security.ChangePassword()Opens in a new tab メソッドを使用して、ユーザ・パスワードを変更することもできます。

$SYSTEM.Security.ChangePassword(args)

特権

ALTER USER コマンドは特権を必要とする操作です。埋め込み SQL 内で ALTER USER を使用する前に、適切な特権を持つユーザとしてログインする必要があります。特権がない場合は、SQLCODE -99 エラー (特権違反) が返されます。$SYSTEM.Security.Login()Opens in a new tab メソッドを使用して、以下のようにユーザに適切な特権を割り当ててください。

   DO $SYSTEM.Security.Login("_SYSTEM","SYS")
   &sql(      )

$SYSTEM.Security.Login メソッドを呼び出すには、%Service_Login:Use 特権が必要です。詳細は、"インターシステムズ・クラス・リファレンス" の "%SYSTEM.SecurityOpens in a new tab" を参照してください。

以下の埋め込み SQL の例は、Bill というユーザのパスワードを “temp_pw” から “pw4AUser” に変更します。

Main
   DO $SYSTEM.Security.Login("_SYSTEM","SYS")
   &sql(CREATE USER Bill IDENTIFY BY temp_pw)
      IF SQLCODE=0 { WRITE !,"Created user" }
      ELSE { WRITE "CREATE USER error SQLCODE=",SQLCODE,! }
   &sql(ALTER USER BILL IDENTIFY BY pw4AUser)
      IF SQLCODE=0 { WRITE !,"Altered user password" }
      ELSE { WRITE "ALTER USER error SQLCODE=",SQLCODE,! }
Cleanup
   SET toggle=$RANDOM(2)
   IF toggle=0 { 
     &sql(DROP USER Bill)
      IF SQLCODE=0 { WRITE !,"Dropped user" }
      ELSE { WRITE "DROP USER error SQLCODE=",SQLCODE }
   }
   ELSE { 
     WRITE !,"No drop this time"
     QUIT 
   }

上述のように、区切り識別子へのサポートがあり、ユーザ名がアンダースコア (_) で始まる場合、以下のようにユーザ名を引用符で囲む必要があります。以下はその例です。

ALTER USER "_ADMIN" IDENTIFY BY myPW4now

関連項目

FeedbackOpens in a new tab