oracle11g之数据库权限知识

一、Oracle中SYS、SYSTEM、DBSNMP、SYSMAN用户区别

SYS用户:
SYS,默认密码为CHANGE_ON_INSTALL,当创建一个数据库时,SYS用户将被默认创建并授予DBA角色,所有数据库数据字典中的基本表和视图都存储在名为SYS的方案中,这些基本表和视图对于Oracle数据库的操作时非常重要的。为了维护数据字典的真实性,SYS方案中的表只能由系统来维护,他们不能被任何用户或数据库管理员修改,而且任何用户不能在SYS方案中创建表。
SYSTEM用户:
SYSTEM,默认密码为MANAGER,与SYS一样,在创建Oracle数据库时,SYSTEM用户被默认创建并被授予DBA角色,用于创建显示管理信息的表或视图,以及被各种Oracle数据库应用和工具使用的内容表或视图。
DBSNMP用户:
DBSNMP是Oracle数据库中用于智能代理(Intelligent Agent)的用户,用来监控和管理数据库相关性能的用户,如果停止该用户,则无法提取相关的数据信息;
SYSMAN用户:
SYSMAN是Oracle数据库中用于EM管理的用户,如果你不用该用户,也可以删除。

sys和system用户的区别
【system】用户只能用normal身份登陆em。
【sys】用户具有“SYSDBA”或者“SYSOPER”权限,登陆em也只能用这两个身份,不能用normal。 “SYSOPER”权限,即数据库操作员权限,权限包括:打开数据库服务器 关闭数据库服务器 备份数据库 恢复数据库 日志归档 会话限制
“SYSDBA”权限,即数据库管理员权限,权限包括: 打开数据库服务器 关闭数据库服务器 备份数据库 恢复数据库 日志归档 会话限制 管理功能 创建数据库
normal 、sysdba、 sysoper有什么区别

normal 是普通用户
另外两个,你考察他们所具有的权限就知道了 sysdba拥有最高的系统权限
sysoper主要用来启动、关闭数据库,sysoper 登陆后用户是 public sysdba登陆后是 sys

平时一般使用system用户远程登陆到数据库做操作
二、超管员创建测试表空间和创建测试用户

采用sys或者system等管理员创建

–创建测试表空间:

create tablespace wangwu_db01 datafile ‘/u01/oracle/tools/oracle11g/oradata/wangwu_db01’ size 10m autoextend on;

1.
2.

–删除表空间 直接删除表空间以及相应的数据文件

drop tablespace wangwu_db01 including contents and datafiles

1.
2.

–创建用户拥有表空间wangwu_db01权限

create user wangwu identified by pass123321 default tablespace wangwu_db01 quota 3m on users;

上面的sql等同下面的sql
create user wangwu identified by pass123321 default tablespace wangwu_db01;
ALTER USER wangwu QUOTA 3M ON users;

1.
2.
3.
4.
5.
6.

–授权用户wangwu对表空间的权限

ALTER USER wangwu QUOTA UNLIMITED ON WANGWU_DB01;
或者
ALTER USER your_user_name QUOTA 100M ON WANGWU_DB01;

1.
2.
3.
4.

–wangwu账户远程登录或者本地需要授权create session权限,否则无法登录

GRANT CREATE SESSION to wangwu;

1.
2.

–授权用户创建表和删除表的系统权限

GRANT CREATE ANY TABLE to wangwu;
GRANT DROP ANY TABLE TO wangwu;

1.
2.
3.

– 收回权限

revoke DROP ANY TABLE from wangwu;

1.
2.

–当前用户wangwu的表级别权限

select * from user_sys_privs;

1.
2.

–删除用户以及用户下的数据,一般禁止删除操作,都是收回用户权限就行

drop user wangwu cascade;

1.
2.

二、普通用户创建测试表数据

[oracle@oracle oradata]$ sqlplus wangwu/pass123321

CREATE TABLE test01 (
employee_id NUMBER PRIMARY KEY,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
hire_date DATE,
salary NUMBER
);
INSERT INTO test01(employee_id, first_name, last_name, hire_date, salary)VALUES (1, ‘wangwu01’, ‘Doe’, ‘01-Jan-2021’, 001);
INSERT INTO test01(employee_id, first_name, last_name, hire_date, salary)VALUES (2, ‘wangwu02’, ‘Doe’, ‘01-Jan-2021’, 002);
commit;
create table test02(id number,name varchar2(255));
insert into test02 values(1,‘wangwu01’);
insert into test02 values(2,‘wangwu02’);
commit;

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.

–查看当前用户下所有的表

SELECT table_name FROM user_tables;

select * from test01;
select * from wangwu.test01;

1.
2.
3.
4.
5.

提示:此时 登录wangwu账户 可以对刚才新建的表做任何操作
三、超级管理员权限

3.1 超管员管理普通用户以及数据
–超级管理员账户登陆查看wangwu账户创建的test01表和数据,同时超级管理员可以对wangwu账户创建的表test01进行任何操作

[oracle@oracle etc]$ sqlplus / as sysdba
SQL> select * from wangwu.test01;

EMPLOYEE_ID FIRST_NAME


LAST_NAME HIRE_DATE SALARY


      1 wangwu01

Doe 01-JAN-21 1

      2 wangwu02

Doe 01-JAN-21 2

SQL>

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.

**3.2 超管员授权wangwu创建的表test01读写权限给zhangsan **

[oracle@oracle ~]$ sqlplus / as sysdba

create user zhangsan identified by pass123321 ;
GRANT CREATE SESSION to zhangsan;
GRANT INSERT, UPDATE, select on wangwu.test01 TO zhangsan;
–收回权限 revoke UPDATE, DELETE on test01 from zhangsan;

1.
2.
3.
4.
5.
6.
7.
8.

3.3 登录zhangsan账户查看对表test01的权限然后给表wangwu.test01插入数据

[oracle@oracle ~]$ sqlplus zhangsan/pass123321
select * from user_tab_privs where TABLE_NAME=‘TEST01’;

SQL> set line 300
SQL> select * from user_tab_privs where TABLE_NAME=TEST01;

GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE


ZHANGSAN WANGWU TEST01 WANGWU UPDATE NO NO
ZHANGSAN WANGWU TEST01 WANGWU SELECT NO NO
ZHANGSAN WANGWU TEST01 WANGWU INSERT NO NO

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.

对表写数据:

INSERT INTO wangwu.test01(employee_id, first_name, last_name, hire_date, salary)VALUES (3, ‘wangwu03’, ‘Doe’, ‘01-Jan-2021’, 003);
commit;
SQL> set line 300
SQL> select * from wangwu.test01 where employee_id=3;

EMPLOYEE_ID FIRST_NAME LAST_NAME HIRE_DATE SALARY


      3 wangwu03                                           Doe                                                01-JAN-21                   3

SQL>

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

对表delete一条记录:

SQL> delete from wangwu.test01 where EMPLOYEE_ID=3;
delete from wangwu.test01 where EMPLOYEE_ID=3
*
ERROR at line 1:
ORA-01031: insufficient privileges

提示没权限,因为没给zhansan账户授权对表test01的delete权限

1.
2.
3.
4.
5.
6.
7.
8.
9.

[oracle@oracle ~]$ sqlplus / as sysdba
SQL> GRANT delete on wangwu.test01 TO zhangsan;

[oracle@oracle ~]$ sqlplus zhangsan/pass123321
SQL> select * from user_tab_privs where TABLE_NAME=‘TEST01’ and PRIVILEGE=‘DELETE’;

GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE


ZHANGSAN WANGWU TEST01 WANGWU DELETE NO NO
##再次删除数据 提示成功
SQL> delete from wangwu.test01 where EMPLOYEE_ID=3;

1 row deleted.

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.

3.4 登录wangwu账户查看 数据已经写入

[oracle@oracle ~]$ sqlplus wangwu/pass123321
select * from wangwu.test01 where employee_id=3;
select * from test01 where employee_id=3;

1.
2.
3.

四、查看当前用户的系统权限和表级权限
[oracle@oracle admin]$ sqlplus wangwu/pass123321

–当前登录用户

SQL> show user;
USER is “WANGWU”

1.
2.
3.

–当前用户wangwu的系统权限

SQL> select * from user_sys_privs;

USERNAME PRIVILEGE ADM


WANGWU CREATE SESSION NO
WANGWU CREATE ANY TABLE NO
WANGWU DROP ANY TABLE NO

SQL>

其中表user_sys_privs字段ADM的意思是: 表示该用户是否可以把具有的系统权限赋予给其他用户
如果ADM字段的值为“YES”,则表示该用户可以把具有的系统权限赋予给其他用户;如果值为“NO”,则表示该用户不能把具有的系统权限赋予给其他用户‌
在Oracle数据库中,系统权限的传递是通过在授权时使用WITH ADMIN OPTION来实现的。
当用户在授权时加上WITH ADMIN OPTION,被授权的用户就可以把系统权限再赋予给其他用户。
例如使用以下SQL语句授权:GRANT ALTER ANY TABLE TO PUBLIC WITH ADMIN OPTION;这样,被授权的PUBLIC用户就可以把ALTER ANY TABLE权限再赋予给其他用户‌

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.

–当前用户wangwu的表级别权限

SQL> select * from user_tab_privs;

GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE


WANGWU SYS TEST01 SYS DELETE NO NO
WANGWU SYS TEST01 SYS INSERT NO NO
WANGWU SYS TEST01 SYS SELECT NO NO
WANGWU SYS TEST01 SYS UPDATE NO NO

SQL>


猜你喜欢

转载自blog.csdn.net/qq_22201881/article/details/143078992