创建用户:
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。
为了使用户更快的工作起来,可将这两个角色授予用户。但之后要仔细审核
其权限。
用户权限=单个授予+角色继承(角色授予)
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。
为了使用户更快的工作起来,可将这两个角色授予用户。但之后要仔细审核
其权限。
用户权限=单个授予+角色继承(角色授予)