转自 http://www.cnblogs.com/zfc2201/archive/2011/08/17/2143436.html
<strong>3个默认的帐户:</strong>
sys change_on_install 网络管理员 [
as
sysdba]
system manage 本地管理员
scott tiger 超级用户
<strong>创建用户、授权和撤消权限</strong>
登录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; //撤消对表空间操作的权限
<strong>丢失管理员密码怎么办?</strong>
用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;
<strong>角色管理</strong>
角色就是一个权限的集合。
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; 这个权限比较大,不能通过角色授权,只能授权给用户
<strong>权限的传递</strong>
|
<strong></strong>
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
;; //让王五也可以传递权限。
<strong>系统权限与对象权限</strong>
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;
<strong>帐户管理细节</strong>
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
;