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:\Users\sredcat>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:\Users\sredcat>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:\Users\sredcat>sqlplus /nolog //connect to server as sysdba for manage DB server SQL> conn / as sysdba 已连接。