前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL命令 CREATE ROLE

SQL命令 CREATE ROLE

作者头像
用户7741497
发布2022-04-14 15:19:55
6050
发布2022-04-14 15:19:55
举报
文章被收录于专栏:hml_知识记录

SQL命令 CREATE ROLE

创建角色

大纲

代码语言:javascript
复制
CREATE ROLE role-name

参数

  • role-name - 要创建的角色的名称,它是一个标识符。角色名称不区分大小写。

描述

CREATE ROLE命令可创建角色。角色是可以分配给多个用户的一组命名权限。一个角色可以分配给多个用户,一个用户可以分配多个角色。角色在系统范围内可用,它不限于特定的命名空间。

角色名可以是最多64个字符的任何有效标识符。角色名称必须遵循标识符命名约定。角色名称可以包含Unicode字符。角色名称不区分大小写。如果选中了支持分隔标识符配置选项(默认设置),则角色名可以是用引号括起来的分隔标识符。如果是分隔标识符,则角色名可以是SQL保留字。它可以包含句点(.)、插入符号(^)和两个字符的箭头序列(->)。它不能包含逗号()或冒号()字符。它可以以除星号(*)以外的任何有效字符开头。

最初创建角色时,角色只是一个名称;它没有权限。要向角色添加权限,请使用GRANT命令。还可以使用GRANT命令为角色分配一个或多个角色。这允许创建角色层次结构。

如果调用CREATE ROLE来创建已经存在的角色,SQL会发出SQLCODE-118错误。可以通过调用$SYSTEM.SQL.Security.RoleExists()方法确定角色是否已存在:

代码语言:javascript
复制
  WRITE $SYSTEM.SQL.Security.RoleExists("%All"),!
  WRITE $SYSTEM.SQL.Security.RoleExists("Madmen")

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

要删除角色,请使用DROP ROLE命令。

权限

CREATE ROLE命令是特权操作。在嵌入式SQL中使用CREATE ROLE之前,需要以具有%Admin_Secure:USE权限的用户身份登录。否则将导致SQLCODE-99错误(特权冲突)。使用$SYSTEM.Security.Login()方法分配具有适当权限的用户:

代码语言:javascript
复制
   DO $SYSTEM.Security.Login(username,password)
   &sql(      )

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

示例

以下示例尝试创建名为BkUser的角色。第一个示例中的用户“fred”没有创建角色权限。第二个示例中的用户“_system”确实拥有CREATE ROLE权限。

代码语言:javascript
复制
ClassMethod CreateRole()
{
    d $SYSTEM.Security.Login("yao","YaoPassword")
    &sql(
        CREATE ROLE BkUser
    )
    if SQLCODE = -99 {
        w !,"没有创建角色的权限" 
    } elseif SQLCODE = -118 {
        w !,"角色已经存在" 
    } else {
        w !,"创建了一个角色。错误代码是: ",SQLCODE 
    }
}
代码语言:javascript
复制
ClassMethod CreateRole1()
{
    d $SYSTEM.Security.Login("_SYSTEM","SYS")
Main
    &sql(
        CREATE ROLE BkUser
    )
    if SQLCODE = -99 {
        w !,"没有创建角色的权限" 
    } elseif SQLCODE = -118 {
        w !,"角色已经存在" 
    } else {
        w !,"创建了一个角色。错误代码是: ",SQLCODE 
    }
Cleanup
    s toggle = $RANDOM(2)
    if toggle = 0 { 
        &sql(
            DROP ROLE BkUser
        )
        w !,"删除角色错误代码: ",SQLCODE
    } else { 
        w !,"未删除"
        q 
    }
}

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SQL命令 CREATE ROLE
  • 大纲
  • 参数
  • 描述
  • 权限
  • 示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档