欢迎投稿

今日深度:

Oracle基础(二):用户及权限管理

Oracle基础(二):用户及权限管理



一、创建用户 (一)简单创建 1、权限:只有DBA用户才有权限,或有create user 的系统权限 2、语法:

create user 用户名 identified by 密码;
oracle密码不能以数字打头 3、实例:用户名-sam_sho、密码-sam123
create user sam_sho identified by sam123; 4、注意: 1)刚创建的用户没有任何权限, 需要管理员分配权限。如登录权限:
grant create session to sam_sho ; --分配登录权限
create session:登录权限。 2)oracle的权限较为复杂,下面单独处理。

(二)复杂创建 1、实例
create usersam_sho identified by sam123
default tablespace users --默认表空间。users是oracle自己创建的表空间
temporary tablespace temp --临时表空间
quota 3m on users ; --分配表空间大小,3m。unlimited-不限制大小
grant create session to sam_sho ; --分配登录权限
grant dba to sam_sho ; --分配DBA 角色
grant select on V_table to sam_sho ; --分配查询表的权限 2、表空间理解 1)表存在的空间,即在逻辑上表(Table)都是存放在表空间中(Tablespace ) 2)一个表空间指向具体的数据文件
\

3)resourse 角色的用户,创建的表没有表空间限制。
grant resourse to sam_sho ; --分配resourse 角色 (三)Oracle的用户管理机制 1、一些概念:
oracle dbms:数据库管理系统
db 实例:
表空间
数据对象

用户
权限:系统权限与数据库权限。
角色:把常用的权限集中起来。 2、权限、角色、用户的关系

\


二、登录及修改密码 (一)用户登录 1、切换用户,用户登录。 1)语法:
conn 用户名/密码 【as sysdba/sysoper】 2)实例:
conn sam_sho/sam123;
conn sam_sho/sam123 as sysdba;
实际登录的不是sam_sho,可以show user看看
和验证机制有关,见下面。 2、显示当前登录用户的名称 1)语法:
show user;
(二)修改密码 1、给用户修改密码 1)语法:
passw【ord】 用户名 2)实例:
passw sam_sho;
passw 3)注意:
给自己修改,不需要带用户名,给别人修改需要带上。 2、给别人修改密码 1)权限:需要DBA的权限,或者拥有alter user 的系统权限 2)语法:
alter user 用户名 identified by 新密码; 3)实例:
alter user sam_sho identified by sam456; (三)删除用户 1、权限:一般需要DBA的权限,或者需要具有drop user的权限 2、语法:
语法:drop user 用户名 (cascade)
cascade 参数:级联删除该用户创建的表等数据对象。数据库会提醒的。 3、实例:
drop user sam_sho ;
drop user sam_sho cascade;--级联删除用户创建的表等数据 4、删除某个用户,但保留其数据对象
方案:锁定该用户
alter user 用户 account lock;
alter user 用户 account unlock;--解锁
三、用户口令
1、概述:
需要DBA身份
profile 是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default 的profile。
当建立用户没有指定 profile 选项,那么oracle 就会将default 分配给用户。 2、账户锁定
概述:指定该账户登录时最多可以输入密码的次数,也可以指定用户锁定的时间(天),一般用dba 的身份去执行该命令。
实例:指定 这个用户最多只能尝试3次登录,锁定时间为2天。
create profile lock_account limit failed_login_attempts 3 password_lock_time 2;
alter user sam123 profile lock_account ;--分配 \

3、账户解锁:
语法:
alter user 用户名 account unlock;
实例:
alter user sam123 account unlock; \

4、终止口令
概述:为了让用户定期修改密码可以使用终止口令来完成
实例:建立新的profile ,要求该用户每隔10天要修改自家的登录密码,宽限期为2天。
create profile myProfile limit password_life_time 10 password_grace_time 2;
alter user sam123 profile myProfile; 5、历史口令:新旧密码不能重复
create profile myProfile2 limit password_life_time 10 password_grace_time 2 password_reuse_time 1
alter user sam123 profile myProfile2; 6、删除口令
drop profile myProfile2 ;
四、权限与角色 (一)、概述:
1、刚创建的用户没有任何权限(不能登录),需要赋予各种权限。oracle对于权限的管理,需要引用角色的概念。 2、权限 1)系统权限:用户对数据库管理的操作以及对数据对象本身的操作的权限。
包括建库、建表、建索引、登录数据库、修改密码等等 2)对象权限:用户对其他用户的数据对象数据操作的权限。
权限主要分为:select、insert、update、delete、all、create index 等等 3、角色:简化对权限的管理。 1)预定义角色
connect :连接的角色
DBA:管理员角色
resource:这个角色可以在任何表空间中建表。 2)自定义角色
4、查看权限、角色
通过PL/SQL DEV工具查看
通过各种指令 5、权限分配的方式
直接分配权限
系统权限(与数据库管理相关):
grant create sessionto sam_sho ;--分配登录权限
对象权限(增删改查):
grantselectonV_table to sam_sho ;--分配查询表的权限
分配角色,批量分配权限
grantdbato sam_sho ;--分配DBA 角色 6、撤销权限
语法:revoke 权限 from 用户
实例:
revoke select on emp from sam_sho; 从sam_sho收回emp表的查询权限
revoke connect from sam_sho;
(二)权限 1、系统权限:是指执行特定类型sql命令的权限,它用于控制用户可以执行的一个或是一组数据库操作。比如当用户具有 create table 权限时,可以在其方案中建表。当用户具有 create any table 权限时,可以再任何方案中建表。 1)内容
create session 连接数据库
create table 建表
create view 建视图
create public synonym 建同义词
create procedure 建过程、函数、包
create trigger 触发器
create cluster 建簇
create sequence 建索引
create type 2)显示:
oracle 提供了166系统权限,查询数据字典视图 system_privilege_map
select * from system_privilege_map order by name;--查询系统权限 3)赋予系统权限:grant
一般情况下只有DBA才能完成 或者拥有 grant any privilege 权限
赋权限语句后+ with admin option ,实现系统权限的传递(和方案一起理解)
grant connect to sam_sho with admin option 4)权限回收:revoke
不是级联回收。 2、对象权限:访问其他方案对象的权利。用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。 1)内容:
alter 修改
delete 删除
select 查询
insert 添加
update 修改
index 索引
references 引用
execute 执行 2)显示:DBA用户可以查看对象权限 dba_tab_privs
select distinct privilege from dba_tab_privs; 3)赋予对象权限
直接可以赋权限给用户 或者角色
赋权限语句后+ with grant option ,实现系统权限的传递
grant select on emp to sam_sho with grant option
只能赋予用户,不能赋予角色 4)权限回收:revoke
是级联回收。 (三)角色 1、预定义角色:33种 1)常见内容
connect :连接的角色
DBA:管理员角色(sys 和 system)。不具备启动和关闭数据库
resource:这个角色可以在任何表空间中建表。
隐藏了 unlimited tablespace 的权限 2)显示
查看预定义角色:33种角色
select * from dba_roles;
查看角色的系统权限
SELECT * FROM dba_sys_privs where grantee = 'DBA'
SELECT * FROM role_sys_privs WHERE role = 'DBA';
查看角色的对象权限
SELECT * FROM dba_tab_privs where grantee = 'DBA'
查看某个用户的角色
SELECT * FROM dba_role_privs WHERE grantee='SYS'; 2、自定义角色 1)创建角色
注意:
BDA角色创建或者 需要具有create role 权限
在建立角色的时候,可以设置验证方式,如不验证、数据库验证等
不验证建立(一般都是这种)
create role 角色名 not identified
数据库验证
create role 角色名 identified by 密码; 2)给角色赋权限
grant create session to 角色 3)实例
create role myRole not identified;
grant create session to myRole ;
grant select on scott.emp to myRole ;
grant myRole to sam_sho; 3、删除角色
drop role 角色名; (四)给用户赋权限 1、赋予直接的权限。如直接登录权限(create session)
grant create session to sam_sho;
grant select on emp to sam_sho; 2、直接分配角色,批量分配权限。如
grant connect to sam_sho;
授于sam_sho connect的角色,即拥有登录的权限。connect,包含7 种权限。
grant resource to sam_sho; (五)用户的权限操作 1、赋权限:grant 1)语法:grant 权限(角色) to 用户名;
2)实例1:
grant create table to sam_sho:赋予 sam_sho 创建表的权限。
grant dba to sam_sho:赋予 sam_sho dba的角色,其自然具有创建表的角色。 3)实例2
grant select on emp to sam_sho; 把emp表的查询权限赋予sam_sho
SELECT * FROM scott.emp;可以查询,但是需要在表前面加上scott前缀。 2、收回权限:revoke 1)语法:
revoke select on emp from sam_sho; 从sam_sho收回emp表的查询权限 2)注意:
谁授权,谁收回。或者DBA
系统权限,不是级联回收。
对象权限,是级联回收。 3、权限的传递 1)scott把emp表的查询权限赋予sam_sho,sam_sho再把这种权限传递给rabby_zho 2)语法:
对象权限使用 with grant option 进行传递
grant select on emp to sam_sho with grant option;(scott登录)
grant select on scott.emp to rabby_zho;(sam_sho登录)
角色、系统权限使用 with admin option
grant connect to sam_sho with admin option;(scott登录)
grant connect to rabby_zho; 3)回收
系统权限,不是级联回收。
对象权限,是级联回收。
五、方案(Schema) 1、问题:同一个数据库实例 DEV_SAM,创建了2个用户 A 和 B 。用户 A 创建表a_table,B创建表b_table。结果A 访问不了 b_table,B访问不了 a_table 。 2、解决:
当一个用户,创建好后,如果该用户创建了任意一个数据对象,这时,dbms就会创建一个对应的【方案】与该用户对应,并且该【方案】的名字与用户名一致。
在这样的机制下,同一个数据库实例,可以创建多张相同表名的表,但是同一个方案中表名是具有唯一性的。
A 如果需要去访问 B方案下的数据,需要权限的转移。
语法:
grant 权限 to 用户名 【with grant option】 对象权限
grant 权限 to 用户名 【with admin option】系统权限
实例
grant select on emp to sam_sho ;(scott登录)
使用的时候,需要带【方案】名:select * from scott.emp 。
grant all on emp to sam_sho with grant option;可以转移
grant select on scott.emp to sam2; \


六、数据库的启动流程(远程登录) (一)windows: 1、lsnrctl start (启动监听) 2、oradim -startup -sid 数据库实例名
oradim -startup -sid orcl 3、附:查看windows系统的信息
systeminfo (二)Linux 1、lsnrctl start (启动监听) 2、sqlplus sys/change_on_install as sysdba
sqlplus /nolog
conn sys/change_on_install as sysdba 3、startup

七、Oracle的登录认证方式 (一)Windows 1、oracle登录认证在windows 和linux 下是不完全相同。 2、现象: 1)conn XXXX/CCC as sysdba; 登录成功,并且显示当前用户为 sys。 2)XXXX/CCC 可以任意,只要以 as sysdba 即可。
2、操作系统认证 1)如果【当前用户】属于本地操作系统的 ora_dba 组,即可通过操作系统认证。 2)当前用户,指目前操作系统使用的用户,可以简单通过windows 任务管理器查看。
\

3)操作系统的用户与组:
我的电脑-->右击管理-->本地用户和组-->用户,如用户 sam \
我的电脑-->右击管理-->本地用户和组-->组,显示sam属于ora_dba组 \

3、oracle 数据库验证(密码文件验证) 1)对于普通用户:
oracle默认使用数据库验证。 2)对于特权用户(比如 sys 用户,或以 as sysdba)
oracle 默认使用操作系统认证,如果验证不通过,再到数据库验证。
通过配置 NETWORK\ADMIN\sqlnet.ora 文件,可以修改oracle登录认证方式。
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NTS:基于系统,默认的。
NONE:基于Oracle 验证
NONE,NTS:二者都验证 \
(二)Linux,略。
七、丢失 Oracle 管理员密码 1、恢复办法:把原有密码文件删除,生成一个新的密码文件 2、恢复步骤如下: 1)搜索名为 PWD+数据库实例名.ora 文件。一般在\database\PWDorcl.ora 2)删除该文件,建议备份。 3)生成新的密码文件,在doc 下输入命令:
orapwd file = 原来密码文件的全路径\密码文件名.ora password=新密码 entries=10;
entries=10:允许几个特权用户
密码文件名 一定要和原来的密码文件名一致。 4)重启生效
3、例子:
orapwd file=D:\oracle10g\database\PWDorcl.ora password=abc123 entries=10;
八、数据库管理员
\


\

www.htsjk.Com true http://www.htsjk.com/oracle/23379.html NewsArticle Oracle基础(二):用户及权限管理 一、创建用户 (一)简单创建 1、权限:只有DBA用户才有权限,或有create user 的系统权限 2、语法: create user 用户名 identified by 密码; oracle密码不能以...
评论暂时关闭