概要
ALTER USER コマンドを使用すると、ユーザのパスワードを変更できます。自分のパスワードはいつでも変更できます。別のユーザのパスワードを変更するには、以下のいずれかを持つユーザとしてログインする必要があります。
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)
例
以下の埋め込み 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
}