如何创建自定义SQL Server数据库角色

如何创建自定义SQL Server数据库角色,第1张

◆没有适用的 Microsoft Windows NT�0�3 4.0 或 Windows�0�3 2000 组。

◆没有管理 Windows NT 4.0 或 Windows 2000 用户帐户的权限。

说明 请避免角色的深层嵌套以免影响性能。

例如,一个公司可能成立慈善活动委员会,其中包括来自不同部门,来自组织中各种不同级别的职员。这些职员需要访问数据库中特殊的项目表。没有只包括这些职员的现有 Windows NT 4.0 或 Windows 2000 组,而且没有其它理由在 Windows NT 4.0 或 Windows 2000 中创建这样一个组。可以为此项目创建一个自定义 SQL Server 数据库角色 CharityEvent,并将个别的 Windows NT 和 Windows 2000 用户添加到此数据库角色。当应用权限后,数据库角色中的用户便获得对表的访问权限。其它数据库活动的权限不受影响,只有 CharityEvent 用户可以使用该项目表。

SQL Server 角色存在于一个数据库中,不能跨多个数据库。

使用数据库角色的好处包括:

◆对于任何用户,都可以随时让多个数据库角色处于活动状态。

◆如果所有用户、组和角色都在当前数据库中,则 SQL Server 角色可以包含 Windows NT 4.0 或 Windows 2000 组和用户,以及 SQL Server 用户和其它角色。

◆在同一数据库中,一个用户可属于多个角色。

◆提供了可伸缩模型以便在数据库中设置正确的安全级别。

说明 数据库角色要么在创建角色时由明确指定为所有者的用户所拥有,要么在未指定所有者时为创建角色的用户所拥有。角色的所有者决定可以在角色中添加或删除谁。

创建数据命令:

1

create database database_name

创建表:

1

create table table_name (id int primary key,name varchar(30))

这个问题别人已经问过,且我已经回答了,你可以参考一下:

sybase数据库的用户,包含两个层面:一个是登陆号,另一个是具体DB的用户,我们登陆时,使用的是登录号,但是这个登录号可以 *** 作哪些DB及 *** 作权限则取决于数据库用户。一般情况下,我们可以采取相同的名字来表示登录号和数据库用户。

首先创建一个登陆号:

sp_addlogin loginame, passwd

loginame 登录名

passwd 密码

全部语法(一般不用到)为:

sp_addlogin loginame, passwd [, defdb]

[, deflanguage ] [, fullname ] [, passwdexp ]

[, minpwdlen ] [, maxfailedlogins ]

然后创建用户:

sp_adduser loginame

这样创建当前数据库的用户,且用户名和登陆名是一样的。

全部语法为:

[dbname..]sp_adduser loginame [, username[, grpname]]

最后分配权限:

grant all | select,insert,delete,update

on table_name | view_name | stored_procedure_name

to username

grant all | create database,create

default,create procedure,create rule,create table,create view,set proxy,set session authorization

to username

例,假如当前DB为:DB001:

sp_addlogin 'test001','password001'

go

sp_adduser 'test001', 'user001'

go

grant create table to user001

go

创建了一个test001的登录名,之后为之创建一个当前数据库的用户,使这个登录名可以 *** 作当前数据库。之后分配了创建表的权限给user001。

这个时候你就可以使用用户名'test001'和密码'password001'登陆了,并且可以在DB001中创建表了。同时由于sp_adduser 的时候没有指定grpname参数,那么默认是public用户组,这个组里的用户默认即开通了select/delete/update/insert的权限。

如果你希望去掉一些权限,请使用revoke命令,其语法了grant完全相同,你只需要将grant换成revoke即可,例:

revoke select on address to user001

禁止user001查看address表。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9565335.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存