文章
姚 鑫 · 九月 1, 2021 阅读大约需 3 分钟

第三章 SQL命令 ALTER USER

第三章 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 BYIDENTIFIED BY关键字是同义词。

user-name必须是已存在的用户。
指定一个不存在的用户将生成一个带有%msgSQLCODE -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 
    }
}
0
0 28
讨论 (0)1
登录或注册以继续