zoukankan      html  css  js  c++  java
  • SQLServer之创建用户定义的数据库角色

    创建用户定义的数据库角色注意事项

    角色是数据库级别的安全对象。 在创建角色后,可以使用 grant、deny 和revoke来配置角色的数据库级权限。 若要向数据库角色添加成员,请使用alter role(Transact-SQL)。 

    在 sys.database_role_members 和 sys.database_principals 目录视图中可以查看数据库角色。

    有关设计权限系统的信息,请参阅 Getting Started with Database Engine Permissions。

    要求对数据库具有create role权限或者在 db_securityadmin固定数据库角色中具有成员身份。 

    使用authorization选项时,还需要具有下列权限:

    • 若要将角色的所有权分配给另一个用户,则需要对该用户具有impersonate权限。

    • 若要将角色的所有权分配给另一个角色,则需要具有被分配角色的成员身份或对该角色具有alter权限。

    • 若要将角色的所有权分配给应用程序角色,则需要对该应用程序角色具有alter权限。

    使用SSMS数据库管理工具创建用户定义的数据库角色

    1、登陆服务器-》在对象资源管理器选择数据库-》展开数据库-》展开安全性-》展开数据库角色-》右键点击数据库角色-》点击新建数据库角色。

    2、在数据库角色-新建弹出框-》输入角色名称-》点击角色拥有者。

    3、在选择数据库用户或角色弹出框-》修改对象类型或者不修改-》点击浏览。

    4、在查找对象-》选择匹配的对象-》点击确定。

    5、在选择数据库用户或角色弹出框-》点击确定。

    6、在数据角色-新建-》选择此角色拥有的架构,可多选。

    7、在数据角色-新建-》选择此角色的成员-》点击添加。

    8、在选择数据库用户或角色弹出框-》更改对象类型,可使用系统默认-》点击浏览选择对象名称。

    9、在查找对象弹出框-》选增匹配的对象,可多选-》选择完成以后点击确定。

    10、在选择数据库用户或角色弹出框-》点击确定。

    11、在数据库角色-新建-》点击安全对象,选择安全对象并且赋予权限。

    12、在数据库角色-新建弹出框-》点击搜索选择安全对象。

    13、在添加对象弹出框-》选择对象(本示例演示特定数据库对象)-》点击确定。

    14、在选择对象弹出框-》首先选择对象。

    15、在选择对象类型-》选择对象(本示例演示数据库级别的对象)-》点击确定。

    16、在选择对象弹出框-》选择浏览。

    17、在查找对象弹出框-》选择数据库对象-》点击确定。

    18、在选择对象弹出框-》点击确定。

    19、在数据库角色-新建-》选择新建角色拥有数据库权限。

    20、在新建角色-新建弹窗框-》点击扩展属性-》输入新建角色名称和值-》点击确定。

    21、查看创建结果。

    使用T-SQL脚本创建用户定义的数据库角色

    语法:

    --声明数据库引用
    use 数据库名;
    go
    
    --创建用新的数据库角色之前判断角色是否已存在,如果已存在则删除。
    if exists(select * from sys.database_principals where name=role_name)
    --此角色的成员删除成员
    use 数据库名
    go
    alter role role_name drop member owner_name
    go
    
    --删除角色注释
    use 数据库名
    go
    exec sys.sp_dropextendedproperty @name=扩展属性名称,@level0type=N'user',@level0name=role_name
    go
    
    --删除此角色
    drop role role_name; 
    go
    
    --当前数据库中创建新的数据库角色
    create role role_name
    --角色拥有者
    authorization owner_name;

    语法解析:

    --role_name
    --待创建角色的名称。
    --authorization owner_name
    --将拥有新角色的数据库用户或角色。如果未指定用户,则执行create role的用户将拥有该角色。

    示例:

    --声明数据库引用
    use [testss];
    go
    
    --创建用新的数据库角色之前判断角色是否已存在,如果已存在则删除。
    if exists(select * from sys.database_principals where name='testrole')
    --此角色的成员删除成员
    use [testss]
    go
    alter role [testrole] drop member [guest]
    go
    
    --删除角色注释
    use [testss]
    go
    exec sys.sp_dropextendedproperty @name=N'roledescript',@level0type=N'user',@level0name=N'testrole'
    go
    
    --删除此角色
    drop role testrole; 
    go
    
    --当前数据库中创建新的数据库角色
    create role testrole 
    --角色拥有者
    authorization dbo;
    
    --role_name
    --待创建角色的名称。
    --authorization owner_name
    --将拥有新角色的数据库用户或角色。如果未指定用户,则执行create role的用户将拥有该角色。
    
    --创建此角色拥有的架构
    use [testss]
    go
    alter authorization on schema::[db_accessadmin] to testrole;
    go
    use [testss]
    go
    alter authorization on schema::[db_accessadmin] to [db_accessadmin]
    go
    
    ----此角色的成员
    ----添加成员
    --use [testss]
    --go
    --alter role testrole add member [guest];
    --go
    
    --此角色的安全对象
    use [testss]
    go
    grant backup log to testrole with grant option;
    go
    
    --添加此角色注释
    use [testss]
    go
    exec sys.sp_addextendedproperty @name=N'roledescript', @value=N'新建测试角色' , @level0type=N'user',@level0name=N'testrole';
    go

    示例结果:

  • 相关阅读:
    02、Linux下sshd以及openssl的知识点
    01_1、光盘上CentOS 安装程序启动过程
    01_2、GRUB(Boot Loader)
    1.在CentOS 6.4安装python3
    02.python基础知识_02
    01.python基础知识_01
    python_opencv应用系列1:图片读写
    Python for else 循环控制
    python中print后面加逗号
    Python中def的用法
  • 原文地址:https://www.cnblogs.com/vuenote/p/10181933.html
Copyright © 2011-2022 走看看