【day2】ORACLE 用户、角色、权限管理

1、oracle默认用户及密码如下

用户名 密码 以何种身份登录 备注
sys change_on_install SYSDBA 或 SYSOPER 不能以 NORMAL 登录,为默认的系统管理员身份
system manager SYSDBA 或 NORMAL 不能以 SYSOPER 登录,可作为默认的系统管理员
dbsnmp dbsnmp SYSDBA 或 NORMAL 复制管理员
scott tiger NORMAL 普通用户

注意:
(1)直接用system登录,报错ORA-01017: invalid username/password; logon denied
在这里插入图片描述
    解决办法:需加上登录身份。
在这里插入图片描述
(2)直接登录scott,会报错ORA-28000: the account is locked
在这里插入图片描述
    解决办法:
    Oracle数据库默认Scott用户是锁定的,需要登录system用户,解除scott用户锁定状态。先用系统用户sys登入后输入 alter user scott account unlock;这样就可以解除scott用户的锁定状态,重新启动sqlplus,就可以利用scott用户登入了。

2、连接用户

connect(conn) 【用户名】/【密码】

3、查看当前用户

SQL> show user;
USER 为 "SCOTT"

显示出当前的用户名

4、退出

exit

5、修改密码

    修改当前登录用户的密码,直接使用

password (passw)

    如果是要修改其他用户的密码,必须使用具有dba权限的账号,如system,或是具备alter user权限的账号。

alter user 【用户名】 identified by 【新密码】

6、删除用户

drop user 【用户名】 【cascade】

    cascade:当用户已经建表,要删除该用户时,加上cascade,则会级联将用户及用户创建的表都删除。

7、创建用户

    创建用户就用create命令即可,但是需要使用dba权限的账号或是具备create user权限的账号。

create user 【用户名】 identified by 【密码】;

7.1 用户角色

    新创建的用户是没有任何操作权限的,当你登录这个新用户时,会提示以下内容

SQL> create user zsy identified by elephant;
用户已创建。

SQL> conn zsy/elephant;
ERROR:
ORA-01045: user ZSY lacks CREATE SESSION privilege; logon denied
警告: 您不再连接到 ORACLE。

SQL> show user;
USER 为 ""

    此时需要给新用户赋予权限或角色。
    先说权限。Oracle有两类权限。① 系统权限:用户对数据库访问和操作的权限,如建库、建表、建索引等。② 对象权限:用户对其他用户的数据对象访问的权限,(数据对象为表、视图、过程、触发器等),例如select、insert、update、delete、all、create index权限。
使用下面的命令来给新用户赋予权限:

  grant create session to [用户名];//授予用户创建session的权限,即登陆权限
  grant unlimited tablespace to [用户名];//授予用户使用表空间的权限
  grant create table to [用户名];//授予用户创建表的权限
  grante drop table to [用户名];//授予用户删除表的权限
  grant insert table to [用户名];//授予用户插入表的权限
  grant update table to [用户名];//授予用户修改表的权限
  grant all to public;//授予所有权限(all)给所有用户(public)
   grant select on [表名] to [其他用户名];//授予用户查看指定表(其他用户的表)的权限
  grant select on tablename to [用户名];//授予用户查看指定表的权限
  grant drop on tablename to [用户名];//授予用户删除表的权限
  grant insert on tablename to [用户名];//授予用户插入的权限
  grant update on tablename to [用户名];//授予用户修改表的权限
  grant insert on tablename to [用户名];//授予对指定表插入权限
  grant update on tablename to [用户名];//授予对指定表修改权限
  grant alert all table to [用户名];//授予用户alert所有表的权限
  grant select on [表名] to [用户名] with grant option;//with grant option的意思是被赋予该权限的用户还具备了赋予其他用户该权限的权限,即权限的传递。若最初的用户被删除,则之后被赋予权限的用户将被移除该权限。

撤销权限:

revoke select on [表名] from [用户名];//select就是之前赋予用户的权限

    另外,oracle也有一个角色的概念。角色是oracle事先定义的,该角色会具备一些权限,类似于将权限批量授权给了这个角色。角色分两种。① 自定义角色:用户自己定义一个角色。② 预定义角色:在安装数据库时已经存在,例如connect角色、dba角色、resource角色(可以让用户在任何表空间建表)。在创建用户的时候,可以直接让某个用户成为某个角色,从而具备这个角色具备的所有权限。
    可以这样理解角色。角色就相当于人类社会的职位,比如警察、法官。这些职位是在一个小朋友出生的时候就存在的,定义好了的,比如警察的权限是强制执行、拘留违法人员等,那么当一个人被任命为警察后,他就直接具备这些权限了。类似的,当一个oracle被指定成为一个角色后,也就具备这个角色拥有的权限了。
    oracle对于角色、权限的管理是oracle一个很优秀的地方。
授予用户角色:

grant connect to [用户名];//connect是oracle的角色之一

创建、删除角色:

  create role [角色名];//创建角色
  grant create session to [角色名];//将创建session的权限授予myrole
  drop role [角色名];//删除角色

7.2 用户口令管理

    分为两步:① 制定规则;② 将规则赋予给用户。
1、锁定账户
    可以指定用户登录时最多可以输入密码的次数,也可以指定用户锁定的时间。需要用dba权限的账号去执行。
    ① 创建profile文件,即制定规则

create profile [profile名] limit failed_login_attempts [m] passwork_lock_time [n];

其中m表示锁定多少天,整数;n表示最多输入几次,整数。
    ② 将规则赋给某个用户

alter user [用户名] profile [profile名];

    ③ 给用户解锁

alter user [用户名] account unlock;

2、让用户定期来修改密码,终止口令
    ① 创建规则文件
create profile [profile名] limit password_life_time [m] password_grace_time [n];
    m:每隔几天修改密码,整数。n:宽限期为几天,整数。
    ② 将规则赋给某个用户

alter user [用户名] profile [profile名];

3、口令历史管理
    规定用户在修改密码的时候,不能使用以前使用过的密码。可使用口令历史,这样oracle就会把口令修改的信息存放在数据字段中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当凡发现旧密码和新密码一样时,就提示用户重新输入密码。
    ① 创建规则文件

create profile password_history limit password_life_time [m] password_grace_time [n] password_reuse_time [k];

    password_reuse_time指定口令可重用时间,k天之后才可以重用。
    ② 将规则赋给某个用户

alter user [用户名] profile [profile名];

    删除profile:

drop profile [profile名] 【cascade】;//删除之后被赋予规则的用户将不再具备该规则。cascade就是级联删除。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章