系统运输
oracle权限管理
精英读到最后看备注
一:用户管理
1.1 :用户和模式
在oracle中,方案与用户一一对应。 一个架构由一个用户拥有,并且其名称必须与该用户相同。 用户访问其架构中的对象时不需要指定架构名称。 例如,当scott用户访问其EMP表时,SELECT * from emp不需要提供架构名称,而授权用户可以通过在对象名称之前提供架构名称来访问其他架构中的对象
1.2 :创建新用户
必须创建用户帐户才能连接到Oracle数据库。 每个用户都有默认表空间和临时表空间
具有创建用户权限的用户可以在数据库中创建新用户
col字段名称for a10 //控制此字段的长度
设置计时on//时间计时的下一步动作
创建用户语法:
创建用户user _ name
identified [ by userpwd|externally|]
[ defaulttablespacedefault _ tablespace ]
[ temporarytablespacetemp _ tablespace ]
[ quotasize|unlimitedontablespace _ name ]
[PASSWORD EXPIRE]
[帐户锁定|解除锁定]
//user_name要创建的数据库用户名不能与现有用户名重复
//IDENTIFIED用户指定如何验证数据库用户,password创建用户密码或密码验证方法,EXTERNALLY表示使用外部验证方法,GLOBALLY表示使用全局验证方法
//DEFAULT TABLESPACE指定创建用户的默认表空间,以后创建的对象存储在默认表空间中,默认表空间为USERS表空间。
//TEMPORARY TABLESPACE指定用户的临时表空间,如果在会话期间执行了超出PGA可用空间的操作,则使用临时表空间。 默认临时表空间为TEMP表空间。
//QUOTA限制用户在表空间中使用的存储空间大小。 默认表空间配额为0,用户不能使用任何空间保存对象或指定临时表空间配额。
//PASSWORD EXPIRE指定用户在第一次登录时更改密码
//ACCOUNT指定用户的锁定状态,默认值为unlock。
创建用户时,oracle数据库会自动创建具有相同名称的方案,并将用户创建的对象保存在该方案中。
创建用户user1并设置密码123。 其他默认值
查询dateabase_properties视图以查看数据库中当前的默认表空间和临时表空间
SELECT property_name,property _ valuefromdatabase _ properties
whereproperty_namelike\\\&; quot; 默认%\\ & amp; quot;
查询用户user1的默认表空间和临时表空间,并使用数据库的当前默认表空间和临时表空间
1.3创建表空间
createtablespacetestdatafile\\ & amp; quot; test.DBF\\&; quot; size10m; //创建表空间的test
createtemporarytablespacetest _ temp tempfile\\ & amp; quot; test_temp.DBF\\&; quot; size10m; //创建临时表空间test_temp
-创建用户user2并指定缺省表空间test、临时表空间test_temp和无配额。
创建用户用户2标识by 123
efaulttablespacetesttemporarytablespacetest _ temp
QUOTA UNLIMITED ON test;
用户user2可以使用表空间中任何大小的存储数据对象,并可以使用视图dba_ts_quota查看分配给用户的表空间配额的状态。 无法检测到记录,因为未分配user1。
1.4 :修改用户
语法:
—alter user user 1帐户锁定; //锁定用户user1
- alter useruser1passwordexpireaccountunlock; 解锁user1,并提示您在登录时更改密码
- alter useruser1defaulttablespacetest; //更改用户的默认表空间test
— ALTER user user1 QUOTA 5M ON test; //将用户user1的配额更改为5M
1.5 :删除用户
DOP useruser1[ cascade ]//删除user 1用户
//如果用户没有创建数据对象,可以直接删除。 如果用户创建了对象,要级联删除用户使用关键字cascade创建的数据对象,请删除数据,然后删除用户。 在用户登录时不能删除用户。 要强制删除,必须首先在视图V$SESSION中查询用户的会话ID等信息,然后使用ALTER SYSTEM KILL SESSION语句杀死当前用户的会话,最后使用DROP USER删除用户
1.6使用数据字典查询用户信息
1.//user_users :显示当前登录用户的详细信息,包括用户名、用户ID、帐户状态、默认表空间和临时表空间
2.//all_users :显示当前登录的用户可以访问的用户。 只包括用户名、用户ID和创建用户的时间
3.//dba_users :显示数据库中的所有用户信息,包括用户名、用户ID、帐户状态、口令、锁定日期、过期日期和默认表空间临时表空间。
2 :权限管理
在此视图中,可以找到所需的权限。
以SYSdba身份登录。 登录后的用户是SYS。 sys用户除了具有sysdba系统权限外,还具有DBA等角色的权限。 与具有sysdba系统权限有很大的不同,一般用户即使具有sysdba权限,也可能无法登录数据库。
2.1 )权限分为系统权限和对象权限两种
系统权限允许用户执行特定的数据库操作,如创建表
对象权限允许用户对数据库对象(如表、视图和序列)执行特定操作
2.2 )管理员授予普通用户权限
语法:
GRANT sys_priv[,sys_priv]
TO user[,user ]|role
[WITH ADMIN OPTION]
//sys_priv表示授予的系统权限,可以用逗号分隔同时授予多个系统权限
//user表示要向其授予系统权限的用户,role表示授予权限的角色,PUBLIC表示公共用户组,可以同时向多个用户授予系统权限。 之间请用逗号隔开。
//WITH ADMIN OPTION是否允许将授权用户获取的权限转让给其他用户。 默认情况下,不能授予其他用户
2.3系统权限,授予系统权限
1 .授予用户连接数据库的权限,并创建数据库对象: GRANT CONNECT TO tom;
2 .允许用户连接到数据库: GRANT CREATE SESSION TO tom
2 .创建表的系统权限: GRANT CREATE TABLE TO tom;
3 .创建配置文件: CREATE PROFILE pro1 LIMIT
4 .修改用户配置文件: ALTER user test1 PROFILE pro1;
5 .允许用户使用users表的10M空间配额: ALTER user tom QUOTA 10M ON USERS;
6.Tom用户可选地使用表空间:授权唯一表空间到6.Tom;
7 .恢复系统权限: revokecreatesessionfromtom;
2.4对象权限、对象权限的授予
1 .对象权限(访问某个用户的特定数据对象(表、视图等)的对象权限( SELECT on scott.student ) )。
一般对象权限:
1.select权限:执行查询操作。 可以执行的对象是表、视图和序列
2.insert权限:执行数据插入操作。 可以执行的对象是表和视图
3.update权限:执行数据更新操作。 可以执行的对象是表和视图
4.alter权限:执行修改对象的操作。 可以执行的对象是表和序列
5.delete权限:执行删除数据的操作。 可以执行的对象是表和视图
6 .索引权限:执行索引创建操作。 可以执行的对象是表
7.references权限:执行外键引用操作。 可以执行的对象是表
8.execute权限:执行对象操作。 可以执行的对象是函数、过程和包。
语法:
gant object _ privilege [ column _ name…]
ON obj_name
TO user [,user|role,PUBLIC…]
[ with grant选项];
//obj_priv表示授予的对象权限,可以用逗号分开同时授予多个对象权限
//column_name表示赋予操作数的列名,多个列名之间用逗号隔开
//obj_name表示对象权限操作的对象
//user表示授予对象权限的用户,role表示授予对象权限的角色,PUBLIC表示公共用户组,可以同时向多个用户授予对象权限。 之间用逗号隔开。
//WITH ADMIN OPTION是否允许将授权用户获取的权限转让给其他用户。 默认情况下,不能授予其他用户
恢复对象权限的REVOKE :
revokeprivilegeonobjectfrom {用户};
示例: revokeselectonscott.student from test 2
1.grantselectonscott.emptotomwithgrantoption; 允许//Tom用户查询EMP表中的记录并将其授予其他用户
2.GRANT UPDATE ON SCOTT.EMP TO tom; 用户可以更新EMP表中的记录
3.GRANT ALL ON SCOTT.EMP TO tom; 允许用户插入、删除、更新和查询表记录
4.grantupdate(ename,sal ) ON SCOTT.EMP TO tom; 允许用户更新EMP的名称、sal列
三)角色管理
角色管理:角色是一组相关权限的组合,通过将权限授予角色并向用户授予角色来简化权限管理。 一个用户可以拥有一个或多个角色,并可以将角色授予其他用户或角色。 无论角色权限的增减如何,此用户的权限都会发生变化。
3.1创建角色创建角色。 需要创建角色系统权限。
createrolerole _ name [ notidentifien ]|[ identified { by password|using [ sche am.] package|externally|globally ]
//role_name表示要创建的角色的名称
//NOT IDENTIFIED表示该角色将在与其他人授予该角色后立即生效。这是缺省设置
//IDENTIFIED子句表示该子句不会在授予其他用户后立即生效,以防止其他用户随意启用或禁用角色。 BY password意味着在创建角色的同时为角色设置密码。 用户不能立即拥有该角色的权限。 必须使用SET ROLE语句将其激活。 默认情况下没有密码,用户可以立即拥有此角色的权限。 USING package表示创建的角色是APP应用程序角色。 只能使用APP应用程序中授权的程序包启用此角色。 EXTERNALLY表示使用外部服务许可证启用此角色。 GLOBALLY表示企业服务授权的用户将启用此角色。
创建SCOTT用户失败是因为您没有权限
SYSDBA向SCOTT用户创建角色的权限
SCOTT用户创建三个角色
3.2授予角色权限。 它可以是系统权限或对象权限。
GRANT privilege TO ROLE;
例如: GRANT create session,create any table,drop any table TO role1;
授予角色e_emp1对scott模式EMP表的查询权限,以及在任何模式下创建和删除视图的系统权限。 授予角色e_emp2在scott模式下插入、更新和删除EMP表的权限。 授予角色m_emp对scott模式DEPT表的查询、插入、更新和删除权限。
3.3授予用户角色:
授权角色到用户;
例如: grant role1 to test2;
3.4查看用户直接授予的角色信息
通过查询视图user_role_privs,可以查看直接授予用户的角色的信息。
在用户user1中显示user1用户的角色。
如上图所示,角色e_emp1自动设置为用户user1的默认角色,而M_EMP已设置密码,因此不能自动设置为默认角色。 用户user1只能查询scott模式的EMP表的信息,不能显示DEPT表的信息。
用户user1可以查看EMP表
无法显示dept表
3.5更改默认角色
alteruserdefaultrole [ role _ name|all [ except role _ name ]|none ]
//role_name是要设置的角色名称,由逗号分隔的多个角色名称
//ALL启用当前用户的所有角色作为默认角色。 不包括设定密码的角色。
//EXCEPT启用当前用户的所有角色作为默认角色,但指定的角色除外
//NONE禁用当前用户的所有角色。 也就是说,默认作用为零。
ALTER user user1 DEFAULT ROLE NONE; //用户的默认角色为0,即使登录也没有角色。
alter useruser1defaultroleallexcepte _ EMP 1; //user1登录后,将除e_emp1角色外的所有角色设置为默认角色
ALTER user user1 DEFAULT ROLE ALL; //user1登录后,将所有角色启用为默认角色
alter useruser1defaultrolee _ EMP 1; //user1登录后,只有e_emp1角色将启用为默认角色。
3.6启用和禁用角色集
set role [ role _ name ] [ identifiedbypassword|all [ except role _ name ]|none ]
//role_name是要设置的角色名称,由逗号分隔的多个角色名称
//启用或禁用//IDENTIFIED BY角色时使用的密码
//ALL启用当前用户的所有角色作为默认角色。 不包括设定密码的角色。
//EXCEPT启用当前用户的所有角色作为默认角色,但指定的角色除外
//NONE禁用当前用户的所有角色。 也就是说,默认作用为零。
SET ROLE m_emp IDENTIFIED BY 123; 在启用m_emp角色的同时输入密码
以user1用户启用
请参阅
3.7从用户手中恢复角色:
REVOKE role1 from user2; //从用户user2回收role1的角色
REVOKE CREATE ANY VIEW,DROP ANY VIEW from e_emp1; 回收e_emp1角色的系统权限
3.8删除角色
DROP ROLE e_emp1
)5) grantresourcetoTom )资源角色使用户能够使用数据库中的存储空间(系统附带的角色)
注释:
oracle查询不需要输入以前的用户名。 ( a.b不需要输入a。 )
可以使用以下四种方法: 在有足够的空间资源或表中的数据量很少时可用
1 .使用同义词
grant CREATE SYNONYM to scott; //DBA或授权用户许可证
createsynonymemp _ testforscott.EMP;
2 .使用视图
createviewemp _ testasselectfromscott.EMP;
3 .帐户许可证
grant SELECT on scott to test; //test用户可以看到scott用户的表
4 .创建数据库
create table EMP _ test1 asselectfromscott.EMP
赋予用户权限
grantselectondemo _ invoice _ cloud.fmb _ invoicetodemo _ PC _ core 01;
GRANT connect,resource TO test;
GRANT RESUMABLE TO TEST; 可以自动扩展空间
GRANT BACKUP ANY TABLE TO TEST;
GRANT EXECUTE ANY TYPE TO TEST;
GRANT SELECT ANY TABLE TO TEST;
GRANT READ ANY FILE GROUP TO TEST;
GRANT SELECT ANY SEQUENCE TO TEST;
GRANT EXECUTE ANY PROCEDURE TO TEST;
connect用户可以登录数据库的权限
资源用户可以向开发人员授予创建若干数据库对的权限,包括表、视图和存储过程
drop user cmsuser cascade;
使用cascade参数可以删除该用户的所有objects
connect用户可以登录数据库的权限
资源用户可以向开发人员授予创建若干数据库对的权限,包括表、视图和存储过程
drop user cmsuser cascade;
使用cascade参数可以删除该用户的所有objects
rowid是Oracle数据库的行标识符,rowid是18位数字,基数为64,包含Oracle数据库中行的物理位置。 查询rowid如下所示。
SQL SELECT rowid,id from test Where rownum 5;
删除表中的重复记录
Delete from test a
whererowid(selectmax ) rowid ( from test where id=a.id );
向另一个用户授予对某个用户下的所有表的权限
1 .查看该用户下使用的表
select * from DBA _ tableswhereowner=\\ & amp; quot; Scott\\\&; quot; andstatus=\\\&; quot; valid\\\\&; quot;
2 .将该用户下表拼接成批文
选择\\& amp; #039; grant select,delete,update,insert\\&; quot; ||table_name|\\&; quot; totest; \\&; quot; from DBA _ tableswhereowner=\\ & amp; quot; Scott\\&; quot; andstatus=\&; quot; \&; quot; valid\\&; quot;
3 .在dba或具有批准权限的用户中运行步骤2的输出结果,当前用户具有批准权限即可运行。
注意:如果希望test用户接受当前登录的用户数据库中的所有表,可以使用以下语句进行拼接
选择\\& amp; #039; grant select,delete,update,insert\\&; quot; ||table_name|\\&; quot; totest; \\&; quot; fromuser _ tableswhereowner=\& amp; quot; Scott\\&; quot; andstatus=\&; quot; \&; quot; valid\\&; quot;
向PC_CORE01用户显示除sys以外的所有表
grant select any table to PC_CORE01;
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn