oracle 账户管理

1. 数据库用户

数据库用户

  • 创建和管理数据库账号
  • 赋予权限与撤销权限
  • 创建和管理

每个数据库⽤户账号都包括以下⼏项:

  • 唯⼀的⽤户名:⽤户名不超过30个字节,不能包含特殊字符,必须
    以字⺟开头。
  • 默认表空间
  • 临时表空间
  • 账户状态

2. 创建用户

SQL> Create User username
Identified by password
Default Tablespace tablespace
Temporary Tablespace tablespace
Profile profile
Quota integer/unlimited on tablespace;
例:
SQL> Create user acc01
identified by acc01   // 如果密码是数字,请⽤双引号括起来
default tablespace account
temporary tablespace temp
profile default
quota 50m on account;

2.1 查看用户信息

dba_users 查询⽤户缺省表空间、临时表空间

SQL> select username, default_tablespace,
_temporarytablespace from dbausers;

2.2 修改用户信息

SQL> Alter User ⽤户名
Identified ⼝令
Default Tablespace tablespace
Temporary Tablespace tablespace
Profile profile
Quota integer/unlimited on tablespace;

  • 修改用户密码:
SQL>Alter user acc01 identified by "12345";
  • 修改⽤户缺省表空间:
SQL> Alter user acc01 default tablespace users;
  • 修改⽤户临时表空间
SQL> Alter user acc01 temporary tablespace temp_data;
  • 强制⽤户修改⼝令字:
SQL> Alter user acc01 password expire;
  • 将⽤户加锁
SQL> Alter user acc01 account lock; // 加锁
SQL> Alter user acc01 account unlock; //解锁

2.3 预定义账户:SYS和SYSTEM

SYS账户

  • 被授予了DBA⻆⾊
  • 具有 ADMIN OPTION 的所有权限
  • 执⾏启动、关闭和某些维护命名是需要使⽤的账户
  • 数据字典的拥有者

SYSTEM 账户被授予了DBA角色

3. 权限

用户权限有两类:

  • 系统:允许⽤户在数据库中执⾏特定的操作
  • 对象:运⾏⽤户访问和操作特定的对象

系统权限只能由DBA⽤户授出:sys, system(最开始只能是这两个⽤户)

授权命令:

SQL> grant connect, resource, dba to ⽤户名1 [,⽤户名2]...;

普通⽤户通过授权可以具有与system相同的⽤户权限,但永远不能达到与sys⽤户相同的权限,system⽤户的权限也可以被回

3.1 系统权限

DBA拥有全部特权,是系统最⾼权限,只有DBA才可以创建数据库结构。
RESOURCE拥有Resource权限的⽤户只可以创建对象。
CONNECT拥有Connect权限的⽤户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
普通⽤户授予connect, resource权限。
DBA管理⽤户授予connect,resource, dba权限

举例

SQL> conn / as sysdba
SQL> Create user user50 identified by user50;
SQL> grant connect, resource to user50;
查询⽤户拥有哪⾥权限:
SQL> select * from dba_sys_privs;
SQL> select * from dba_role_privs;
SQL> select * from role_sys_privs;

3.2 系统权限的传递

增加WITH ADMIN OPTION选项,则得到的权限可以传递。

SQL> grant connect, resorce to user50 with admin option; //可以传递所获权限。
  • 如果使⽤WITH ADMIN OPTION为某个⽤户授予系统权限,那么对于被这个⽤户授予相同权限的所有⽤户来说,取消该⽤户的系统权限并不会级联取消这些⽤户的相同权限。
  • 系统权限⽆级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨⽤户回收,即A可以直接收回C⽤户的权限

3.3 权限的回收

系统权限回收:系统权限只能由DBA⽤户回收

SQL> Revoke connect, resource from user50;

3.4 对象权限

3.4.1 对象权限分类

  • select
  • update
  • insert
  • alter
  • index
  • delete
  • all
  • execute

用法:GRANT [权限] on [对象名称] to [被授权⽤户]

user01:
SQL> grant select emp to user02;
SQL> grant all on table_name to user02;
user02:
SQL> select * from user01.table_name;
// 此时user02查user_tables,不包括user01.table_name这个表,但如果查all_tables则可
以查到,因为他可以访问;

将表的操作权限授予全体⽤户:

SQL> grant all on product to public;

public表示是所有的⽤户,这⾥的all权限不包括drop;

3.4.2 对象权限相关数据字典

  1. ⽤户可以查询的表
SQL> select owner, table_name from dba_tables;
  1. ⽤户创建的表
SQL> select table_name from dba_tables;
  1. ⽤户创建的表
SQL> select grantor, table_schema, table_name, privilege from
dba_tab_privs;
  1. 授出权限的表(授出的权限)
SQL> select grantee, owner, table_name, privilege from dba_tab_privs;

3.4.3 对象权限的传递

user01:
SQL> grant select, update on product to user02 with grant
option;

user02得到权限,并可以传递。
如果取消某个⽤户的对象权限,那么对于这个⽤户使⽤WITH GRANT OPTION授予权限的⽤户来说,同样还会取消这些⽤户的相同权限,也就是说取消授权时级联的。

3.4.4 对象权限的回收

实体权限回收:

user01:
SQL>Revoke select, update on product from user02;

传递的权限将全部丢失。

4. Profile

oracle系统中的profile是⽤来对⽤户所能使⽤的数据库资源进⾏限制的。

SQL> select * from dba_users;
SQL> select * from dba_profiles;

4.1 查看Profile

SQL> select * from dba_profiles;
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------ -------------------------------- -------- --------------------
DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED
DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED
DEFAULT CPU_PER_SESSION KERNEL UNLIMITED
DEFAULT CPU_PER_CALL KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED
DEFAULT IDLE_TIME KERNEL UNLIMITED
DEFAULT CONNECT_TIME KERNEL UNLIMITED
DEFAULT PRIVATE_SGA KERNEL UNLIMITED
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMIT

4.2 创建Profile

创建profile,命令如下

CREATE PROFILE profile_name
LIMIT { resource_parameters
         | password_parameters
         }
           [ resource_parameters
           | password_parameters
           ]... ;

profile分配给⽤户,命令如下

alter user user_name profile profile_name;

4.3 Profile 练习

(1) 创建⼀个⽤户u1

  SQL> show user;
  SQL> create user u1 identified by u1;
  SQL> grant create session to u1;

(2) 创建profile为p1⽤来限制⽤户尝试登陆失败2次后会被锁

  SQL> create profile p1 limit FAILED_LOGIN_ATTEMPTS 2;

(3)把创建的p1分配给u1

  SQL> alter user u1 profile p1;
  SQL> select * from dbausers;

(4)尝试验证

SQL> select USERNAME,ACCOUNT_STATUS,LOCK_DATE,PROFILE from
_dba_users where username='U1';
USERNAME ACCOUNT_STATUS LOCK_DATE PROFILE
---------- -------------------------------- ---------
U1 OPEN P1
SQL> conn u1/a1;
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE;

(5)解决办法:第⼀种可以等Password_lock_time参数设定的天数过了之后⾃动解锁,第⼆种需要管理员帮助,为⽤户解锁,在此选择第⼆种方法求职管理员。

SQL> show user;
  USER is "SYS"
SQL> alter user u1 account unlock identified by u1;
SQL> conn u1/u1;
SQL> show user;
USER is "U1

5. ROLE角色

⻆⾊是⼀组权限的集合,将⻆⾊赋给⼀个⽤户,这个⽤户就拥有了这个⻆⾊中的所有权限。

预定义⻆⾊是在数据库安装后,系统⾃动创建的⼀些常⽤的⻆⾊。简单的介绍⼀下这些预定⻆⾊。⻆⾊所包含的权限可以⽤以下语句查询

sql>select * from role_sys_privs where role='⻆⾊名';
  1. CONNECT, RESOURCE, DBA
    这些预定义⻆⾊主要是为了向后兼容。其主要是⽤于数据库管理。oracle建议⽤户⾃⼰设计数据库管理和
    安全的权限规划,⽽不要简单的使⽤这些预定⻆⾊。将来的版本中这些⻆⾊可能不会作为预定义⻆⾊。

  2. DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE
    这些⻆⾊主要⽤于访问数据字典视图和包。

  3. EXP_FULL_DATABASE, IMP_FULL_DATABASE
    这两个⻆⾊⽤于数据导⼊导出⼯具的使⽤。

  4. RECOVERY_CATALOG_OWNER
    ⽤于创建拥有恢复库的⽤户。关于恢复库的信息;

5.1 例子

  1. 建⼀个⻆⾊
sql>create role role01;
  1. 授权给⻆⾊
sql>grant select any table,create view to role01;

3.授予⻆⾊给⽤户

sql>grant role01 to user1;
  1. 查看⻆⾊所包含的权限
sql>select * from role_sys_privs;
  1. 创建带有⼝令以⻆⾊(在⽣效带有⼝令的⻆⾊时必须提供⼝令)
sql>create role role01 identified by password1;
  1. 修改⻆⾊:是否需要⼝令
sql>alter role role01 not identified;
sql>alter role role01 identified by password1;

5.2 删除ROLE

sql>drop role role1;

⻆⾊删除后,原来拥⽤该⻆⾊的⽤户就不再拥有该⻆⾊了,相应的权限也就没有了。

  • ⽆法使⽤WITH GRANT OPTION为⻆⾊授予对象权限
  • 可以使⽤WITH ADMIN OPTION 为⻆⾊授予系统权限,取消时不是级联

6. 删除用户

SQL>drop user ⽤户名; //⽤户没有建任何实体
SQL> drop user ⽤户名 CASCADE; // 将⽤户及其所建全部对象都删除
当前正连接的⽤户不得删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值