CentOS 上 SQL*Plus 权限设置详解
一 权限模型与前置检查
二 创建用户与基础授权
-- 1) 创建用户
CREATE USER appuser IDENTIFIED BY "App#2025";
-- 2) 指定默认与临时表空间(请使用你库里存在的表空间名)
ALTER USER appuser DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
-- 3) 配额(示例:USERS 表空间 100MB)
ALTER USER appuser QUOTA 100M ON users;
-- 4) 解锁(如创建时锁定)
ALTER USER appuser ACCOUNT UNLOCK;
-- 5) 授予登录与基础开发角色
GRANT CONNECT, RESOURCE TO appuser;
-- 6) 授予对象权限示例(将 SCOTT.EMP 的查询与更新授予 appuser)
GRANT SELECT, UPDATE ON scott.emp TO appuser;
-- 7) 按需授予建表等系统权限(谨慎)
-- GRANT CREATE TABLE TO appuser;
说明:CREATE USER、ALTER USER、GRANT 等为标准 DDL;CONNECT/RESOURCE 为常用预置角色;对象权限可按表粒度授予。
三 角色管理与可转授权限
-- 1) 创建角色(可按需设置口令)
CREATE ROLE app_role IDENTIFIED BY app_role_pwd;
-- 2) 给角色授予权限
GRANT CREATE TABLE TO app_role;
GRANT INSERT, DELETE ON scott.emp TO app_role;
-- 3) 将角色授予用户
GRANT app_role TO appuser;
-- 4) 设置默认角色(用户首次登录自动启用)
ALTER USER appuser DEFAULT ROLE app_role;
-- 5) 可转授与回收(WITH ADMIN/GRANT OPTION)
GRANT CREATE SESSION TO appuser WITH ADMIN OPTION; -- 允许 appuser 再授予 CREATE SESSION
GRANT SELECT, UPDATE ON scott.emp TO appuser WITH GRANT OPTION; -- 允许再授予对象权限
-- 回收示例
REVOKE CREATE SESSION FROM appuser;
REVOKE SELECT, UPDATE ON scott.emp FROM appuser;
-- 再按最小权限重新授予(不含 WITH ADMIN/GRANT OPTION)
GRANT CREATE SESSION TO appuser;
GRANT SELECT, UPDATE ON scott.emp TO appuser;
要点:WITH ADMIN OPTION 用于系统权限的可转授,WITH GRANT OPTION 用于对象权限的可转授;回收后需按最小权限原则重新授予。
四 常见场景与命令清单
GRANT CREATE SESSION TO app_r;
GRANT SELECT ON schema.table TO app_r;
GRANT SELECT, INSERT, UPDATE, DELETE ON schema.table TO app_rw;
GRANT CREATE TABLE TO app_dev;
-- 并给表空间配额
ALTER USER app_dev QUOTA 100M ON users;
ALTER USER scott ACCOUNT UNLOCK;
ALTER USER scott IDENTIFIED BY new_password;
REVOKE SELECT, INSERT, UPDATE, DELETE ON schema.table FROM app_rw;
REVOKE CREATE SESSION FROM app_r;
sqlplus app_r/app_r@//192.168.10.20:1521/orcl
以上命令覆盖常见的最小权限授予、对象级授权与回收、解锁与改密、以及远程连接写法。
五 安全与排错要点