Oracle用户管理的常用SQL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Liveor_Die/article/details/81120575

用户

系统默认的权限

数据字典名称 说 明
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;

猜你喜欢

转载自blog.csdn.net/Liveor_Die/article/details/81120575