3个默认的帐户: sys change_on_install 网络管理员 [as sysdba] system manage 本地管理员 scott tiger 超级用户
创建用户、授权和撤消权限 登录oracle: sqlplus / as sysdba 启动监听: lsnrctl start 启动数据库的实例: oradim -startup -sid orcl SQL> show user; //显示当前用户 SQL> create user lisi identified by lisi; //创建一个用户 SQL> grant create session to lisi; //给用户授予会话权限 SQL> sqlplus lisi/lisi //用创建的用户进行登录 SQL> grant unlimited tablespace to lisi //给用户授予表空间权限 SQL> grant create table to lisi; //给用户创建表的权限 SQL> create table mytable (id int); //创建表 SQL> insert into mytable values (1); //插入数据 SQL> select * from mytable; //查询数据 SQL> drop table mytable //删除表 SQL> revoke create table from lisi; //撤消对表操作的权限 SQL> select * from user_sys_privs; //查询当前用户拥有哪些权限 SQL>revoke unlimited tablespace from lisi; //撤消对表空间操作的权限 丢失管理员密码怎么办? 用sys用户进行修改 sqlplus / as sysdba alter user scott Identified by tiger; oracle 9 更改口令文件 把原有口令文件删掉 E:\oracle\ora92\database\pwdora9i.ora; orapwd file=E:\oracle\ora92\database\pwdora9i.ora password=sys entries=10; select * from v$pwfile_users; oracle 10+ 更改口令文件 把原有口令文件删掉 E:\oracle\ora92\database\PWDorcl.ora; orapwd file=E:\oracle\ora92\database\PWDorcl.ora password=sys entries=10; select * from v$pwfile_users; 角色管理 角色就是一个权限的集合。 show user; 显示当前用户 create role myrole; 创建一个角色 grant create session to myrloe; 给角色授予session权限 grant create table to myrole; 给角色授予表操作权限 create user zhangsan identified by zhangesan; 创建一个用户 grant myrole to zhangsan; 把角色授予给用户 sqlplus zhangsan/zhangsan 用户登录 drop role myrole; 删除角色 grant unlimited tablespace to myrole; 这个权限比较大,不能通过角色授权,只能授权给用户 权限的传递
show user: 查看当前用户 select * from user_sys_privs 查看当前用户的系统权限 grant alter any table to lisi; sys可以授权给李四 grant alter any table to wangwu; 但是李四不能授权给王五 grant alter any table to lisi with admin option; //现在李四可以授权给王五了 grant alter any table to wangwu with admin option; //让王五也可以传递权限 create table A(id int); //在sys中创建一个表A grant select On A to lisi; //把表操作权限传递给李四,但李四不能传递权限 grant select On A to lisi with grant option; //现在李四可以传递权限了 grant select on sys.A to wangwu with grant option;; //让王五也可以传递权限。 系统权限与对象权限 SQL> create user wanwu identified by wangwu SQL> grant create session to wangwu; SQL> sqlplus wangwu/wangwu SQL> grant create table,unlimited tablespace to wangwu; SQL> create table mytab(id int); SQL> insert into mytab values(2); 用lisi访问wangwu 的表,不能访问 SQL> select * from wangwu.mytab; 用sys用户访问wangwu 的表,可以,要执行两次 SQL> select * from wangwu.mytab; SQL> select * from wangwu.mytab; 让lisi可以访问wangwu的表 SQL> grant select on mytab to lisi; //把查询权限授予李四 SQL> grant insert on mytab to lisi; //把插入权限授予李四 SQL> commit; //提交后才显示数据 SQL> grant all on mytab ot lisi; // 把操作表的最大权限授予李四 SQL> revoke all on mytab from lisi; // 撤消李四对表操作的权限 SQL> disconn SQL> conn wangwu/wangwu SQL> commit: //每次对表操作后要提交 SQL> alter table mytab add name varchar(50); SQL> insert into mytab values(1,'zhang'); SQL> insert into mytab values(2,'li'); SQL> insert into mytab values(3,'wang'); SQL> commit; SQL> grant update(name) on mytab to lisi; //让李四只有更新name列的权限 SQL> grant insert(id) on mytab to lisi; //让李四只有插入id列的权限 SQL> update wangwu.mytab set name='lihuoming' where id=1; 帐户管理细节 1.三个常用的系统用户: scott(一个数据库的普通用户) conn scott/tiger manager(数据库管理员) conn system/manager sys(数据库对象的拥有者权限最高) conn sys/change_on _install as sysdba 创建用户的完整格式: create user 用户名 identified by 密码 default tableSpace 表空间 Temporary TableSpace 表空间 Quota 整数[ K | M | Limited | unlimited ] on 表空间 例子: create user abc identified by 123 default tablespace Users Temporary tablespace Temp Quota 50M on Users 限制用户: 用户加锁 -- alter user 用户名 account lock 用户解锁 -- alter user 用户名 account unlock 用户口令即刻失效 -- alter user 用户名 password expire 删除用户: drop user 用户名 [CasCade] CasCade表示删除用户所有对象 示例: drop user abc cascade;