Oracle用户角色权限等操作
Oracle中常用查询用户、角色、权限等SQL

Oracle中常⽤查询⽤户、⾓⾊、权限等SQL连带表间的外键关系⼀起删除所有某个⽤户下的所有表:SELECT 'DROP TABLE '||TNAME||' CASCADE CONSTRAINT ;' FROM DBA_OBJECTS FROM DBA_OBJECTS WHEREOWNER='YOUR_USER' AND OBJECT_TYPE='TABLE'然后将选出的结果粘贴到SQLPLUS⾥执⾏1.查看所有⽤户:select * from dba_users;select * from all_users;select * from user_users;2.查看⽤户或⾓⾊系统权限(直接赋值给⽤户或⾓⾊的系统权限):select * from dba_sys_privs;select * from user_sys_privs; (查看当前⽤户所拥有的权限)3.查看⾓⾊(只能查看登陆⽤户拥有的⾓⾊)所包含的权限sql>select * from role_sys_privs;4.查看⽤户对象权限:select * from dba_tab_privs;select * from all_tab_privs;select * from user_tab_privs;5.查看所有⾓⾊: select * from dba_roles;6.查看⽤户或⾓⾊所拥有的⾓⾊:select * from dba_role_privs;select * from user_role_privs;7.查看哪些⽤户有sysdba或sysoper系统权限(查询时需要相应权限)select * from V$PWFILE_USERS8.SqlPlus中查看⼀个⽤户所拥有权限SQL>select * from dba_sys_privs where grantee='username'; 其中的username即⽤户名要⼤写才⾏。
oracle数据库管理人员权限设置及分配表

一、概述Oracle数据库是当前企业中常用的数据库管理系统之一,而数据库管理人员在企业中扮演着至关重要的角色,他们负责数据库的管理与维护,包括权限设置与分配。
本文将探讨Oracle数据库管理人员权限设置及分配表的相关内容。
二、数据库管理员的权限1. 数据库管理员(DBA)是Oracle数据库中最高权限的用户,具有对数据库进行全面控制的特权。
他们可以创建、修改、删除数据库对象,分配SQL权限,管理数据库用户和角色等。
2. DBA用户的权限通常由系统管理员在安装数据库时创建,或是通过GRANT命令授予。
3. DBA用户可以通过GRANT和REVOKE命令控制其他用户的权限,以及管理数据库对象的安全性。
三、数据库操作员的权限1. 数据库操作员(DBO)是在数据库中具有一定权限的用户,通常负责对数据库进行日常操作。
2. DBO用户可以执行SELECT、INSERT、UPDATE、DELETE等操作,并且可以创建临时表和视图。
3. DBO用户的权限通常由DBA用户通过GRANT命令分配,可以根据需要灵活控制其权限范围。
四、权限设置的最佳实践1. 了解业务需求:在设置数据库用户的权限之前,需要充分了解企业的业务需求,确保每个用户都能够在权限范围内完成工作。
2. 分配最小权限原则:根据最小权限原则,应该仅分配用户所需的最低权限,以降低数据泄露和操作错误的风险。
3. 定期审计权限:定期对数据库用户的权限进行审计,及时发现和修复不合理的权限设置,保障数据库的安全性。
五、权限分配表的编制数据库管理人员需要编制一份权限分配表,清晰地记录每个用户的权限范围,确保权限设置的合理性与一致性。
权限分配表通常包括以下内容:1. 用户名称:列出数据库中所有的用户名称。
2. 权限说明:对用户的权限进行详细说明,包括SELECT、INSERT、UPDATE、DELETE等操作的权限范围。
3. 是否受限:记录是否对用户的权限进行了限制,比如是否禁止用户执行DROP TABLE等危险操作。
oracle 查看用户、权限、角色

查看用户、权限、角色的命令和视图a1.查看所有用户:select * from dba_users;select * from all_users;select * from user_users;2.查看用户系统权限:select * from dba_sys_privs;select * from session_privs;select * from user_sys_privs;3.查看用户对象权限:select * from dba_tab_privs;select * from all_tab_privs;select * from user_tab_privs;4.查看所有角色:select * from dba_roles;5.查看用户所拥有的角色:select * from dba_role_privs;select * from user_role_privs;b概述与权限,角色相关的视图大概有下面这些:DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限USER_SYS_PRIVS: 查询当前用户所拥有的系统权限SESSION_PRIVS: 查询当前用户所拥有的全部权限ROLE_SYS_PRIVS:查询某个角色所拥有的系统权限注意: 要以SYS用户登陆查询这个视图,否则返回空.ROLE_ROLE_PRIVS: 当前角色被赋予的角色SESSION_ROLES: 当前用户被激活的角色USER_ROLE_PRIVS: 当前用户被授予的角色另外还有针对表的访问权限的视图:TABLE_PRIVILEGESALL_TAB_PRIVSROLE_TAB_PRIVS: 某个角色被赋予的相关表的权限oracle与用户角色权限相关的视图Oracle 本身的数据字典设计我个人觉得很合理, 因为DBA_xxx, ALL_xxx,USER_xxx 让人一看大概就知道这个视图是干什么用的. 本文简要总结了一下与权限,角色相关的视图.一. 概述与权限,角色相关的视图大概有下面这些:1、DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限。
oracle赋dba权限

oracle赋dba权限如何给Oracle数据库用户赋予DBA权限Oracle数据库的DBA(Database Administrator)权限是指最高级别的数据库管理权限,具有该权限的用户可以对数据库进行全面的管理和控制。
在某些情况下,给予用户DBA权限是必要的,例如需要进行数据库维护、性能优化或者进行一些故障排除等任务。
下面将详细介绍如何给Oracle数据库用户赋予DBA权限的步骤。
1. 连接到Oracle数据库首先,使用管理员账号连接到Oracle数据库。
这个管理员账号通常是sys 或system用户,拥有sysdba权限。
连接到Oracle数据库的命令可以使用SQL*Plus工具或者命令行界面。
例如,在Windows系统上可以使用以下命令连接到数据库:sqlplus / as sysdba2. 创建新的数据库用户接下来,需要创建一个新的数据库用户来赋予DBA权限。
使用以下SQL 语句创建一个新用户,例如,创建一个名为new_user的用户:SQL> CREATE USER new_user IDENTIFIED BY password;在这里,new_user是新用户的用户名,password是新用户的密码。
3. 授权DBA权限接下来,使用以下SQL命令将DBA角色授予新用户:SQL> GRANT DBA TO new_user;这个命令将DBA角色授予新创建的用户,使其具有DBA权限。
4. 验证DBA权限为了验证新用户是否已成功获得DBA权限,可以先注销当前的数据库连接,然后使用新用户重新连接到数据库。
使用以下命令重新连接到数据库:sqlplus new_user/password as sysdba连接成功后,可以使用以下命令查询用户的权限:SQL> SELECT * FROM session_privs;这个查询将会显示新用户所具有的权限列表,其中应该包含DBA权限。
Oracle创建用户、角色、授权、建表

Oracle创建⽤户、⾓⾊、授权、建表Oracle创建⽤户、⾓⾊、授权、建表Devin01213 2019-05-16 10:21:49 21510 收藏 32分类专栏: Oracle版权oracle数据库的权限系统分为系统权限与对象权限。
系统权限( database system privilege )可以让⽤户执⾏特定的命令集。
例如,create table权限允许⽤户创建表,grant any privilege 权限允许⽤户授予任何系统权限。
对象权限( database object privilege )可以让⽤户能够对各个对象进⾏某些操作。
例如delete权限允许⽤户删除表或视图的⾏,select权限允许⽤户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。
每个oracle⽤户都有⼀个名字和⼝令,并拥有⼀些由其创建的表、视图和其他资源。
oracle⾓⾊(role)就是⼀组权限(privilege)(或者是每个⽤户根据其状态和条件所需的访问类型)。
⽤户可以给⾓⾊授予或赋予指定的权限,然后将⾓⾊赋给相应的⽤户。
⼀个⽤户也可以直接给其他⽤户授权。
⼀、登录sqlplus sys/sys as sysdba;1、创建⽤户create user test identified by test;这样就创建了⼀个⽤户名密码都为test的⽤户但这个时候test还是不能登陆成功的,我们需要赋予相应的权限2、赋予create session 的权限grant create session to test;这样test⽤户就能成功登录进去赋予⽤户创建表的权限grant create table to test;赋予相应的权限grant unlimited tablespace to test;这个时候⽤户就拥有了创建表的权限由于表是⽤户test的,相应的他就拥有了对创建的表的增删查改的权限了3、撤销权限revoke create table from test;⼆、删除⽤户drop user ⽤户名;若⽤户拥有对象,则不能直接删除,否则将返回⼀个错误值。
oracle19c之用户、权限、表空间

oracle19c之⽤户、权限、表空间 ⼀、⽤户相关操作 1、查询⽤户select * from dba_users; --查询全库所有的⽤户select * from all_users; --查询当前⽤户可看到的⽤户select * from user_users; --查询当前登录的⽤户 2、创建⽤户(创建者需要有dba权限,⽤户名必须以c##开头,默认的表空间是users,新⽤户没有任何权限。
)create user c##sl IDENTIFIED BY 123456; 3、删除⽤户drop user c##sl2 cascade; --删除⽤户不会删除其表空间 注意:⽆法删除⽤户C##SL3,报错“[Err] ORA-01940: ⽆法删除当前连接“的⽤户解决⽅法:select username,sid,serial#,paddr from v$session where username='C##SL3';alter system kill session '17,55857'; 4、修改密码alter user c##sl3 identified by 1234; ⼆、权限相关操作 a、系统权限:⽤户在系统层⾯的权限,如CREATE SESSION、SELECT ANY TABLE等不依赖于对象的权限 b、对象权限:⽤户关于某个具体对象的权限,如SELECT、UPDATE、INSERT等依赖于表、视图、存储过程的权限 c、⾓⾊:⼀组权限的集合 注意:PUBLIC⽤户具有的权限,其他⽤户都会有,即修改PUBLIC⽤户的权限,其他⽤户也会对应得改变权限 1、查看权限、⾓⾊select * from user_tab_privs; --当前⽤户具有的对象权限select * from dba_tab_privs WHERE grantee='C##SL' OR grantor='C##SL'; --全部⽤户具有的对象权限,查询C##SL⽤户的select * from user_sys_privs; --当前⽤户具有的系统权限select * from dba_sys_privs WHERE grantee='C##SL'; --全部⽤户具有的系统权限,查询C##SL⽤户的SELECT * FROM user_role_privs; --当前⽤户具有的⾓⾊SELECT * FROM dba_role_privs where grantee='C##SL'; --全部⽤户具有的⾓⾊,查询C##SL⽤户的 注意:上⾯每⼀对查询出的结果应该⼀样,因为全部⽤户中肯定也包含当前⽤户,普通⽤户没有查询全部⽤户⾓⾊、权限表的权限 2、常⽤权限、⾓⾊dba 管理员⾓⾊connect 连接数据库⾓⾊,能修改、删除表及数据,不能创建表resource 能创建表create session 连接数据库权限create table 建表权限unlimited tablespace 操作表空间权限select any table 查询任何表的权限select on c##test.book 查询c##test⽤户的book表的权限 说明: a、⼀般来说,新建的普通⽤户后授予connect和resource⾓⾊就好了、如果是管理员需要再授予dba⾓⾊。
Oracle用户

Oracle用户SQL> select * from dba_ts_quotas; 查看dba不受配额限制1.预定义角色CONNECT, RESOURCE, DBADBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE(资源):拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,SQL> grant dba to scott;SQL> revoke dba from scott;(回收角色)查询用户拥有哪里权限select * from dba_role_privs;(查看哪个用户创建的角色)select * from dba_sys_privs; (查看用户权限)select * from role_sys_privs;(查看角色中的权限)2.实体权限select, update, insert, alter, index, delete, all3.自建立角色SQL> create role role1;给角色赋权限(创建表和创建储存过程)SQL> grant create any table,create procedure to role1;把角色赋予用户SQL> grant role1 to scott;删除角色SQL> drop role role1;Oracle默认可以不用验证就可以登录sysdba数据库我们修改$ORACLE_HOME/network/admin/sqlnet.ora文件修改此语句(NTS)SQLNET.AUTHENTICATION_SERVICES=(none)Oracle的TEST密码文件$ORACLE_HOME/dbs/orapwTEST#orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=123456 force=yOracle索引提升数据库性能最常用最有效的手段针对不同的环境使用不同的索引来提升系统性能认识索引的正面与反面影响灵活的索引管理便于我们在实际工作中解决实际问题分类B树索引普通索引函数索引问题1:表什么情况下创建索引答:提高读的速度问题2:表中什么样的列创建索引答:唯一性高;尽量可能排序;数据量大;位图索引(mysql中没有它)把相同的列值分组存放,锁数据锁一组数据;B树数据锁一条。
用户、权限与角色.ppt

CREATE USER 用户名 IDENTIFIED BY 口令 [DEFAULT TABLESPACE 表空间名] [TEMPORARY TABLESPACE 表空间名] [PASSWORD EXPIRE] [ACCOUNT {LOCK | UNLOCK}]
• 用户名 •口令 •临时表空间 •默认表空间 •密码过期 •账户加锁
库,但可以进行其他一些管理工作,如创建用户、删除用户等。 (3)SCOTT:是一个用于测试网络连接的用户,其口令是tiger; (4)PUBLIC:实质上是一个用户组,数据库中任何一个用户都属
于该组成员。如果要为数据库中每个用户都授予某个权限,只需 把权限授予PUBLIC就可以了。
8.1.1 创建和修改用户
【例8-1】 建立一个USER1用户,密码为USER1。该用户 口令没有到期,账号也没有被锁住,默认表空间为USERS, 在该表空间的配额为10MB。
SQL>CREATE USER USER1
IDENTIFIED BY USER1
DEFAULT TABLESPACE USERS
QUOTA 10M ON USERS
【例8-4】删除USER1用户。 SQL>DROP USER USER1;
注意: 一个当前连接到Oracle服务器的用户是不 能被删除的。
8.1.3 查询用户信息
可通过查询数据字典视图或动态性能视图来获取用户信息。 (1)ALL_USERS:包含数据库所有用户的用户名、用户ID和
用户创建时间。 (2)DBA_USERS:包含数据库所有用户的详细信息。 (3)USER_USERS:包含当前用户的详细信息。 (4)V$SESSION:包含用户会话信息。 (5)V$OPEN_CURSOR:包含用户执行的SQL语句信息。 普通用户只能查询USER_USERS数据字典,只有拥有DBA
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
oracle 赋予权限转发评论02月21日13:00最基础的sqlplus username/password@[sid] 连接数据库sqlplus username/password as sysdba 以管理员连接数据库管理员连接后创建用户sqlplus system/manager@demo as sysdba create user abc identified by abc ; 创建用户abc密码为abcgrant all privileges to abc; 给abc用户赋予所有的权限给自己留个备份以备不时之需oracle grant授权语句--select * from dba_users; 查询数据库中的所有用户--alter user USERNAME account lock; 锁住用户--alter user USERNAME account unlock; 给用户解锁--create user USERNAME identified by USERPASS; 建立用户一般创建用户后需要授予链接数据库权限grant connect,resource to USERNAME;--grant create tablespace to USERNAME; 授权创建表空间--grant SELECT on TABLENAME to USERNAME; 授权查询授权其他动作格式相同如果要把所有表的查询权限分配给用户可以用这样的grant select any table to USERNAME;--grant execute on procedure1 to xujin 授权存储过程--grant UPDATE on TABLENAME to USERNAME with grant option; 授权更新权限转移给xujin用户,许进用户可以继续授权;--收回权限--revoke select on table1 from xujin1; 收回查询select表的权限;--revoke all on table1 from xujin;/*grant connect to xujin;revoke connect from xujingrant select on xezf.cfg_alarm to xujin;revoke select on xezf.cfg_alarm from xujin;*/--select table_name,privilege from dba_tab_privs where grantee='xujin' 查询一个用户拥有的对象权限--select * from dba_sys_privs where grantee='xujin' 查询一个用户拥有的系统权限--select * from session_privs --当钱会话有效的系统权限--角色--create role xujin1;--建立xujin1角色--grant insert on xezf.cfg_alarm to xujin1; 将插入表的信息--revoke insert on xezf.cfg_alarm from xujin1; 收回xujin1角色的权限--grant xujin1 to xujin ; 将角色的权限授权给xujin;-- create role xujin2;--grant xujin1 to xujin2; 将角色xujin1授权给xujin2;--alter user xujin default xujin1,xujin2; 修改用户默认角色-- DROP ROLE xujin1;删除角色1;--select * from role_sys_privs where role=xujin1;--查看许进1角色下有什么系统权限;--select granted_role,admin_option from role_role_privs where role='xujin2'--查看xujin1角色下面有什么角色权限--select * from role_sys_privs where role='xujin2'--select table_name,privilege from role_tab_privs where role='xujin1'--select * from dba_role_privs where grantee='xujin' --查看用户下面有多少个角色;======================详解=========================GRANT名称GRANT -- 赋予访问权限语法GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] }ON [ TABLE ] tablename [, ...]TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]GRANT { { USAGE | SELECT | UPDATE }[,...] | ALL [ PRIVILEGES ] }ON SEQUENCE sequencename [, ...]TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE dbname [, ...]TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]GRANT { EXECUTE | ALL [ PRIVILEGES ] }ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]GRANT { USAGE | ALL [ PRIVILEGES ] }ON LANGUAGE langname [, ...]TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }ON SCHEMA schemaname [, ...]TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]GRANT { CREATE | ALL [ PRIVILEGES ] }ON TABLESPACE tablespacename [, ...]TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]GRANT role [, ...] TO username [, ...] [ WITH ADMIN OPTION ]描述GRANT命令有两个基本变种:一个变种是给数据库对象(表、视图、序列、数据库、函数、过程语言、模式、表空间)赋予权限;一个变种是赋予一个角色中的成员关系。
这些变种在很多方面都非常类似,但是它们之间的区别也有足够理由来分开描述。
到了PostgreSQL 8.1,用户和组的概念已经统一成一类对象,叫角色。
因此就没有必要使用关键字GROUP来标识一个授予者是用户还是组。
GROUP仍然可以在命令中使用,但只是一个多余的词而已。
在数据库对象上的GRANT这个变种的GRANT命令在数据库对象上给一个或多个角色授予特定的权限。
这些权限追加到已经授予的权限上。
关键字PUBLIC表示该权限要赋予所有角色,包括那些以后可能创建的用户。
PUBLIC可以看做是一个隐含定义好的组,它总是包括所有角色。
任何特定的角色都将拥有直接赋予他/它的权限,加上他/它所处的任何组,以及再加上赋予PUBLIC的权限的总和。
如果声明了WITH GRANT OPTION,那么权限的接收者也可以将此权限赋予他人,否则就不能授权他人。
这个选项不能赋予PUBLIC对于对象的所有者(通常就是创建者)而言,没有什么权限需要赋予,因为所有者缺省就持有所有权限。
不过,所有者出于安全考虑可以选择废弃一些他自己的权限。
删除一个对象的权力,或者是任意修改它的权力都不是可赋予的权限;它是创建者固有的,并且不能赋予或撤销。
所有者也隐含地拥有该对象的所有授权选项。
根据对象的不同,初始的缺省权限包括一些赋予PUBLIC的权限:对于表、模式、表空间没有公开访问权限;对于数据库有CONNECT权限和创建TEMP表的权限;对于函数有EXECUTE权限;对于语言有USAGE权限。
对象所有者当然可以撤回这些权限。
出于最大安全性考虑,在创建该对象的同一个事务中发出REVOKE就不会打开给别的用户使用该对象的窗口。
可能的权限有:SELECT允许对声明的表、试图、序列SELECT任意字段。
还允许做COPY TO 的源。
对于序列而言,这个权限还允许使用de>currvalde> 函数。
INSERT允许向声明的表INSERT一个新行。
同时还允许做COPY FROMUPDATE允许对声明的表中任意字段做UPDATE。
SELECT ... FOR UPDATE和SELECT ... FOR SHARE也要求这个权限(除了SELECT权限之外)。
比如,这个权限允许使用de>nextvalde> 和de>setvalde> 函数。
DELETE允许从声明的表中DELETE行REFERENCES要创建一个外键约束,你必须在参考表和被参考表上都拥有这个权限。
TRIGGER允许在声明表上创建触发器(参见CREATE TRIGGER语句)CREATE对于数据库,允许在该数据库里创建新的模式。