SQL 用户权限与对象访问

SQL 用户权限与对象访问学习笔记

在 Oracle 数据库中,用户权限和对象访问是数据库安全管理的重要部分。

1. 创建用户

语法:

1
CREATE USER 用户名 IDENTIFIED BY 密码;

示例:

1
2
-- 创建用户 li
CREATE USER li IDENTIFIED BY li;

2. 创建序列和表

(1)创建序列

1
2
-- 创建序列
CREATE SEQUENCE abc;

(2)创建表

1
2
-- 创建表 B
CREATE TABLE B (id INT);

3. 访问其他用户的表

在 Oracle 中,用户可以通过权限访问其他用户的表。

(1)查询其他用户的表

1
2
3
4
5
6
7
8
-- 查询 scott 用户的 emp 表
SELECT * FROM scott.emp;

-- 查询 scott 用户的 dept 表
SELECT * FROM scott.dept;

-- 查询 scott 用户的 salgrade 表
SELECT * FROM scott.salgrade;

(2)插入数据到其他用户的表

1
2
-- 插入数据到 scott 用户的 dept 表
INSERT INTO scott.dept VALUES (50, '教师', '北京');

4. 权限管理

权限分为系统权限和对象权限。

(1)系统权限

  • 定义:系统权限是用户对数据库的整体操作权限(如创建表、创建用户等)。
  • 查询系统权限
    1
    SELECT * FROM USER_SYS_PRIVS;

(2)对象权限

  • 定义:对象权限是用户对特定数据库对象(如表、视图等)的操作权限(如查询、插入、更新等)。
  • 查询对象权限
    1
    SELECT * FROM USER_TAB_PRIVS;

5. 综合示例

(1)创建用户并授予权限

1
2
3
4
5
6
7
8
9
10
11
-- 创建用户 li
CREATE USER li IDENTIFIED BY li;

-- 授予用户 li 连接数据库的权限
GRANT CONNECT TO li;

-- 授予用户 li 创建表的权限
GRANT CREATE TABLE TO li;

-- 授予用户 li 查询 scott 用户 emp 表的权限
GRANT SELECT ON scott.emp TO li;

(2)查询权限

1
2
3
4
5
-- 查询当前用户的系统权限
SELECT * FROM USER_SYS_PRIVS;

-- 查询当前用户的对象权限
SELECT * FROM USER_TAB_PRIVS;

(3)访问其他用户的表

1
2
3
4
5
-- 以用户 li 的身份登录后,查询 scott 用户的 emp 表
SELECT * FROM scott.emp;

-- 插入数据到 scott 用户的 dept 表
INSERT INTO scott.dept VALUES (60, '学生', '上海');

6. 总结

  1. 创建用户:使用 CREATE USER 语句创建用户。
  2. 创建序列和表:使用 CREATE SEQUENCECREATE TABLE 语句创建序列和表。
  3. 访问其他用户的表:通过权限访问其他用户的表。
  4. 权限管理:查询系统权限和对象权限。

SQL 用户权限与对象访问
https://blog.pangcy.cn/2018/09/28/数据库相关/Oracle/SQL 语法/SQL 用户权限与对象访问/
作者
子洋
发布于
2018年9月28日
许可协议