服务启动:监听和实例
三个默认用户:
sys 网络管理员 【as sysdba】
system 普通本地管理元
scott tiger 普通用户 默认锁定了 使用时要解锁
创建用户
一般管理员来创建 所以管理员身份登录先
lsnrctl start 启动监听
oradim -starup -sid orcl启动实例
sqlplus / as sysdba 创建用户 (sys用户)
show user;
sql> create user lisi identified by lisi
用户已经创建
sql>grant create session to lisi;创建会话的权限给lisi,否则lisi登录不上去
sqlplus lisi/lisi
登录成功
管理员分配一个创建表的权限给李四
sql>grant create table to lisi;
创建表空间(存放数据的逻辑单位)此时可以创建表 但是没有使用空间的权限
sql>grant unlimited tablespace to lisi;(无限制使用表空间)
当一个用户有创建表的权限 那么这个表就是当前用户的
这个用户就可对这个表增删改查操作。
撤销权限
revoke create table from lisi;
oracle 有提供信息的视图(数据字典)通过这方式可以看到当前用户拥有哪些系统权限
select * from user_sys_privs;
revoke unlimited tablespace from lisi;
对象权限:我有表,他能不能访问呢?这就是对象权限
sys:
create user wangwu identified by wangwu;
grant create session to wangwu;
grant create table , unlimited tablespace to wangwu;(王武可以创建表)
select * from wangwu.mytab;sys访问wangwu的mytab表(wangwu insert数据要commit才能保存)sys权限是最大的
把权限授予所有用户 public
lisi:
lisi 访问 wangwu的表
默认自己的表
select * from wangwu:
sqlplus wangwu/wangwu
现在让lisi可以访问wangwu 的mytab表:
grant select on mytab to lisi;(给lisi一个查询的权限)
grant insert on mytab to lisi;(给lisi一个插入的权限)
grant all on mytab to lisi;(把这张表所有权限授予lisi)
当然还有 revoke撤销权限
对于系统权限 由sys授予
对于对象权限 谁拥有谁授权
同过当前用户看到对象权限
在当前用户下:
select * from user_sys_privs;
disconn断一次连接
conn wangwu重新连接一次
alter table mytab add name varchar(10);
insert into mytab values(1,‘zhang’)
commit;
把权限控制到列上去(插入 更新)
拥有更新某一列的权限
grant update(name)on mytab to lisi;授予李四更新name列的权限
grant insert(id) on mytab to lisi;授予李四插入id列的权限
update wangwu.myutab set name='lihuoming' ,where id=1;
insert into mytab(id) values(4);
commit;
对象权限可以控制到列
grant update
grant insert
select * from user_col_privs;
注意:查询和删除不能控制到列
授权和撤销不需要提交
CRUD需要提交commit
ddl 数据定义语言:创建一个表 修改一个表 删除一个表
dml 数据操纵语言:往表里插入数据 更新数据 删除数据
dcl 数据控制语言:指 授权和撤销 权限;