Oracle 账户管理

    xiaoxiao2022-07-03  171

    文章目录

    1. 数据库用户2. 创建用户2.1 查看用户信息2.2 修改用户信息2.3 预定义账户:SYS和SYSTEM 3. 权限3.2 系统权限的传递3.3 权限的回收3.4 对象权限3.4.1 对象权限分类3.4.2 对象权限相关数据字典3.4.3 对象权限的传递3.4.4 对象权限的回收 4. Profile4.1 查看Profile4.2 创建Profile4.3 Profile 练习 5. ROLE角色5.1 例子5.2 删除ROLE 6. 删除用户

    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. 权限

    用户权限有两类:

    (1)、系统:允许用户在数据库中执行特定的操作 (2)、对象:运用用户访问和操作特定的对象 系统权限只能由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 对象权限分类

    selectupdateinsertalterindexdeleteallexecute

    用法: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 对象权限相关数据字典

    用户可以查询的表

    SQL> select owner, table_name from dba_tables;

    用户创建的表

    SQL> select table_name from dba_tables;

    用户创建的表

    SQL> select grantor, table_schema, table_name, privilege from dba_tab_privs;

    授出权限的表(授出的权限)

    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 这两个角色用于数据导入导出工具的使用

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

    5.1 例子

    建一个角色

    sql>create role role01;

    授权给⻆色

    sql>grant select any table,create view to role01;

    授予角色给用户

    sql>grant role01 to user1;

    查看角色所包含的权限

    sql>select * from role_sys_privs;

    创建带有命令以角色(在有效带有命令的⻆色时必须提供命令)

    sql>create role role01 identified by password1;

    修改角色:是否需要命令

    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)