[oracle] 系统权限管理

1 利用超级用户连接到数据库登录

sqlplus / as sysdba
or
slqplus SYS/SYSPWD as sysdba

这两个命令的效果是一样的,都是以sysdba的身份使得SYS管理员连接到数据库。前提是windows登录账户有管理oracle的权限

2 查看当前登录用户

SQL> show user;
USER 为 "SYS"

3 创建用户

SQL> create user lisi identifiled by lisi;
用户已创建。

创建用户并指定其表空间

create user lisi identified by lisi
default tablespace lisi temporary tablespace lisi_temp;

删除用户

//级联删除用户及其对象
drop user lisi cascade; 

锁定用户

alter user lisi account lock;

解锁用户

alter user lisi account unlock;

修改用户密码

alter user lisi indentifiled by newPwd;

新用户登录

//新用户登录被拒绝
C:Userssredcat>sqlplus lisi/lisi

SQL*Plus: Release 10.2.0.3.0 - Production on 星期一 12月 30 11:08:16 2013
Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

ERROR:用户没有登录权限
ORA-01045: user LISI lacks CREATE SESSION privilege; logon denied

由于缺乏 CREATE SESSION 的权限也就是登录的权限被拒绝登录,此时要赋予其登录的权限。

4 授予新用户权限

//授权
SQL> grant create session to lisi;
授权成功。

新用户再次登录成功

//登录新用户
C:Userssredcat>sqlplus lisi/lisi
SQL*Plus: Release 10.2.0.3.0 - Production on 星期一 12月 30 11:11:00 2013
Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

此时仅有登录权限,如需执行数据库操作还需要其他的权限

//授权其他权限
SQL> grant create table to lisi;
授权成功。

授予用户DBA的角色权限

GRANT DBA TO lisi; 

5 建表

SQL> create table mytable(id int);
create table mytable(id int)
*1 行出现错误:
ORA-01950: 对表空间 'USERS' 无权限

出现错误,此时需要取消表空间对新用户的限制

//使用表空间时没有任何限制
SQL> grant unlimited tablespace to lisi;
授权成功。

6 执行数据库操作

SQL> create table mytable(id int);
表已创建。

SQL> insert into mytable values(1);
已创建 1 行。

SQL> select * from mytable;
        ID
----------
         1

SQL> drop table mytable;
表已删除。

备注:当用户有创建表和使用空间的权限时,如果该用户创建了自己的表,那么该用户对自己的表就具有了增删改查的权限了。无需另外赋予其他的权限。

7 回收权限

SQL>  revoke create table from lisi;
撤销成功。

//此时再次创建表就会报错
SQL> create table mytable(id int);
create table mytable(id int)
*1 行出现错误:
ORA-01031: 权限不足

8 查看用户当前拥有的权限【视图:user_sys_privs】

SQL> select * from user_sys_privs;
USERNAME                       PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
LISI                           CREATE SESSION                           NO
LISI                           UNLIMITED TABLESPACE                     NO

SQL> grant create table to lisi;
授权成功。

SQL> select * from user_sys_privs;
USERNAME                       PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
LISI                           CREATE SESSION                           NO
LISI                           CREATE TABLE                             NO
LISI                           UNLIMITED TABLESPACE                     NO

备注:

① 所有权限的赋予和回收都是SYS/SYSTEM这种DBA角色来执行的,普通用户没有该权限。

② 应该遵循权限最小化的原则来为新用户分配权限。

一个分配大权限的例子:

GRANT CREATE USER,DROP USER,ALTER USER,CREATE ANY VIEW,DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字

③ 当遗忘数据库用户甚至是DBA的密码时,使用下面两种方法可以进入SQL修改其密码

//操作系统认证
sqlplus / as sysdba

 或者

// login without connect to server 
C:Userssredcat>sqlplus /nolog

//connect to server as sysdba for manage DB server
SQL> conn / as sysdba
已连接。
原文地址:https://www.cnblogs.com/avivaye/p/3497617.html