第三章 SQL命令 ALTER USER
修改用户密码。
大纲
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
必须是已存在的用户。
指定一个不存在的用户将生成一个带有%msg
的SQLCODE -400
错误,如下所示:ERROR #838: User badname does not exist
。可以通过调用$SYSTEM.SQL.Security.UserExists()
方法来确定用户是否存在。
作为分隔标识符指定的用户名可以是SQL
保留字,可以包含逗号(,
)、句号(.
)、插入符号(^
)和两个字符的箭头序列(->
)。
它可以以除星号(*
)以外的任何有效字符开头。
密码可以是字符串字面值、数字或标识符。
字符串字面值必须用引号括起来,并且可以包含任何字符组合,包括空格。
数字或标识符不需要用引号括起来。
数字只能由字符0到9组成。
标识符必须以字母(大写或小写)或%
(百分号)开头;
后面可以是字母、数字或以下任何符号的组合:_
(下划线)、&
(和号)、$
(美元符号)或@
(@符号)。
如果新密码与现有密码相同,则ALTER USER
不会发出错误代码。
它设置SQLCODE = 0
(成功完成)。
可以使用$SYSTEM.Security.ChangePassword()
方法修改用户密码:
$SYSTEM.Security.ChangePassword(args)
权限
ALTER USER
命令是特权操作。在嵌入式SQL中使用ALTER USER
之前,必须以具有适当权限的用户身份登录。否则将导致SQLCODE-99
错误(特权冲突)。使用$SYSTEM.Security.Login()
方法分配具有适当权限的用户:
DO $SYSTEM.Security.Login("_SYSTEM","SYS")
&sql( )
必须具有%Service_Login:Use
权限才能调用$SYSTEM.Security.Login
方法。
示例
下面的嵌入式SQL示例将用户yaoxin
的密码从"temp_pw"
修改为" 8888888"
:
ClassMethod AlterUser()
{
Main
d $SYSTEM.Security.Login("_SYSTEM","SYS")
&sql(
CREATE USER yaoxin IDENTIFY BY temp_pw
)
if SQLCODE=0 {
w !,"创建用户"
} else {
w "创建用户错误SQLCODE=",SQLCODE,!
}
&sql(
ALTER USER BILL IDENTIFY BY 8888888
)
if SQLCODE=0 {
w !,"修改用户密码"
} else {
w "修改用户错误SQLCODE=",SQLCODE,!
}
q
Cleanup
s toggle = $RANDOM(2)
if toggle = 0 {
&sql(
DROP USER Bill
)
if SQLCODE = 0 {
w !,"删除用户"
} else {
w "删除用户错误SQLCODE=",SQLCODE
}
} else {
w !,"无删除!"
q
}
}