用户
系统默认的权限
数据字典名称 | 说 明 |
---|---|
DBA_USERS | 数据库用户基本信息表 |
DBA_SYS_PRIVS | 已授予用户或角色的系统权限 |
DBA_TAB_PRIVS | 数据库对象上的所有权限 |
USER_SYS_PRIVS | 登录用户可以查看自己的系统权限 |
ROLE_SYS_PRIVS | 登录用户查看自己的角色 |
ALL_TABLES | 用户自己可以查询的基表信息 |
USER_TAB_PRIVS | 用户自己将哪些基表权限授予哪些用户 |
ALL_TAB_PRIVS | 哪些用户给自己授权 |
角色对应的权限
角 色 名 | 包 含 权 限 |
---|---|
ALTER SESSION | |
CREATE CLUSTER | |
CREATE DATABASE LINK | |
CREATE SEQUENCE | |
CONNECT | CREATE SESSION |
CREATE SYNONYM | |
CREATE TABLE | |
CREATE VIEW | |
CREATE CLUSTER | |
CREATE INDEXTYPE | |
CREATE OPERATOR | |
CREATE PROCEDURE | |
RESOURCE | CREATE SEQUENCE |
CREATE TABLE | |
CREATE TRIGGER | |
CREATE TYPE | |
DBA | 所有权限,不受限制 |
SELECT ANY TABLE | |
BACKUP ANY TABLE | |
EXP_FULL_DATABASE | EXECUTE ANY PROCEDURE |
EXECUTE ANY TYPE | |
ADMINISTER RESOURCE MANAGER | |
IMP_FULL_DATABASE | EXECUTE_CATALOG_ROLE |
SELECT_CATALOG_ROLE |
常用的sql语句
- 查询所有用户
SELECT * from dba_users;
- 查询当前用户
select USERNAME from user_users;
- 查询当前用户的权限
select * from session_privs;
- 登录用户查看自己的角色
SELECT * FROM ROLE_SYS_PRIVS;
- 查询当前用户的所有表
select TABLE_NAME from all_tables where owner='SCOTT';
select count(*) from all_tables where owner='SCOTT';
创建用户
create user user_name identified by pass_word
[or identified exeternally]
[or identified globally as ‘CN=user’]
[default tablespace tablespace_default]
[temporary tablespace tablespace_temp]
[quota [integer k[m]] [unlimited] ] on tablesapce_ specify1
[,quota [integer k[m]] [unlimited] ] on tablesapce_ specify2
[,…]…on tablespace_specifyn
[profiles profile_name]
[account lock or account unlock]
- user_name:用户名,一般为字母数字型和“#”及“_”符号。
- pass_word:用户口令,一般为字母数字型和“#”及“_”符号。
- identified exeternally:表示用户名在操作系统下验证,这种情况下要求该用户必须与操作系统
中所定义的用户名相同。 - identified globally as ‘CN=user’:表示用户名由 Oracle 安全域中心服务器验证,CN 名字表示用
户的外部名。 - [default tablespace tablespace_default]:表示该用户在创建数据对象时使用的默认表空间。
- [temporary tablespace tablespace_temp]:表示该用户所使用的临时表空间。
- [quota [integer K[M]] [unlimited]] on tablespace_specify1:表示该用户在指定表空间中允许占用
的最大空间。 - [profiles profile_name]:资源文件的名称。
- [account lock or account unlock]:用户是否被加锁,默认情况下是不加锁的。
下面将通过若干具体的实例来演示如何创建数据库用户。
创建用户,并指定默认表空间和临时表空间
- 创建一个 mr 用户,口令为 mrsoft,并设置默认的表空间为 users,临时表空间为 temp的用户
create user mr identified by mrsoft
default tablespace users
temporary tablespace temp;
修改用户
- 修改用户 east 在表空间上的磁盘限额为 20MB(原始为 10MB,先增加 10MB)
alter user east quota 20m on tbsp_1;
- 修改用户 east 的新口令为 123456(原始为 mrsoft)
alter user east identified by 123456;
- 使用 alter user 命令解除被锁定的账户 SH
alter user SH account unlock;
修改用户名
- 查询对应的user# id
SELECT * FROM user$ u WHERE u.NAME='430TEMPO';
UPDATE USER$ SET NAME='430TEMPO'WHERE USER#=100;
COMMIT;
- 强制刷新
ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM FLUSH SHARED_POOL;
- 修改密码
ALTER USER 430TEMPO IDENTIFIED BY root;
删除用户
drop user user_name[cascade] --cascade:级联删除选项,如果用户包含数据库对象,则必须加 CASCADE 选项,此时连同该用户所拥有的对象一起删除。
- 使用 drop user 语句删除用户 df,并连同该用户所拥有的对象一起删除
drop user df cascade;
用户权限管理
-
语法
GRANT sys_privi | role to user | role | public [with admin option]
-
为用户 east 授予连接和开发系统权限
grant connect,resource to east;
-
回收系统权限
revoke sys_privi | role from user | role | PUBLIC
-
撤销 east 用户的 resource 系统权限
revoke resource from east;
-
对象授权
grant obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option]
-
obj_privi:表示对象的权限,可以是 ALTER、EXECUTE、SELECT、UPDATE 和 INSERT 等。
-
role:角色名。
-
user:被授权的用户名。
-
with admin option:表示被授权者可再将系统权限授予其他的用户。
-
with hierarchy option:在对象的子对象(在视图上再建立视图)上授权给用户。
-
给用户 xifang 授予 select、insert、delete 和 update 表 soctt.emp 的权限
grant select,insert,delete,update on scott.emp to xifang;
-
回收对象权限
revoke obj_privi | all on schema.object from user | role | public cascade constraints
-
obj_privi:表示对象的权限。
-
public:保留字,代表 Oracle 系统的所有权限。
-
cascade ascade constraints:表示有关联关系的权限也被回收。
-
从 xifang 用户回收 scott.emp 表的 update 和 delete 权限
revoke delete,update on scott.emp from xifang;