首页主机资讯centos下sqlplus权限设置指南

centos下sqlplus权限设置指南

时间2025-12-15 22:57:03发布访客分类主机资讯浏览224
导读:CentOS 下 SQL*Plus 权限设置指南 一 环境准备与最小权限原则 以具备 DBA 权限的账户(如 SYS)通过 sqlplus / as sysdba 登录数据库,所有权限操作均在 SQL*Plus 内完成。 遵循最小权限原则...

CentOS 下 SQL*Plus 权限设置指南

一 环境准备与最小权限原则

  • 以具备 DBA 权限的账户(如 SYS)通过 sqlplus / as sysdba 登录数据库,所有权限操作均在 SQL*Plus 内完成。
  • 遵循最小权限原则:仅授予业务所需权限,避免滥用 ANY 权限与将权限授予 PUBLIC
  • 建议通过“角色”统一管理权限,便于审计与回收。
  • 常用系统权限包括:CREATE SESSION、CREATE TABLE、CREATE VIEW、CREATE SEQUENCE、CREATE TRIGGER;对象权限需针对具体表、视图、存储过程授予。
  • 登录与字符集建议:使用 sqlplus username/password@//host:1521/service 方式;必要时设置 NLS_LANG=AMERICAN_AMERICA.AL32UTF8 以避免显示乱码。

二 数据库侧权限配置步骤

    1. 创建用户与默认表空间
    • 创建表空间(示例:/u01/app/oradata/ORCL/users01.dbf
      CREATE TABLESPACE users_data
      DATAFILE '/u01/app/oradata/ORCL/users01.dbf' SIZE 500M
      AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
          
      
    • 创建用户并指定默认表空间与临时表空间
      CREATE USER app_user IDENTIFIED BY StrongPass_01
      DEFAULT TABLESPACE users_data
      TEMPORARY TABLESPACE temp;
          
      
    • 配额(按需)
      ALTER USER app_user QUOTA 100M ON users_data;
          
      
    1. 授予登录与基础开发权限(通过角色更便于维护)
    -- 方案A:使用内置角色(快速入门)
    GRANT CONNECT, RESOURCE TO app_user;
        
    
    -- 方案B:精细授权(推荐)
    GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE TRIGGER TO app_user;
        
    
    1. 授予对象权限(示例对 SCOTT.EMP
    -- 授予查询与更新,并允许转授
    GRANT SELECT, UPDATE ON SCOTT.EMP TO app_user WITH GRANT OPTION;
        
    
    -- 如确需跨用户建表等,才考虑(谨慎)
    -- GRANT CREATE ANY TABLE TO app_user;
        
    
    1. 使用角色进行批量授权与回收
    CREATE ROLE app_role;
        
    GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO app_role;
        
    GRANT app_role TO app_user;
        
    
    -- 回收示例
    REVOKE app_role FROM app_user;
        
    
    1. 撤销与变更
    -- 撤销对象权限
    REVOKE SELECT, UPDATE ON SCOTT.EMP FROM app_user;
        
    
    -- 解锁账户
    ALTER USER app_user ACCOUNT UNLOCK;
        
    
    -- 修改密码
    ALTER USER app_user IDENTIFIED BY NewPass_2025;
        
    
    1. 权限查看(便于审计)
    -- 当前用户拥有的系统权限
    SELECT * FROM USER_SYS_PRIVS;
        
    
    -- 当前用户对表的权限
    SELECT * FROM USER_TAB_PRIVS;
        
    
    -- DBA 视角(需 DBA 权限)
    SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'APP_USER';
        
    SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'APP_USER';
        
    
    1. 数据泵目录授权(导出/导入需要)
    -- 以 DBA 执行:创建 Oracle Directory 对象(指向服务器本地目录)
    CREATE OR REPLACE DIRECTORY expdp_dir AS '/u01/expdp';
        
    
    -- 授予读写
    GRANT READ, WRITE ON DIRECTORY expdp_dir TO app_user;
        
    
    -- 导出示例(在 OS 执行,非 SQL*Plus)
    -- expdp app_user/StrongPass_01 DIRECTORY=expdp_dir DUMPFILE=app_20251215.dmp LOGFILE=app_20251215.log
    
    1. 常见授权场景速查 | 场景 | 授权示例 | |—|—| | 只读某表 | GRANT SELECT ON schema.table TO app_user; | | 读写某表 | GRANT SELECT, INSERT, UPDATE, DELETE ON schema.table TO app_user; | | 执行某过程 | GRANT EXECUTE ON schema.proc TO app_user; | | 允许再授权 | 在 GRANT 语句末尾加 WITH GRANT OPTION(对象权限)或 WITH ADMIN OPTION(系统权限) | | 批量授权 | 先建 ROLE,集中授予,再把 ROLE 授予用户 |

三 OS 层与网络安全配置

  • 文件与目录权限:Oracle 数据文件、日志文件、备份目录(如 /u01)属 oracle:oinstall,权限 0750/0640;切勿以 root 运行 sqlplus
  • 客户端环境:如使用 Instant Client,设置环境变量(示例):
    export ORACLE_HOME=/opt/oracle/instantclient_21
    export LD_LIBRARY_PATH=$ORACLE_HOME
    export PATH=$ORACLE_HOME:$PATH
    
  • 防火墙与监听:开放数据库端口(默认 1521/TCP),确保监听正常;远程连接可用 tnspingtelnet host 1521 测试连通性。
  • 连接串建议:优先使用 //host:1521/service(EZConnect),减少本地 tnsnames.ora 维护成本。

四 常见报错与排查要点

  • ORA-01045: 用户无 CREATE SESSION 权限
    • 处理:GRANT CREATE SESSION TO ; 或使用包含该权限的角色(如 CONNECT/自定义角色)。
  • ORA-00942: 表或视图不存在
    • 处理:跨用户访问需加 schema 前缀(如 SCOTT.EMP),或授予相应对象权限。
  • ORA-01031: 权限不足
    • 处理:核对是否缺少对象权限或系统权限;必要时使用 WITH GRANT OPTION/ADMIN OPTION 进行授权传递(谨慎)。
  • ORA-01950: 对表空间无配额
    • 处理:ALTER USER QUOTA ON ;
  • 客户端启动失败或命令无响应
    • 处理:检查 ORACLE_HOME/LD_LIBRARY_PATH/PATH 是否正确;用完整路径执行;必要时用 tnspingtelnet 排查网络和监听。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos下sqlplus权限设置指南
本文地址: https://pptw.com/jishu/772170.html
centos中sqlplus连接超时怎么办 centos里sqlplus查询语句优化技巧

游客 回复需填写必要信息