一、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;
--删除表空间 直接删除表空间以及相应的数据文件
drop tablespace wangwu_db01 including contents and datafiles
--创建用户拥有表空间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;
--授权用户wangwu对表空间的权限
ALTER USER wangwu QUOTA UNLIMITED ON WANGWU_DB01;
或者
ALTER USER your_user_name QUOTA 100M ON WANGWU_DB01;
--wangwu账户远程登录或者本地需要授权create session权限,否则无法登录
GRANT CREATE SESSION to wangwu;
--授权用户创建表和删除表的系统权限
GRANT CREATE ANY TABLE to wangwu;
GRANT DROP ANY TABLE TO wangwu;
-- 收回权限
revoke DROP ANY TABLE from wangwu;
--当前用户wangwu的表级别权限
select * from user_sys_privs;
--删除用户以及用户下的数据,一般禁止删除操作,都是收回用户权限就行
drop user wangwu cascade;
二、普通用户创建测试表数据
[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;
--查看当前用户下所有的表
SELECT table_name FROM user_tables;
select * from test01;
select * from wangwu.test01;
提示:此时 登录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>
**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;
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
对表写数据:
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>
对表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权限
[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.
3.4 登录wangwu账户查看 数据已经写入
[oracle@oracle ~]$ sqlplus wangwu/pass123321
select * from wangwu.test01 where employee_id=3;
select * from test01 where employee_id=3;
四、查看当前用户的系统权限和表级权限 [oracle@oracle admin]$ sqlplus wangwu/pass123321
--当前登录用户
SQL> show user;
USER is "WANGWU"
--当前用户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权限再赋予给其他用户
--当前用户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>
64f6a547-8c2a-48a4-abd5-9b7218ee532a