您的位置:首页 > 数据库 > Oracle

oracle创建用户需要赋予哪些权限(…

2013-09-11 15:55 363 查看
长见识,这个东西碉堡了!!
一般下面就足够了:(
如果需要dba权限再加上dba权限就行)

grant
connect
,resource,dba
to
user


啊啊
见我的另一篇权限的博客啦!!


oracle创建用户ORA-01045:user lacks CREATE SESSION
privilege;logon denied..的问题

conn internal/oracle
grant user aaaa identified by aaaa;

conn aaaa/aaaa 会报错:

SQL>conn aaaa/aaaa 会报错:

ERROR:

ORA-01045: user aaaa lacks CREATE SESSION privilege; logon
denied

原因:

用户至少需要会话的权利,否则连接也不成功;

用户在会话的权利上,应该有其他操作的权利;

解决方法: www.2cto.com

1 :grant connect,
resource to aaaa;

2 :grant create
session to aaaa;


1和2的区别即connection和session区别啦??

connect 是个角色,本角色包含 create session 权限,仅此而已。

看看,见
2


Oracle的安全

第一:用户管理*******************************************

用户至少需要会话的权利,否则连接也不成功;

用户在会话的权利上,应该有其他操作的权利;

Oracle的用户和口令不区分大小写,真是让人大跌眼镜;

Oralce中,所有用户必须明确被授权,才可以操作;

SQL Server中,创建的用户自动就拥有了一些权限;

Oracle不依赖操作系统;SQL
Server依赖Windows;

MicroSoft假定大多数用户都是合法用户,采取乐观态度;

Oracle首先假定用户都是不安全的,采取悲观态度;

Oracle中的用户是互相隔离的,称为用户模式;

内置用户: www.2cto.com


sys,网络管理员,最高权限;



当你试图输入了用户名:sys



密码:通用



之后,你发现连接不上;


而输入
用户名:system



密码:通用


或者
用户名:scott



密码:tiger





的时候都可以连接,所以你认为



sys的权限没有system高;



其实正是因为sys的权限高,所以你必须以


dba的身份来登陆:sys/通用 as
sysdba

//可以使用数据字典user_users来查看当前用户管理的用户:


select * from user_users;

而dba_users可以查看dba管理的用户;

system,只管理本机上的数据库;

而all_users查看所有用户,只能由dba来查看;



******创建用户:
www.2cto.com


create user 用户名 identified
by 口令 [externally]

[default tablesapce
表空间名]

[temporary tablespace
临时表空间名]

[quota 整数 K|M|unlimited on
表空间名]

//注意:创建用户必须有dba的权限;



******查询用户:

其实就是对表user_users/dba_users/all_users进行查询,

只不过这里不把他们叫表,叫数据字典;而且数据字典是系统

维护的;

*******修改用户:

alter
user.....//后面和创建一样;

Oracle中一个实例就是一个数据库,这个数据库相当与SQL
Server的全部数据库;

Oracle的一个数据库被分为很多个表空间,每个表空间相当于SQL
Server中的一个数据库;




实例演示:

create user
student_user

identified by
student

default tablespace
users

temporary
tablespace temp

quota 5m on
users

quota 3m on
temp



/其中,users,temp都是内置的表空间,student_user在users里有5m空间,在temp里有3m;

新创建的用户是没有权利的:

SQL> conn
student_user/student;

ERROR:
www.2cto.com


ORA-01045: user
STUDENT_USER lacks CREATE SESSION privilege; logon
denied

警告: 您不再连接到
ORACLE。



*****限制用户

锁定:alter user 用户名 account
lock;


效果:


SQL> alter user student_user account
lock;


用户已更改。


SQL> conn student_user/student;


ERROR:


ORA-28000: the account is locked


警告: 您不再连接到 ORACLE。

解锁:alter user 用户名 account
unlock;

口令无效:alter 用户名 password
expire; 当用户创建了很多表,


如果直接删除用户,它下面的表都将被删除,所以我们可以


只使得它的口令无效;



//可见,表是用户的手下,用户没了,用户创立的表,占用的空间都就没了;

//所以,一般情况下,我们不要删除用户;

****删除用户:
www.2cto.com


drop user
用户名[cascade]

//cascade是强制删除,即使有别人正在用这个用户的表;

//数据库管理语句是自动结束事务的,没有rollback的机会;



第二:权限管理***********************************************

授权:grant [系统特权名]
[角色] [on 被授权操作表名] to [用户名列表]

[public][with admin
option]

如果是dcl语句,就不用on
被授权操作表名

grant all on student to
public:把对student的所有权限授予所有用户;



数据字典:user_sys_privs

select * from
user_sys_privs

权限收回:
www.2cto.com


revoke 权限列表 on 表 from
用户;

SQL> revoke
create table from iam;

撤销成功。



撤消只是撤消本次授权的权限,所以如果某个用户原来就有某个权利,

而你又给它授了同样的一个权利,然后你收回这个权限的时候,它原来

就具有的这个权利还是有的;

第三:角色管理*****************************************

因为一个用户可能需要某些权限的集合,当我们得到一新的用户的时候,我们需要给一个

用户依次授权每个它需要的权限;角色正是一个权限的集合,用户可以直接被授予这个

角色,用户自然就拥有了它的角色所拥有的权利;



创建角色:

create role 角色名 [no
identified|identified by 口令|externally]

not
identified:指出授予该角色的用户在使用时不需要检验;

identified
by:指出授予该角色的用户在使用set role命令时需要检验;


www.2cto.com


收回权限:revoke 权限
from 角色名;



//角色就是权限的集合;

实例:

create role
student_role

/
grant create
table,create session,create view to
student_role

/
grant student_role
to scott

/

revoke create view
from student_role

/

角色的某个权限被收回的时候,被授予该角色的用户的该权限也相应被收回;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: