ORACLE 用户权限管理
发布日期:2021-05-08 20:09:47 浏览次数:28 分类:精选文章

本文共 3140 字,大约阅读时间需要 10 分钟。

Oracle 数据库操作指南

系统验证

在 Oracle 数据库中,操作系统验证是一种常用的身份验证方式。以下是操作系统验证的基本步骤:

开启操作系统验证

  • 将用户加入 dba
    usermod -G dba chaicheng
  • 配置 sqlnet.ora 文件
    • 在 Linux 系统中,设置如下:
      SQLNET.AUTHENTICATION_SERVICES= (ALL)
    • 在 Windows 系统中,设置如下:
      SQLNET.AUTHENTICATION_SERVICES= (NTS)
  • 使用操作系统验证登录

    • 无需密码验证即可登录
      sqlplus "/ as sysdba"
    • 带有密码验证但密码错误也可登录
      sqlplus "sys/sys as sysdba"  # sys 密码错误sqlplus "scott/sdf as sysdba"  # scott 密码错误

    关闭操作系统验证

  • 移除用户从 dba
    gpasswd -d chaicheng dba
  • 禁用操作系统验证
    SQLNET.AUTHENTICATION_SERVICES= (NONE)
  • 口令文件验证

    开启口令文件验证

  • 创建口令文件
    orapwd file=$ORACLE_HOME/dbspwdtest.ora password=admin entries=5
  • 按命名规范生成文件
    文件名格式为 orapw + SID
  • 参数说明

    • remote_login_passwordfile 参数
      • exclusive:仅限于一个数据库使用一个口令文件。
      • shared:多个数据库共享一个口令文件。
    • ora_dba
      如果启用了 remote_login_passwordfile=exclusive,且用户属于 ora_dba 组,则仍可使用操作系统验证登录。

    重启数据库后的处理

    • SYS 用户自动加入口令文件
      重启数据库后,SYS 用户会被自动添加到口令文件中。
    • 手动添加系统用户
      Grant sysdba to system;

      重启数据库后,系统用户会出现在口令文件中。

    忘记SYS口令的解决方法

  • 使用操作系统验证登录
    sqlplus "/ as sysdba"  # 修改SYS口令Alter user sys identified by sys;
  • 删除口令文件并重新生成
    rm $ORACLE_HOME/dbspwdtest.oraorapwd file=$ORACLE_HOME/dbspwdtest.ora password=sys entries=5
  • 权利查询

    查询用户权限

    • 查询用户角色
      SELECT grantee, granted_role FROM dba_role_privs WHERE grantee='HR';
    • 查询用户系统权限
      SELECT grantee, privilege FROM dba_sys_privs WHERE grantee='HR';
    • 查询用户对象权限
      SELECT GRANTEE, OWNER, TABLE_NAME, PRIVILEGE FROM dba_tab_privs WHERE grantee='HR';

    查询角色权限

    • 查询角色对象权限
      SELECT * FROM role_tab_privs WHERE role='AA';
    • 查询角色系统权限
      SELECT privilege FROM role_sys_privs WHERE role='RESOURCE';
    • 查询角色包含的角色
      SELECT granted_role FROM role_role_privs WHERE role='SYSDBA';

    查看用户在特定表上的权限

    SELECT GRANTEE, OWNER, TABLE_NAME, GRANTOR, PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE='BI' AND TABLE_NAME='PROMOTIONS';

    给予特定权限

    Grant create session, select_catalog_role to hr;

    用户表空间限额

    查询用户限额

    • 查询单个用户限额
      SELECT * FROM user_ts_quotas;
    • 查询所有用户限额
      SELECT * FROM dba_ts_quotas;

    表空间限额控制

    • 全局限制
      Grant unlimited tablespace to hr;
    • 特定表空间限制
      Alter user hr quota unlimited on USERS;

    伪删除限额

    Revoke unlimited tablespace from hr;

    帐户解锁

    SQL 命令

    Alter user hr account unlock identified by oracle;
    Alter user bi identified by oracle account unlock;

    Oracle 密码复杂度设置

    启用密码复杂度验证

    @?/rdbms/admin/utlpwdmg.sql

    密码复杂度规则

  • 命名规则
    • 密码区分大小写。
    • 密码长度 8-30 个字符。
    • 密码不能是用户名、倒序用户名或用户名后缀。
    • 密码不能与服务器名称或服务器名称后缀相同。
    • 密码不能过于简单。
    • 密码不能是 oracle 或其后缀。
    • 密码必须包含数字和字母。
    • 新密码与旧密码至少有 3 个字符不同。
    • 密码有效期 180 天,延长期 7 天。
    • 连续输入错误密码 10 次后锁定用户。
  • 关闭密码复杂度验证

    Alter profile p1 limit password_verify_function null;

    修改密码参数

    Alter PROFILE DEFAULT LIMITFAILED_LOGIN_ATTEMPTS 3PASSWORD_LOCK_TIME 1/1440PASSWORD_LIFE_TIME UNLIMITEDPASSWORD_GRACE_TIME 10PASSWORD_REUSE_TIME 1800PASSWORD_REUSE_MAX UNLIMITEDPASSWORD_VERIFY_FUNCTION verify_function;

    修改用户密码过期

    查看密码生命周期

    SELECT username, PROFILE FROM dba_users WHERE username='OE';
    SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

    修改密码生命周期

    Alter profile DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

    重置过期密码

    Alter user webws account unlock identified by webws;

    延长密码生命周期

  • 创建新Profile
    create profile aaa limit password_life_time 30 password_grace_time 0;
  • 修改用户Profile
    Alter user zjk profile aaa;
  • 查询新Profile
    SELECT * FROM dba_profiles WHERE profile LIKE 'A%';
  • 通过以上步骤,可以全面了解和操作 Oracle 数据库的相关功能。

    上一篇:Fatal NI connect error 12547, connecting to: (LOCAL=NO)
    下一篇:ORACLE 10.2.0.5升级11.2.0.4

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2025年04月12日 11时33分15秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章