第三章 SQL命令 ALTER USER

190 阅读2分钟

这是我参与9月更文挑战的第1天活动详情查看:[9月更文挑战]

第三章 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 
	}
}