一、创建用户 (一)简单创建 1、权限:只有DBA用户才有权限,或有create user 的系统权限 2、语法:
- create user 用户名 identified by 密码;
- oracle密码不能以数字打头
- create user sam_sho identified by sam123;
- grant create session to sam_sho ; --分配登录权限
- create session:登录权限。
(二)复杂创建1、实例
- create usersam_shoidentified 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 ; --分配查询表的权限
3)resourse 角色的用户,创建的表没有表空间限制。
- grant resourse to sam_sho ; --分配resourse 角色
- oracle dbms:数据库管理系统
- db 实例:
- 表空间
- 数据对象
- 表
- 用户
- 权限:系统权限与数据库权限。
- 角色:把常用的权限集中起来。
二、登录及修改密码(一)用户登录1、切换用户,用户登录。1)语法:
- conn 用户名/密码 【as sysdba/sysoper】
- conn sam_sho/sam123;
-
conn sam_sho/sam123 as sysdba;
- 实际登录的不是sam_sho,可以show user看看
- 和验证机制有关,见下面。
- show user;
(二)修改密码1、给用户修改密码1)语法:
- passw【ord】 用户名
- passw sam_sho;
- passw
- 给自己修改,不需要带用户名,给别人修改需要带上。
- alter user 用户名 identified by 新密码;
- alter user sam_sho identified by sam456;
- 语法:drop user 用户名 (cascade)
- cascade 参数:级联删除该用户创建的表等数据对象。数据库会提醒的。
- drop user sam_sho ;
- drop user sam_sho cascade;--级联删除用户创建的表等数据
-
方案:锁定该用户
- alter user 用户 account lock;
- alter user 用户 account unlock;--解锁
三、用户口令
1、概述:
- 需要DBA身份
- profile 是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default 的profile。
- 当建立用户没有指定 profile 选项,那么oracle 就会将default 分配给用户。
- 概述:指定该账户登录时最多可以输入密码的次数,也可以指定用户锁定的时间(天),一般用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;
- create profile myProfile2 limit password_life_time 10 password_grace_time 2 password_reuse_time 1
- alter user sam123 profile myProfile2;
- drop profile myProfile2 ;
四、权限与角色(一)、概述:
1、刚创建的用户没有任何权限(不能登录),需要赋予各种权限。oracle对于权限的管理,需要引用角色的概念。2、权限1)系统权限:用户对数据库管理的操作以及对数据对象本身的操作的权限。
- 包括建库、建表、建索引、登录数据库、修改密码等等
- 权限主要分为:select、insert、update、delete、all、create index 等等
- connect :连接的角色
- DBA:管理员角色
- resource:这个角色可以在任何表空间中建表。
4、查看权限、角色
- 通过PL/SQL DEV工具查看
- 通过各种指令
-
直接分配权限
-
系统权限(与数据库管理相关):
- grant create sessionto sam_sho ;--分配登录权限
-
对象权限(增删改查):
- grantselectonV_tableto sam_sho ;--分配查询表的权限
-
系统权限(与数据库管理相关):
-
分配角色,批量分配权限
- grantdbato sam_sho ;--分配DBA 角色
- 语法: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
- oracle 提供了166系统权限,查询数据字典视图 system_privilege_map
- select * from system_privilege_map order by name;--查询系统权限
- 一般情况下只有DBA才能完成 或者拥有 grant any privilege 权限
-
赋权限语句后+ with admin option ,实现系统权限的传递(和方案一起理解)
- grant connect to sam_sho with admin option
- 不是级联回收。
- alter 修改
- delete 删除
- select 查询
- insert 添加
- update 修改
- index 索引
- references 引用
- execute 执行
- select distinct privilege from dba_tab_privs;
- 直接可以赋权限给用户 或者角色
-
赋权限语句后+ with grant option ,实现系统权限的传递
- grant select on emp to sam_sho with grant option
- 只能赋予用户,不能赋予角色
- 是级联回收。
- connect :连接的角色
- DBA:管理员角色(sys 和 system)。不具备启动和关闭数据库
-
resource:这个角色可以在任何表空间中建表。
- 隐藏了 unlimited tablespace 的权限
-
查看预定义角色: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';
-
注意:
- BDA角色创建或者 需要具有create role 权限
- 在建立角色的时候,可以设置验证方式,如不验证、数据库验证等
-
不验证建立(一般都是这种)
- create role 角色名 not identified
-
数据库验证
- create role 角色名 identified by 密码;
- grant create session to 角色
- create role myRole not identified;
- grant create session to myRole ;
- grant select on scott.emp to myRole ;
- grant myRole to sam_sho;
- drop role 角色名;
- grant create session to sam_sho;
- grant select on emp to sam_sho;
-
grant connect to sam_sho;
- 授于sam_sho connect的角色,即拥有登录的权限。connect,包含7 种权限。
- grant resource to sam_sho;
2)实例1:
- grant create table to sam_sho:赋予 sam_sho 创建表的权限。
- grant dba to sam_sho:赋予 sam_sho dba的角色,其自然具有创建表的角色。
- grant select on emp to sam_sho; 把emp表的查询权限赋予sam_sho
- SELECT * FROM scott.emp;可以查询,但是需要在表前面加上scott前缀。
- revoke select on emp from sam_sho; 从sam_sho收回emp表的查询权限
- 谁授权,谁收回。或者DBA
- 系统权限,不是级联回收。
- 对象权限,是级联回收。
-
对象权限使用 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;
- 系统权限,不是级联回收。
- 对象权限,是级联回收。
五、方案(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;
-
grant select on emp to sam_sho ;(scott登录)
-
语法:
六、数据库的启动流程(远程登录)(一)windows:1、lsnrctl start (启动监听)2、oradim -startup -sid 数据库实例名
- oradim -startup -sid orcl
- systeminfo
- sqlplus /nolog
- conn sys/change_on_install as sysdba
七、Oracle的登录认证方式(一)Windows1、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默认使用数据库验证。
- oracle 默认使用操作系统认证,如果验证不通过,再到数据库验证。
-
通过配置 NETWORK\ADMIN\sqlnet.ora 文件,可以修改oracle登录认证方式。
-
SQLNET.AUTHENTICATION_SERVICES= (NTS)
- NTS:基于系统,默认的。
- NONE:基于Oracle 验证
- NONE,NTS:二者都验证
-
SQLNET.AUTHENTICATION_SERVICES= (NTS)
(二)Linux,略。
七、丢失 Oracle 管理员密码1、恢复办法:把原有密码文件删除,生成一个新的密码文件2、恢复步骤如下:1)搜索名为 PWD+数据库实例名.ora 文件。一般在\database\PWDorcl.ora2)删除该文件,建议备份。3)生成新的密码文件,在doc 下输入命令:
- orapwd file = 原来密码文件的全路径\密码文件名.ora password=新密码 entries=10;
- entries=10:允许几个特权用户
- 密码文件名 一定要和原来的密码文件名一致。
3、例子:
- orapwd file=D:\oracle10g\database\PWDorcl.ora password=abc123 entries=10;
八、数据库管理员