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对于数据库,允许在该数据库里创建新的模式。