sql 2005 学习(2.3 对数据库访问进行授权)

本文介绍了SQL Server中如何创建和管理数据库用户,包括通过CREATE USER语句创建用户,使用目录视图sys.database_principals获取用户信息,以及管理孤立用户和启用Guest用户的方法。

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

对于需要进行数据访问的应用程序来说,仅仅为其授权访问SQL Server 实例是不够的。在授权访问SQL Server 实例之后,需要对特定的数据库进行访问授权。可以通过创建数据库用户并且将数据库登录名与数据库用户映射授权对数据库的访问。每一个登录名都在它要访问的数据库中映射了一个数据库用户。除了dbo数据库用户外,每一个数据库用户都映射了一个数据库登录名。

 注意     SQL Server的先前版本中,可以使用系统存储过程sp_addalias多个登录名映射到一个数据库用户。在SQL Server 2005中仍然可以这样。但应该避免使用,因为它是一种被认为是过时的功能,并且在未来的版本中可能会去除该功能。

数据库用户是数据库这一级的主体。所有数据库登录名,除了服务器角色sysadmin的成员,都要在自己要访问的数据库中与一个数据库用户建立映射。sysadmin角色的成员与所有服务器数据库上的dbo用户建立有映射。

2.4.1  创建数据库用户

可以使用CREATE USER语句创建数据库用户。以下Transact SQL示例创建了一个名为Peter的登录名并且将它与AdventureWorks数据库中的Peter用户进行了映射。

 

-- Create the login Peter

CREATE LOGIN Peter WITH PASSWORD='Tyu87IOR0';

-- Change the connection context to the database AdventureWorks.

USE AdventureWorks;

GO

-- Create the database user Peter,

-- mapped to the login Peter in the database AdventureWorks.

CREATE USER Peter FOR LOGIN Peter;     //建立用户与登陆名映射关系

2.4.2  管理数据库用户

可以通过执行以下语句来检查当前的登录名是否可以登录到某个数据库:

 

SELECT HAS_DBACCESS('AdventureWorks');

 

可以通过查询目录视图sys.database_principals来获取数据库用户的信息。

如果需要临时禁用某个数据库用户对数据库的访问,可以通过取消这个用户的CONNECT授权来实现。

以下示例将撤消用户PeterCONNECT授权:

 

-- Change the connection context to the database AdventureWorks.

USE AdventureWorks;

GO

-- Revoke connect permission from Peter

-- on the database AdventureWorks.

REVOKE CONNECT TO Peter;

 

可以使用DROP USER语句删除一个数据库用户。

* 警告  SQL Server 2005不允许删除一个拥有数据库架构的用户。

2.4.3  管理孤立用户

孤立用户指当前SQL Server实例中没有映射到登录名的数据库用户。在SQL Server 2005中,用户所映射的登录名被删除后,它就会变成孤立用户。为了获取孤立用户的信息,可以执行以下代码:

 

-- Change the connection context to the database AdventureWorks.

USE AdventureWorks;

GO

-- Report all orphaned database users

EXECUTE sp_change_users_login @Action='Report';

 

SQL Server 2005允许我们使用WITHOUT LOGIN子句来创建一个没有映射到登录名的用户。用WITHOUT LOGIN子句创建的用户不会被当作孤立用户。这个特性在需要改变一个模块的(执行上下文)时非常有用。本章后文将详细介绍执行上下文。以下代码将创建一个没有映射到登录名的用户Paul

 

-- Change the connection context to the database AdventureWorks.

USE AdventureWorks;

GO

-- Creates the database user Paul in the AdventureWorks database

-- without mapping it to any login in this SQL Server instance

CREATE USER Paul WITHOUT LOGIN;

2.4.4  启用Guest用户

一个没有映射到用户的登录名试图登录到数据库的时候,SQL Server将尝试使用Guest用户进行连接。Guest用户是一个默认创建的没有任何权限的用户。我们可以通过为Guest用户授权CONNECT权限以启用Guest用户,如下所示:

 

-- Change the connection context to the database AdventureWorks.

USE AdventureWorks;

GO

-- Grant Guest access to the AdventureWorks database.

GRANT CONNECT TO Guest;

 

在考虑是否启用Guest用户的时候一定要谨慎,因为这样会为数据库系统环境的安全带来隐患。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值