SQL Server账号public权限
在SQL Server中,public是一个预定义的数据库角色,它是一个特殊的角色,所有数据库用户都是自动成为public角色的成员。public角色具有一定的权限,这些权限将自动继承给数据库中的所有用户。本文将介绍SQL Server账号public权限的使用和示例。
什么是public角色
public是SQL Server中的一个预定义数据库角色,它是默认创建的角色之一。public角色是一个特殊的角色,所有数据库用户都是自动成为public角色的成员,无法从public角色中删除用户。
public角色的权限
public角色具有一定的权限,这些权限将自动继承给数据库中的所有用户。public角色的权限包括但不限于以下内容:
- 对所有用户可见的系统表和视图的SELECT权限。
- 对所有用户可见的内置函数和存储过程的EXECUTE权限。
- 对所有用户可见的系统函数的EXECUTE权限。
- 对数据库中的所有对象的EXECUTE权限(需要满足对象所在模式的访问控制规则)。
需要注意的是,public角色的权限是只读的,即无法对数据库中的任何对象进行修改、删除或添加操作。
示例
接下来我们通过一个示例来演示public角色的使用。
- 首先,我们创建一个数据库并在其中创建一个表:
CREATE DATABASE TestDB;
GO
USE TestDB;
GO
CREATE TABLE Customers (
CustomerId int PRIMARY KEY,
CustomerName varchar(50)
);
GO
- 接下来,我们创建两个数据库账号:
CREATE LOGIN User1 WITH PASSWORD = 'password1';
GO
CREATE LOGIN User2 WITH PASSWORD = 'password2';
GO
- 将这两个账号映射到数据库中的用户,并将它们添加到public角色:
USE TestDB;
GO
CREATE USER User1 FOR LOGIN User1;
GO
CREATE USER User2 FOR LOGIN User2;
GO
ALTER ROLE public ADD MEMBER User1;
GO
ALTER ROLE public ADD MEMBER User2;
GO
- 现在,我们可以使用这两个账号登录数据库,并尝试访问表的数据:
-- 使用User1账号登录
USE TestDB;
GO
EXECUTE AS LOGIN = 'User1';
GO
SELECT * FROM Customers;
GO
REVERT;
GO
-- 使用User2账号登录
USE TestDB;
GO
EXECUTE AS LOGIN = 'User2';
GO
SELECT * FROM Customers;
GO
REVERT;
GO
通过以上代码,我们可以看到无论使用哪个账号登录数据库,都可以访问到表Customers的数据。这是因为这两个账号都是public角色的成员,继承了public角色的权限。
总结
在SQL Server中,public角色是一个特殊的角色,所有数据库用户都是自动成为public角色的成员。public角色具有一定的权限,这些权限将自动继承给数据库中的所有用户。在实际应用中,我们需要注意public角色的权限是只读的,无法对数据库中的任何对象进行修改、删除或添加操作。
通过本文的介绍和示例,相信读者对SQL Server账号public权限有了更深入的了解和理解。希望本文能够对你在实际应用中的工作有所帮助。
journey
title SQL Server账号public权限
section 创建数据库
创建数据库 -> 创建表: CREATE TABLE
section 创建账号
创建表 -> 创建账号: CREATE LOGIN
创建账号 -> 映射用户: CREATE USER
section 添加到public角色
映射用户 -> 添加到public角色: ALTER ROLE public ADD MEMBER
section 访问数据
添加到public角色 -> 访问数据: SELECT * FROM Customers
sequenceDiagram
participant User1
participant User2
participant SQL Server
User1->>SQL Server: 使用User1账号登录
SQL Server->>User1: 验证账号
User1->>SQL Server: SELECT * FROM Customers
SQL Server->>User1: 返回数据
User2->>SQL Server: 使用User2账号登录
SQL Server->>User2: 验证账号
User2->>SQL