在SQL Server 2005中,有以下几个概念需要区分:
- 登录(Login)
- 数据库用户(User)
- 数据库角色(Role)
- 应用程序角色(Application Role)
- 登录是在使用混合验证模式时候,登录到SQL Server的用户。使用语句如下:
CREATE LOGIN Mary
WITH PASSWORD = ' asdflk ' MUST_CHANGE,
CHECK_EXPIRATION = ON ,
CHECK_POLICY = ON ;
可以使用如下的语句查看登录名:
select * from sys.sql_logins
以下是一些授权语句:
-- 在服务器角色中增加登录名
EXECUTE sp_addsrvrolemember ' Mary ' , ' sysadmin ' ;
-- 从服务器角色中删除掉登录名
EXECUTE sp_dropsrvrolemember ' Mary ' , ' sysadmin ' ;
-- 单独授予权限
GRANT ALTER TRACE TO Mary; - 数据库用户和角色:单单可以让用户登录到数据库是不够的,我们需要对这些登录进行更加细致的权限的控制,这里使用了数据库用户和角色的方法。
这里使用了RBAC(基于角色的权限控制),将权限赋予到角色身上,在将用户赋予角色,从而减少了维护权限结构的工作量。
创建用户并联系到登录
CREATE LOGIN Peter WITH PASSWORD = ' asdf ' ;
USE DBNAME;
GO
CREATE USER Peter FOR LOGIN Peter;
授权操作:
-- 增加用户到角色
EXECUTE sp_addrolemember ' Auditors ' , ' Peter ' ;
-- 检查是否是角色
SELECT IS_MEMBER ( ' db_owner ' )
-- 去掉用户
EXECUTE sp_droprolemember ' Auditors ' , ‘Peter’;
-- 小权限粒度的授予
GRANT BACKUP DATABASE TO Peter - 应用程序角色
应用程序角色权限是特殊的数据库劫色,用户允许用户通过特定应用程序获取特定的数据。
以下是一些代码:
USE DBNAME
GO
CREATE APPLICATION ROLE FinancialRole
WITH PASSWORD = ' ASDF '