使用grant语句,使角色R1拥有Student表得select、update、insert权限
时间: 2023-11-12 17:03:38 浏览: 153
假设R1是已经创建的角色,Student是数据库中的表,可以使用以下grant语句为R1赋予相应的权限:
```
GRANT SELECT, UPDATE, INSERT ON Student TO R1;
```
这条语句会将SELECT、UPDATE、INSERT权限授予R1角色,使其可以对Student表进行查询、更新和插入操作。
相关问题
创建用户zs,密码123456, 创建角色R1,并分配权限如下:student表的select、insert;sc表的delete、update(grade) 给用户zs分配角色R1 验证zs权限 回收zs在sc表的update(grade)权限 验证zs权限
好的,您的问题是如何在数据库中创建用户、角色、分配权限、验证权限和回收权限。以下是基于Oracle数据库的解答:
1. 创建用户zs,密码123456:
```sql
CREATE USER zs IDENTIFIED BY 123456;
```
2. 创建角色R1:
```sql
CREATE ROLE R1;
```
3. 分配权限:
```sql
GRANT SELECT, INSERT ON student TO R1;
GRANT DELETE, UPDATE(grade) ON sc TO R1;
```
4. 给用户zs分配角色R1:
```sql
GRANT R1 TO zs;
```
5. 验证zs权限:
```sql
-- 验证student表的select权限
SELECT * FROM student;
-- 验证student表的insert权限
INSERT INTO student VALUES (1, 'John', 'Doe');
-- 验证sc表的delete权限
DELETE FROM sc WHERE student_id = 1 AND course_id = 1;
-- 验证sc表的update(grade)权限
UPDATE sc SET grade = 80 WHERE student_id = 1 AND course_id = 1;
```
6. 回收zs在sc表的update(grade)权限:
```sql
REVOKE UPDATE(grade) ON sc FROM zs;
```
7. 验证zs权限:
```sql
-- 验证student表的select权限
SELECT * FROM student;
-- 验证student表的insert权限
INSERT INTO student VALUES (1, 'John', 'Doe');
-- 验证sc表的delete权限
DELETE FROM sc WHERE student_id = 1 AND course_id = 1;
-- 验证sc表的update(grade)权限
UPDATE sc SET grade = 80 WHERE student_id = 1 AND course_id = 1; -- 这条语句会报错,因为权限已经被回收了。
```
希望这样的解答能够帮到您。
在SQL server中创建用户zs,密码123456, 创建角色R1,并分配权限如下:student表的select、insert;sc表的delete、update(grade) 给用户zs分配角色R1 验证zs权限 回收zs在sc表的update(grade)权限 验证zs权限
好的,我会逐步回答你的问题。
首先,我们可以使用以下 SQL 命令在 SQL Server 中创建用户 zs,密码为 123456:
```
CREATE LOGIN zs WITH PASSWORD = '123456';
```
接下来,我们可以使用以下 SQL 命令创建角色 R1,并在其中授予相应的权限:
```
CREATE ROLE R1;
GRANT SELECT, INSERT ON student TO R1;
GRANT DELETE, UPDATE(grade) ON sc TO R1;
```
然后,我们可以使用以下 SQL 命令将用户 zs 分配到角色 R1 中:
```
EXEC sp_addrolemember 'R1', 'zs';
```
接下来,我们可以验证用户 zs 是否具有相应的权限。我们可以使用以下 SQL 命令查询用户 zs 在 student 表和 sc 表上的权限:
```
SELECT HAS_PERMS_BY_NAME('student', 'OBJECT', 'SELECT') AS student_select,
HAS_PERMS_BY_NAME('student', 'OBJECT', 'INSERT') AS student_insert,
HAS_PERMS_BY_NAME('sc', 'OBJECT', 'DELETE') AS sc_delete,
HAS_PERMS_BY_NAME('sc', 'OBJECT', 'UPDATE', 'grade') AS sc_update_grade
FOR LOGIN zs;
```
执行上述查询后,可以看到用户 zs 具有相应的权限。
如果我们需要回收用户 zs 在 sc 表上的 update(grade) 权限,可以使用以下 SQL 命令:
```
REVOKE UPDATE(grade) ON sc FROM zs;
```
最后,我们可以再次验证用户 zs 是否还具有在 sc 表上的 update(grade) 权限。我们可以使用上述查询语句再次查询一次。
阅读全文