- 连接用户:connect 用户名/密码;
- 创建用户:create user 用户名 identified by 密码;
- 授权:grant 权限 to 用户名;
注意:系统权限只能由DBA用户授出,普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。
查询用户拥有的权限:
1.查看所有用户:
select
*
from
dba_users;
select
*
from
all_users;
select
*
from
user_users;
2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
select
*
from
dba_sys_privs;
select
*
from
user_sys_privs;
3.查看角色(只能查看登陆用户拥有的角色)所包含的权限
sql>
select
*
from
role_sys_privs;
4.查看用户对象权限:
select
*
from
dba_tab_privs;
select
*
from
all_tab_privs;
select
*
from
user_tab_privs;
5.查看所有角色:
select
*
from
dba_roles;
6.查看用户或角色所拥有的角色:
select
*
from
dba_role_privs;
select
*
from
user_role_privs;
7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select
*
from
V$PWFILE_USERS
比如我要查看用户 wzsb的拥有的权限:
SQL>
select
*
from
dba_sys_privs
where
grantee=
‘WZSB‘
;
GRANTEE PRIVILEGE ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
WZSB
CREATE
TRIGGER
NO
WZSB UNLIMITED TABLESPACE
NO
比如我要查看用户 wzsb的拥有的角色:
SQL>
select
*
from
dba_role_privs
where
grantee=
‘WZSB‘
;
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
WZSB DBA
NO
YES
查看一个用户所有的权限及角色
select
privilege
from
dba_sys_privs
where
grantee=
‘WZSB‘
union
select
privilege
from
dba_sys_privs
where
grantee
in
(
select
granted_role
from
dba_role_privs
where
grantee=
‘WZSB‘
);
3.1 oracle权限分类:
系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。
3.2 系统权限:
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
3.3 实体权限:
- 实体权限的授命令
语法如下:GRANT 实体权限名|ALL TO 用户|角色|PUBLIC,其中,ALL表示实体的所有实体权限。
如:SQL>GRANT SELECT ON BOOKS_QUTHORS TO USER1; - 用来查询表的实体权限的授权信息:SQL>SELECT * FROM USER_TAB_PRIVES
- 回收实体权限,使用REVOKE,其语法如下:
REVOKE 实体权限名|ALL ON 实体名 FROM 用户名|角色名|PUBLIC。
权限传递:
grant select on xiaoming.temp to xiaohong ;//登录xiaoming后,将小明的temp表的查询权限授给xiaohong;