第二十三章 SQL命令 CREATE USER

本文详细介绍了 SQL 中的 CREATEUSER 命令,包括如何创建用户账户及其参数设置。文章还提供了示例代码,展示了如何在实际应用中使用此命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

第二十三章 SQL命令 CREATE USER

创建用户帐户。

大纲

CREATE USER user-name IDENTIFY BY password

CREATE USER user-name IDENTIFIED BY password

参数

  • user-name - 要创建的用户的名称。名称是最多128个字符的标识符。它可以包含Unicode字母。用户名不区分大小写。
  • password - 此用户的密码。密码必须至少为3个字符,并且不能超过32个字符。密码区分大小写。密码可以包含Unicode字符。

描述

CREATE USER命令使用指定的密码创建用户帐户。

用户名可以是最多160个字符的任何有效标识符。用户名必须遵循标识符命名约定。用户名可以包含Unicode字符。用户名不区分大小写。

作为分隔标识符指定的用户名可以是SQL保留字,可以包含逗号()、句号(.)、插入符号(^)和两个字符的箭头序列(->)。
它可以以除星号(*)以外的任何有效字符开头。

IDENTIFY BYIDENTIFIED BY关键字是同义词。

密码可以是数字文字、标识符或带引号的字符串。数字文字或标识符不必用引号括起来。带引号的字符串通常用于在密码中包含空格;带引号的密码可以包含除引号字符本身之外的任何字符组合。数字文字只能由09字符组成。标识符必须以字母(大写或小写)或%(百分号)开头;后面可以是字母、数字或以下任何符号的任意组合:_(下划线)。

密码区分大小写。密码长度必须至少为三个字符,且少于33个字符。指定过长或过短的密码都会生成SQLCODE-400错误,%msg值为“Error#845:Password is not Match Length or Pattern Requirements(错误#845:密码与长度或模式要求不匹配)”。

不能使用主机变量指定用户名或密码值。

创建用户不会创建任何角色,也不会向用户授予任何角色。相反,用户将被授予对其正在登录的数据库的权限,如果用户在命名空间中至少拥有一个SQL权限,则将被授予对%SQL/Service服务的使用权限。要为用户分配权限或角色,请使用GRANT命令。要创建角色,请使用CREATE ROLE命令。

如果调用CREATE USER来创建已经存在的用户,SQL会发出SQLCODE-118错误,并显示%msg值“名为‘name’的用户已存在”。可以通过调用$SYSTEM.SQL.Security.UserExists()方法来确定用户是否已经存在:

  WRITE $SYSTEM.SQL.Security.UserExists("Admin"),!
  WRITE $SYSTEM.SQL.Security.UserExists("BertieWooster")

如果指定的用户存在,则此方法返回1,如果该用户不存在,则返回0。用户名不区分大小写。

权限

CREATE USER命令是特权操作。在嵌入式SQL中使用CREATE USER之前,必须以具有适当权限的用户身份登录。否则将导致SQLCODE-99错误(特权冲突)。

使用$SYSTEM.Security.Login()方法分配具有适当权限的用户:

   DO $SYSTEM.Security.Login("_SYSTEM","SYS")
   &sql( /* SQL code here */  )

必须具有%Service_Login:Use权限才能调用$SYSTEM.Security.Login方法。

示例

下面的嵌入式SQL示例创建名为“BillTest”、密码为“Carl4SHK”的新用户。(提供了$Random切换,以便您可以重复执行此示例程序。)

ClassMethod CreateUser()
{
	d $SYSTEM.Security.Login("_SYSTEM","SYS")
	s x = $SYSTEM.SQL.UserExists("BillTest")
	if x = 0 {
		&sql(
			CREATE USER BillTest IDENTIFY BY Carl4SHK
		)
		if SQLCODE '= 0 {
			w "创建用户错误: ",SQLCODE,!
	        q
		}
	}
	w "用户BillTest存在",!

	s toggle = $RANDOM(2)
	if toggle = 0 { 
		&sql(DROP USER BillTest)
		if SQLCODE '= 0 {
			w "创建用户错误: ",SQLCODE,!
	        q
		}
	} else {
		w !,"没有创建。",!
	}
	w "用户BillTest存在? ", $SYSTEM.SQL.UserExists("BillTest"),!
	q
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yaoxin521123

谢谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值