系统权限
三个默认用户:用户 密码
sys(网络管理员) change_on_install [as sysdba](连接数据库所用)
system(本地管理员) manager
scott(普通用户) tiger
上面为oracle9i中的用户密码,如果是10i则前两个用户由自己在安装时指定。
创建自己的用户
出现协议适配器错误:启动两个服务(监听、实例)
通过命令启动以上两个服务:
监听:lsnrctl start (监听名称,可不写)
实例:oradim -starup -sid orcl
1、通过超级用户登录:
sqlplus [username]/[password] as sysdba 此用户为"sys"
2、创建用户:
create user zlb identified by zlb(密码)
使用用户:
先授会话权限:
grant create session to zlb;
再登陆:
sqlplus zlb/zlb
创建表:
先分配权限:
grant unlimited tablespace to zlb;
grant create table to zlb;
创建表:
create table mytable (id int);
插入:
insert into mytable values(1);
说明:当一个用户拥有了创建表的权限时,他就拥有了这张表所有操作的权限。
撤销表的权限:
revoke create table from zlb;
查找用户拥有哪些系统权限:
select * from user_sys_privs;
如果想把某个权限授予所有用户:
grant create any table to public;(把创建表的权限授予所有用户)
对象权限
用户之间不能相互访问;sys有权限访问所有用户的权限。
在oracle中要通过手动提交,即当你插入一条数据时,要通过“commit”提交以下。
如果要想用户之间能够相互访问,可通过授权来实现:
grant select on mytable to lb;(表示zlb把查询表的权限授予lb),其他的增删改权限授予同上。
如果想把所有的权限授予lb,写法为:
grant all on mytable to lb;
撤销所有权限:revoke all on mytable from lb;
查找用户拥有哪些表权限:
select * from user_tab_privs;
断开连接:disconn;启用连接:connzlb/zlb
权限可以控制到列上,如:
grant update(id) on mytable to lb;
把更新字段“id”的权限授予lb
注意:查询和删除不能控制到列
查看列的权限:
select * from user_col_privs;
DDL:对表的操作语言
DML:增删改查(只有DML中的插入、更新、删除在编写完SQL之后要对其进行“commit”提交)
DCL:权限控制语言
权限传递
系统权限下:
sys把管理的权限授予zlb,因此zlb就拥有的管理的权限,zlb也可以再把此管理权限授予lb,如:sys将管理权限授予zlb:
grant alter any table to zlb with admin option;
zlb将管理权限授予lb:
grant alter any table to lb with admin option;
对象权限下:
权限授予语句:在zlb用户下:
grant select On table to lb with grant option;zlb将查询table表的权限授予lb,并且,把此权限的管理权也授予了lb
角色权限
创建角色:create role myrole;
授权:
grant create table to myrole;
授权:
grant create table to myrole;
创建用户:
create user zhangsan identified by zhangsan;
将此用户授予角色
grant myrole to zhangsan;
这样的话此用户就拥有了角色中的所有权限
有些权限级别很高,只能单独授予用户,只能授予角色,如:
grant unlimited tablespace to myrole;将执行失败
权限说明:
create table:为自己创建表create any table:不仅为自己,也可以为别的用户创建表
修改表/删除表:不存在alter table/drop table,只有alter any table/drop any table.因为当用户有了create table的权限时,则已经表示他可以对此表进行任意的操作,所以,修改和删除自己的表权限语句就不存在了。
表是属于某一个用户,而角色是公共的,不属于任何一个用户
丢失管理员密码怎么办
普通用户:
可以通过sys用户去修改普通用户密码如:通过sys用户修改zlb的密码:
alter user zlb identified by zlb123;
sys用户:
如果我把原有口令文件删掉了,路径为:E:\oracle\ora92\database\pwdora9i.ora;
创建密码文件:
orapwd file=E:\E:\oracle\ora92\database\pwdora9i.ora password=sys entries=10(指定密码文件中可以放多少特权用户);
之后我们可以查看密码文件中有多少特权用户:
select * from v$pwfile_users;
数据库的是三种验证机制,依次为:
1、操作系统验证:
拥有sysoper和sysdba权限的用户,默认情况下为安装数据库时以该计算机用户名自动创建的,因此在登录时可以不输入用户名密码也可登陆进去;如果把此用户删除,则进行下一步验证。2、密码文件验证:
拥有sysoper和sysdba权限的用户,如:sys用户3、数据库验证(普通用户使用)
创建用户:
create user abc(用户名)identified by abc(密码)
default tablespace users(默认表空间)
Temporary tablespace temp(临时表空间,支持排序)
quota 50M on users(在默认表空间中所使用的空间,即限额;如果是没有限制,则把50M改为unlimited)