ITPub博客

首页 > 数据库 > Oracle > ORACLE用户管理与权限设置

ORACLE用户管理与权限设置

原创 Oracle 作者:wzhalal 时间:2013-11-26 11:39:47 0 删除 编辑
创建用户:
CREATE USER user_name
IDENTIFIED BY password
[DEFAULT TABLESPACE tablespace_name] 
[TEMPORARY TABLESPACE tablespace_name]
[QUOTA ... ON tablespace_name]  --设置磁盘空间配额
[PASSWORD EXPIRE]--密码过期,用户登录时,提示用户改密码
[ACCOUNT LOCK|UNLOCK]--设置用户是否锁定

unlimited tablespace 权限,可以忽略磁盘空间配额
创建时,需要有管理员权限。

SQL> create user hh
 2  identified by abc;


刚创建的用户没有任何权限,也无法登录,这里为方便操作,给其先授权,让
其能登录。

SQL> grant create session to hh;

用户登录:
    1、在操作系统提示符下:
[oracle@t184 ~]$ sqlplus user_name/password 
如:
[oracle@t184 ~]$ sqlplus hh/abc
    2、在sqlplus环境下:
SQL> connect user_name/password
如:
SQL> connect hh/abc;

    注:对于SYS用户登录时要在末尾加AS SYSDBA,如:
SQL> connect sys/oracle as sysdba
[oracle@t184 ~]$ uniread sqlplus sys/oracle as sysdba

查看当前用户:
SQL> show user;
如果是空的话,表示当前没用户连接。


用户的认证方式:
    1、普通用户密码存放在数据库中。可采用密码认证和操作系统认证。
但操作系统认证比较麻烦,故很少使用。
所以普通一般采用密码认证,使用这种方式登录 
sqlplus user_name/password 

    2、SYSDBA 的密码不存放在数据库中,而放在密码文件中。
密码文件:$ORACLE_HOME/dbs/orapw+SID

SYS用户的认证方式也有:操作系统认证和密码文件认证,默认操作系
统认证是开启的。所以经常有 sqlplus "/as sysdba" (操作系统认证)
如果采用密码文件认证 sqlplus user_name/password as sysdba

可以尝试,取消操作系统认证
vim $ORACLE_HOME/network/admin/sqlnet.ora  添加一行
SQLNET.AUTHENTICATION_SERVICES=(NONE)

SYSDBA用户密码丢失的处理:
    方法一:开启操作系统认证
vim $ORACLE_HOME/network/admin/sqlnet.ora  添加一行(如有修改)
SQLNET.AUTHENTICATION_SERVICES=(ALL)

    方法二:重建密码文件
orapwd file=$ORACLE_HOME/dbs/orapwocp password=abcd entries=5

修改用户密码
    ALTER USER user_name IDENTIFIED BY password

SQL> alter user hh identified by oracle;

管理员用户可以修改其它用户密码,其他用户只能修改自己的。

给用户分配磁盘配额
ALTER USER user_name QUOTA ... ON tablespace_name

SQL> alter user hh quota 10m on users;

授权:
    ORACLE权限分为两种类型:系统权限和对象权限

授予系统权限:
GRANT 权限名 TO 用户名 [WITH ADMIN OPTION]

    权限名可以查看数据字典:system_privilege_map

SQL> GRANT CREATE TABLE TO HH ;

收回(取消)权限:
REVOKE 权限名 FROM 用户名

查看系统的用户权限:
    1、用户自己
SQL> select * from session_privs;

    2、管理员(dba_sys_privs)
SQL> select * from dba_sys_privs where grantee='HH';

对象权限管理
    对象权限:是对特定的对象所具有的权限,对象权限有:

对象权限 视图序列 过程
修改(alter) * *
删除(delete) *  *
执行(execute)  *
索引(index) *
插入(insert) *  *
关联(reference) *  *
选择(select) *  * *
更新(update) *  *

对象授权:
GRANT privs_name ON object_name TO user_name 
[WITH GRANT OPTION];

SQL> grant update on scott.emp to hh;

对象权限回收:
REVOKE privs_name ON object_name FROM user_name;
SQL> revoke update on scott.emp from hh;

注:对象权限的回收是级联的。


查看用户的对象权限(DBA_TAB_PRIVS):
    DBA查:

SQL> select GRANTEE,OWNER,TABLE_NAME,GRANTOR,PRIVILEGE 
from dba_tab_privs where grantee='HH';

    用户自己查:
SQL> select GRANTEE,OWNER,TABLE_NAME,GRANTOR,PRIVILEGE
 2  from user_tab_privs;

授予SYSDBA权限:
SQL> grant sysdba to h2;       
 
注:授予SYSDBA权限后,用户在登录时还要注意,如果不以as sysdba
   登录,仍然是普通用户,而非SYSDBA。

查看当前系统有哪些SYSDBA
SQL> SELECT * FROM V_$PWFILE_USERS;


角色
     权限的集合,主要是方便权限和管理与维护。

创建角色
CREATE ROLE role_name [IDENTIFIED BY password]

SQL> create role t1;

SQL> create role t2 identified by abcd;

为角色授权
GRANT priv_name TO role_name

SQL> grant create session to t1,t2;
SQL> grant create table to t1;
SQL> grant create view to t2;

将角色授予用户
SQL> grant t1,t2 to hh;

DBA用户查看用户权限:
    1、查看直接授权
SQL> select * from dba_sys_privs where grantee='HH';

    2、查看该用户授予哪些角色(DBA_ROLE_PRIVS)
SQL> SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='HH';

    3、查看角色有哪些权限(ROLE_SYS_PRIVS)
SQL> select * from role_sys_privs where role in ('T1','T2');

ORACLE 为了方便用户的使用提供了两个缺省角色:CONNECT,RESOURCE。
为了使用户更快的工作起来,可将这两个角色授予用户。但之后要仔细审核
其权限。

用户权限=单个授予+角色继承(角色授予)

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28894640/viewspace-1061105/,如需转载,请注明出处,否则将追究法律责任。

下一篇: PL SQL异常处理.
请登录后发表评论 登录
全部评论

注册时间:2013-06-06

  • 博文量
    60
  • 访问量
    249779