目录
一、前言
二、使用步骤
1.创建用户
2.给用户修改密码
3.删除用户
4.用户管理综合案例
5.数据库中权限的分类
6.使用profile管理用户口令
7.Oracle数据库启动流程
8.管理员密码丢失解决办法
三、总结
此博客主要关于Oracle用户的创建、给用户修改密码、删除用户、用户管理综合案例、数据库的两个权限【系统权限和对象权限】以及使用profile管理用户口令。
注:具有DBA(数据库管理员)的权限才能使用哦!
create user 用户名 identified by 密码;
创建一个用户AAA
概述:如果给自己修改密码可直接使用
1)给自己修改密码:sql>password
2)给别人修改密码:sql>password 用户名 【注:必须是SYS或SYSTEM用户才可以帮别人修改】
password只能在Oracle自带的工具里面使用,如sqlplus,在PL/SQL developer中不好使
3)在所有ORACLE管理工具中修改密码:alter user 用户名 identified by 密码;
修改用户密码两种方式
概述:一般是以dba的身份去删除某个用户,如果用其他用户去删除用户则需要具有drop user的权限
drop user 用户名 [cascade]
cascade表示级联删除它所创建的所有对象(比如表)
删除用户AAA
概述:创建的新用户是没有任何权限的,甚至连登录的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用命令grant,回收权限使用命令 revoke。
授予权限基本语法:grant 权限/角色 to 用户;
回收权限基本语法:revoke 权限/角色 from 用户;
对用户AAA进行权限的授予与撤销
数据库中有两种权限:系统权限和对象权限
Ⅰ.系统权限:用户对数据库的权限,比如创建数据库,创建表。系统权限中有一个create session权限,每个用户必须拥有了该权限后才能登陆数据库,当新建一个用户时,是无法直接登陆数据库的。
例如:用SYS用户登陆数据库创建一个用户AAA时,此时AAA用户不能登陆数据库,因为没有登陆权限,只有SYS把登陆权限给了AAA才能登陆,解决方法有如下:
①sql>grant create session to AAA;
②sql>grant connect to AAA; //connect是预定义角色,拥有create session权限
③sql>grant sysdba to AAA; //sysdba是预定义角色(数据库管理员),拥有所有权限
此时AAA用户就可以成功登陆到数据库了。
resource角色有在表空间创建表的权限,如sql>grant resource to AAA; //用户AAA可以创建表了
给用户AAA授权登陆的权限 授予resource角色权限,可以在表空间创建表
Ⅱ.对象权限:用户对其他用户的数据对象操作的权限,比如在表中数据进行查询、插入、修改和删除等。
常用的对象权限有:alter 修改 delete 删除 select 查询 insert 添加 update 修改 index 索引 references 引用 execute 执行
①权限的授予
加入希望用户AAA去访问SCOTT的EMP表,首先需要授权,授权方法有如下两种:
a)以scott登陆:sql>grant select(或insert、update、delete、all) on emp to AAA;
b)以SYS或SYSTEM登陆:sql>grant select(或insert、update、delete、all) on scott.emp to AAA;
此时就可以访问scott的emp表了,当用户AAA登陆后,可以使用sql>select * from scott.emp;//记得查询不在此用户的表时,需要加前缀。
②权限的回收
语法格式:sql>revoke ... on [scott.]emp from AAA;
注意:谁授予AAA的权限就由谁收回,别人是无法收回的,但是DBA有权收回任何用户的。
③with grant option(只应用与对象权限):允许被授权用户再继续把该权限传递给其他用户,并且回收权限时是级联收回。
回收权限是级联收回,这是与下面介绍的with admin option的不同之处:
④with admin option(只应用于系统权限):也是允许被授权用户往下传递权限。但是权限回收时不是级联回收。
注意:当system回收用户AAA的resource权限后,不会级联回收,而是只回收AAA的该权限;用户BBB和用户CCC仍然可以创建表。
概述:profile是口令限制、资源限制的命令集合,当建立数据时,Oracle会自动建立名称为default的profile;当建立用户没有指定profile选项,那么Oracle会将default分配给用户。
(1) 账户锁定
概述:指定该账户(用户)登陆时最多可以输入密码的次数,也可以指定用户锁定的时间(天),一般用dba的身份去执行命令。
例:指定AAA这个用户最多只能尝试3次登陆,锁定时间为2天,接下来实现这个条件:
Ⅰ.创建profile文件
sql>create profile lock_account limit failed_login_attempts 3 password_lock_time 2;
sql>alter user AAA profile lock_account;
接下来查看一下效果,登陆AAA用户连续输入三次错误密码直接将该用户锁定,即使第四次你输入正确的密码都无法登陆哦!
(2)给账户(用户)解锁
sql>alter user AAA account unlock; 【AAA为解锁的用户名】
(3)终止口令
概述:为了让用户定期修改密码可以使用终止口令的指令来完成,同样这个命令也需要dba身份来操作。
例:给前面创建的用户AAA创建一个profile文件,要求该用户每隔10天要修改自家的登陆密码,宽限期为2天:
1)建立profile文件
sql>create profile AAA_profile limit password_life_time 10 password_grace_time 2;
2)分配给某个用户
sql>alter user AAA profile AAA_profile;
(4)口令历史
概述:如果希望用户再修改密码时,不能使用以前使用过的密码,可使用口令历史,这样Oracle会将口令修改的信息存放到数据字典中,这样当用户修改密码时,Oracle就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。
例:给用户AAA创建一个profile文件password_history,要求该用户每隔10天要修改自己的登陆密码,宽限期为2天,并且不能使用以前使用过的密码:
1)建立profile
sql>create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10;
// password_reuse_time:单位为天,说明在指定的天数之内,设定的密码不能重复
2)分配给某个用户
sql>alter user AAA profile myprofile;
(5)删除profile
概述:当不需要某个profile文件时,可以删除这个文件。
注:如果profile指定了用户需要级联删除,cascade
语法格式: sql>drop profile profile文件名 [cascade]
Oracle启动流程-Windows下
1)Isnrctl start(启动监听)
2)oradim -startup -sid 数据库实例名、
当然,可以搜索任务管理器-服务-找到Oracle那里直接点击运行即可啦!
Oracle启动流程-Linux下
1)Isnctl start (启动监听)
2) sqlplus sys/change_on_install as sysdba (以sysdba 身份登录,在oracle10g后可以这样写)
sqlplus /nolog
conn sys/change_on_install as sysdba
3) startup
恢复办法:把原有密码文件删除,生成一个新的密码文件。
恢复步骤:
1)搜索名为PWD数据库实例名.ora文件
2)删除该文件,为预防万一,建议备份
3)生成新的密码文件,在dos控制台下输入命令:
orapwd file=原来密码文件的全路径\密码文件名.ora password=新密码 entries=10;//entries:允许几个特权用户
注:密码文件名一定要和原来的密码文件名一样。
以上介绍了Oracle用户管理的使用,包括用户的创建、给用户修改密码、删除用户、用户管理综合案例、数据库的两个权限【系统权限和对象权限】以及使用profile管理用户口令。
注意:当出现权限不足问题时,使用show user查看当前所处用户是谁,一般需要管理员dba才能执行一些权限。