目录
plsql中创建新用户有两种方式:
创建用户并通过sql相关语句授权
创建角色,并将角色赋给创建的用户
1.1创建用户并通过sql相关语句授予权限
-- 创建用户 user_custom 并设置密码
CREATE USER user_custom IDENTIFIED BY user_custom_password;
-- 授予基本系统权限
GRANT CREATE SESSION TO user_custom; -- 允许用户登录数据库
GRANT CREATE TABLE TO user_custom; -- 允许用户创建表
GRANT DROP TABLE TO user_custom; -- 允许用户删除表
GRANT CREATE VIEW TO user_custom; -- 允许用户创建视图
GRANT CREATE PROCEDURE TO user_custom; -- 允许用户创建存储过程
GRANT ALTER ANY TABLE TO user_custom; -- 允许用户修改任意表
GRANT SELECT ANY TABLE TO user_custom; -- 允许用户查询任意表
GRANT INSERT ANY TABLE TO user_custom; -- 允许用户插入数据到任意表
GRANT UPDATE ANY TABLE TO user_custom; -- 允许用户更新任意表的数据
GRANT DELETE ANY TABLE TO user_custom; -- 允许用户删除任意表的数据
GRANT EXECUTE ANY PROCEDURE TO user_custom; -- 允许用户执行任意存储过程
-- 可选:授予表空间使用权限
GRANT UNLIMITED TABLESPACE TO user_custom;
1.2删除用户
-- 如果用户没有拥有对象,可以直接删除用户
DROP USER user_custom;
-- 如果用户拥有数据库对象(如表、视图等),使用 CASCADE 删除用户及其对象
DROP USER user_custom CASCADE;
1.3撤销用户权限
-- 撤销用户登录数据库的权限
REVOKE CREATE SESSION FROM user_custom;
-- 撤销用户创建表的权限
REVOKE CREATE TABLE FROM user_custom;
-- 撤销用户删除表的权限
REVOKE DROP TABLE FROM user_custom;
-- 撤销用户创建视图的权限
REVOKE CREATE VIEW FROM user_custom;
-- 撤销用户创建存储过程的权限
REVOKE CREATE PROCEDURE FROM user_custom;
-- 撤销用户修改任意表的权限
REVOKE ALTER ANY TABLE FROM user_custom;
-- 撤销用户查询任意表的权限
REVOKE SELECT ANY TABLE FROM user_custom;
-- 撤销用户插入任意表数据的权限
REVOKE INSERT ANY TABLE FROM user_custom;
-- 撤销用户更新任意表数据的权限
REVOKE UPDATE ANY TABLE FROM user_custom;
-- 撤销用户删除任意表数据的权限
REVOKE DELETE ANY TABLE FROM user_custom;
-- 撤销用户执行任意存储过程的权限
REVOKE EXECUTE ANY PROCEDURE FROM user_custom;
--撤销用户的 CONNECT 权限(即登录数据库的权限)
REVOKE CONNECT FROM user_custom;
-- 可选:撤销表空间使用权限
REVOKE UNLIMITED TABLESPACE FROM user_custom;
1.4查看用户权限
-- 查看用户的系统权限
SELECT * FROM DBA_SYS_PRIVS WHERE grantee = UPPER('user_custom');
-- 查看用户的角色权限
SELECT * FROM DBA_ROLE_PRIVS WHERE grantee = UPPER('user_custom');
-- 查看用户的对象权限(如表、视图等)
SELECT * FROM DBA_TAB_PRIVS WHERE grantee = UPPER('user_custom');
2.1创建【角色】并将角色赋给创建的用户
什么是角色:
角色是一组权限的集合,它被用来简化权限管理。
例如:当需要创建使用相同权限的多个用户时,为简化操作,可以先创建一个角色,将权限赋给角色,再将角色赋给不同的用户
dba角色:
是一个超级用户角色,它包含了几乎所有的系统权限,包括但不限于以下权限:
- 用户管理:创建、修改和删除用户,分配或撤销权限。
- 数据库对象管理:创建、修改、删除数据库中的表、视图、索引、存储过程等对象。
- 系统管理:管理数据库实例、启动和关闭数据库、备份和恢复数据库。
- 表空间管理:创建、修改和删除表空间,以及分配表空间配额给用户。
- 执行 SQL 语句:执行所有类型的 SQL 操作,包括查询、插入、更新、删除等。
-- 创建用户 user_dba 并设置密码
CREATE USER user_dba IDENTIFIED BY user_dba_password;
-- 授予 DBA 角色,赋予用户所有权限
GRANT DBA TO user_dba;
-- 可选:授予表空间使用权限(防止表空间配额限制)
GRANT UNLIMITED TABLESPACE TO user_dba;
2.2删除用户:同上
2.3创建角色\并给角色赋予权限:
-- 创建一个名为 "admin_role" 的角色
CREATE ROLE admin_role;
-- 授予角色基本系统权限和对象权限
GRANT CREATE SESSION, CREATE TABLE, DROP TABLE TO admin_role;
-- 授予角色创建表的权限
GRANT CREATE TABLE TO developer_role;
-- 授予角色插入任意表的权限
GRANT INSERT ANY TABLE TO developer_role;
-- 授予角色查询任意表的权限
GRANT SELECT ANY TABLE TO developer_role;
-- 授予角色高级权限,例如 "DBA"
GRANT DBA TO admin_role;
2.4删除角色\撤销角色权限:
-- 删除 "admin_role" 角色
DROP ROLE admin_role;
-- 从角色中撤销创建表的权限
REVOKE CREATE TABLE FROM developer_role;
2.5查看用户权限:同上
总结:
- 方式 1:直接授予用户权限:适合单个用户或者需要为每个用户单独配置权限的场景。
- 方式 2:通过角色管理权限:适合有多个用户共享相同权限的场景,通过角色简化权限管理。