12. 在sqlsever中 创建数据库db13,切换至db13数据库,在其中创建sch架构 创建login13登录账号,口令为123456,默认数据库为db13。创建user13数据库用户,其默认架构为sch。 使得以上user13数据库用户在连接db13数据库后可以创建t表。 验证user13用户对其所建t表并未拥有增删查改权限,要使得以上user13用户可以对t表执行增删查改。 要使得以上user13用户可以对t表添加一新列。创建ltian登录帐号,口令为tiantian,默认数据库为db13。使得ltian帐号登录服务器并连接db13数据库后,能够查询user13用户所建t表。使用合适的字典视图,查询以上两个登录帐号及其对应的数据库用户各自拥有的权限。验证对public数据库角色授予某个权限后,所有的数据库用户都会具备此权限。
时间: 2024-03-12 18:46:25 浏览: 18
以下是sql server中的命令行操作,可以按照需求进行修改:
1. 创建数据库db13:
```
CREATE DATABASE db13;
```
2. 切换至db13数据库:
```
USE db13;
```
3. 在db13中创建sch架构:
```
CREATE SCHEMA sch;
```
4. 创建login13登录账号,口令为123456,默认数据库为db13:
```
CREATE LOGIN login13 WITH PASSWORD = '123456', DEFAULT_DATABASE = db13;
```
5. 创建user13数据库用户,其默认架构为sch,并赋予其在sch架构下的CREATE TABLE权限,使得user13数据库用户在连接db13数据库后可以创建t表:
```
CREATE USER user13 FOR LOGIN login13 WITH DEFAULT_SCHEMA = sch;
GRANT CREATE TABLE ON SCHEMA::sch TO user13;
```
6. 验证user13用户对其所建t表并未拥有增删查改权限,要使得以上user13用户可以对t表执行增删查改:
```
--验证user13用户对其所建t表并未拥有增删查改权限
SELECT * FROM sys.database_permissions WHERE grantee_principal_name = 'user13';
--使得user13用户可以对t表执行增删查改
GRANT SELECT, INSERT, UPDATE, DELETE ON sch.t TO user13;
```
7. 要使得以上user13用户可以对t表添加一新列:
```
ALTER TABLE sch.t ADD new_column INT;
GRANT ALTER ON sch.t(new_column) TO user13;
```
8. 创建ltian登录帐号,口令为tiantian,默认数据库为db13:
```
CREATE LOGIN ltian WITH PASSWORD = 'tiantian', DEFAULT_DATABASE = db13;
```
9. 使得ltian帐号登录服务器并连接db13数据库后,能够查询user13用户所建t表:
```
CREATE USER ltian FOR LOGIN ltian;
GRANT SELECT ON sch.t TO ltian;
```
10. 使用合适的字典视图,查询以上两个登录帐号及其对应的数据库用户各自拥有的权限:
```
--查询login13登录账号及其对应的数据库用户权限
SELECT p.permission_name, p.state_desc, p.class_desc, OBJECT_NAME(p.major_id) AS object_name, USER_NAME(p.grantee_principal_id) AS grantee_user, USER_NAME(p.grantor_principal_id) AS grantor_user
FROM sys.database_permissions p
INNER JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
WHERE dp.name = 'login13';
--查询user13数据库用户权限
SELECT p.permission_name, p.state_desc, p.class_desc, OBJECT_NAME(p.major_id) AS object_name, USER_NAME(p.grantee_principal_id) AS grantee_user, USER_NAME(p.grantor_principal_id) AS grantor_user
FROM sys.database_permissions p
INNER JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
WHERE dp.name = 'user13';
--查询ltian登录账号及其对应的数据库用户权限
SELECT p.permission_name, p.state_desc, p.class_desc, OBJECT_NAME(p.major_id) AS object_name, USER_NAME(p.grantee_principal_id) AS grantee_user, USER_NAME(p.grantor_principal_id) AS grantor_user
FROM sys.database_permissions p
INNER JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
WHERE dp.name = 'ltian';
```
11. 验证对public数据库角色授予某个权限后,所有的数据库用户都会具备此权限:
```
--授予对sch.t表的SELECT权限给public角色
GRANT SELECT ON sch.t TO public;
--验证所有的数据库用户都具备此权限
SELECT * FROM sys.database_permissions WHERE grantee_principal_name = 'public' AND OBJECT_NAME(major_id) = 't';
```
以上是sql server中进行相关操作的命令行操作,您可以根据需要进行相应的修改。