应用场景
针对oracle的使用,有一些常用的功能,在此做一个小小的总结。
操作步骤
1. 3个默认的帐户
sys change_on_install 网络管理员 [as sysdba]
system manage 本地管理员
scott tiger 超级用户
2. 创建用户、授权和撤消权限
登录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; //撤消对表空间操作的权限
3. 丢失管理员密码怎么办?
用sys用户进行修改
sqlplus / as sysdba
alter user scott Identified by tiger;
4. 角色管理
角色就是一个权限的集合。
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; 这个权限比较大,不能通过角色授权,只能授权给用户
5. 权限的传递
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;; //让王五也可以传递权限。
6. 系统权限与对象权限
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;
7. 帐户管理细节
三个常用的系统用户:
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;