Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

ALTER USER (SQL)

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

Synopsis

ALTER USER user-name IDENTIFY BY password
ALTER USER user-name IDENTIFIED BY password

引数

引数 説明
user-name 変更するパスワードを持っている既存のユーザの名前。ユーザ名は、大文字と小文字が区別されません。
password ユーザの新しいパスワード。パスワードは少なくとも 3 文字必要で、32 文字を超えることはできません。パスワードは大文字と小文字が区別されます。パスワードには Unicode 文字を使用することができます。

概要

ALTER USER コマンドを使用すると、ユーザのパスワードを変更できます。自分のパスワードはいつでも変更できます。別のユーザのパスワードを変更するには、以下のいずれかを持つユーザとしてログインする必要があります。

  • USE 権限がある %Admin_Secure 管理リソース

  • USE 権限がある %Admin_UserEdit 管理リソース

  • システムに対する全面的なセキュリティ権限

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

user-name は既存のユーザでなければなりません。存在しないユーザを指定すると、SQLCODE -400 エラーが生成され、%msg は "エラー #838: ユーザ badname は存在しません" のようになります。$SYSTEM.SQL.Security.UserExists()Opens in a new tab メソッドを呼び出すことによって、ユーザが存在するかどうかを判別できます。

区切り識別子として指定された user-name には、SQL 予約語を使用することも、コンマ (,)、ピリオド (.)、キャレット (^)、および 2 文字の矢印シーケンス (->) を含めることもできます。この名前の先頭の文字には、アスタリスク (*) を除く任意の有効な文字を使用できます。

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

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

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

$SYSTEM.Security.ChangePassword(args)

特権

ALTER USER コマンドは特権を必要とする操作です。埋め込み SQL で ALTER USER を使用するには、USE 権限がある %Admin_Secure 管理リソース、USE 権限がある %Admin_UserEdit 管理リソース、またはシステムに対する全面的なセキュリティ特権を持つユーザとしてログインしておく必要があります。特権がない場合は、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 
   }

関連項目

FeedbackOpens in a new tab