SQL语句——权限管理

SQL语句

授权

数据库对象的创建者通常具有与该对象相关的所有权限。创建者可以通过GRANT语句向其他用户授予操作该对象的某些权限。

GRANT格式如下:

GRANT <权限> [, <权限>]
[ON <对象类型> <对象名>]
TO <用户> [, <用户>]
[WITH GRANT OPTION][AS 用户]

其中,WITH GRANT OPTION 指定向接收权限的安全主体提供向其他安全账户授予制定权限的能力。

-- 给用户 Tom 和 Jhon 授予创建数据库和创建表的权限
GRANT CREATE DATABASE, CREATE TABLE
TO Tom, Jhon

回收权限

指收回指定用户对某个数据库对象的某种权限。回收操作可以由数据库管理员或其他授权者用REVOKE语句回收。

REVOKE格式如下:

REVOKE [GRANT OPTION FOR] <权限> [, <权限>]
[ON <对象类型> <对象名>]
FROM <用户> [, <用户>]
[CASCADE] [AS 用户]

其中,CASCADE选项是指示当前正在撤销的权限也将从其他被主体授权的主体中撤销。使用CASCADE参数时,还必须同时指定 GRANT OPTION FOR 参数,表示对授予 WITH GRANT OPTION 权限的权限执行联级撤销。

-- 将Tom和Jhon创建数据库和创建表的权限回收
REVOKE CREATE DATABASE, CREATE TABLE
FROM Tom, Jhon

拒权

拒权是指拒绝为指定用户对某个数据库对象使用某种权限。防止该主体通过组或角色成员身份继承权限。用DENY语句。

DENY格式如下:

DENY <权限> [, <权限>]
[ON <对象类型> <对象名>]
TO <用户> [, <用户>]

样例:

-- 拒绝让Tom和Jhon用户创建数据库和创建表的权限
DENY CREATE DATABASE, CREATE TABLE
TO Tom, Jhon
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 数据的定义 创建一个包含以下字段的表格: - id (主键,自增长) - name (字符串,长度不超过20个字符) - age (整数,范围在18到60之间) - gender (字符串,只能是"Male"或"Female") - email (字符串,符合电子邮件格式) - phone (字符串,符合电话号码格式) 用以下 SQL 语句创建数据表格: ``` CREATE TABLE UserInfo ( id INT IDENTITY(1,1) PRIMARY KEY, name VARCHAR(20) NOT NULL, age INT CHECK (age BETWEEN 18 AND 60), gender VARCHAR(6) CHECK (gender IN ('Male', 'Female')), email VARCHAR(50) UNIQUE NOT NULL, phone VARCHAR(20) NOT NULL ) ``` 2. 数据的操作 插入数据: ``` INSERT INTO UserInfo (name, age, gender, email, phone) VALUES ('John', 25, 'Male', 'john@example.com', '123-456-7890') ``` 更新数据: ``` UPDATE UserInfo SET age = 30 WHERE name = 'John' ``` 删除数据: ``` DELETE FROM UserInfo WHERE id = 1 ``` 查询数据: ``` SELECT * FROM UserInfo WHERE gender = 'Female' AND age > 20 ``` 3. 安全性与完整性控制 创建两个用户,一个管理员用户和一个普通用户: ``` CREATE LOGIN admin WITH PASSWORD = 'password'; CREATE LOGIN user WITH PASSWORD = 'password'; ``` 为管理员用户创建数据库用户,并且将其分配为 db_owner 角色: ``` CREATE USER admin FOR LOGIN admin; EXEC sp_addrolemember 'db_owner', 'admin'; ``` 为普通用户创建数据库用户,并且将其分配为 db_datareader 和 db_datawriter 角色: ``` CREATE USER user FOR LOGIN user; EXEC sp_addrolemember 'db_datareader', 'user'; EXEC sp_addrolemember 'db_datawriter', 'user'; ``` 为数据表格 UserInfo 添加实体完整性约束,确保 name、email 和 phone 字段的非空性: ``` ALTER TABLE UserInfo ADD CONSTRAINT CK_UserInfo_Name CHECK (name IS NOT NULL); ALTER TABLE UserInfo ALTER COLUMN email VARCHAR(50) NOT NULL; ALTER TABLE UserInfo ALTER COLUMN phone VARCHAR(20) NOT NULL; ``` 为数据表格 UserInfo 添加参照完整性约束,确保 gender 字段只能是 'Male' 或 'Female': ``` ALTER TABLE UserInfo ADD CONSTRAINT FK_UserInfo_Gender CHECK (gender IN ('Male', 'Female')); ``` 4. 自主存取控制权限 为管理员用户授予 SELECT、INSERT、UPDATE 和 DELETE 数据表格 UserInfo 的权限: ``` GRANT SELECT, INSERT, UPDATE, DELETE ON UserInfo TO admin; ``` 为普通用户授予 SELECT 数据表格 UserInfo 的权限: ``` GRANT SELECT ON UserInfo TO user; ``` 撤销普通用户对数据表格 UserInfo 的 SELECT 权限: ``` REVOKE SELECT

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值