oracle用户,权限,角色

来源:互联网 发布:java一年经验工资 编辑:程序博客网 时间:2024/05/24 02:37
用户角色与权限控制

【1】用户

系统用户:sys(系统管理员)和system(系统操作员)
普通用户:使用系统管理员账户创建的账户。如:scott
模式:用户所拥有的对象的集合。如:table,view,trigger,procedure,function,sequence...
==============================
输出结果到文件
spool E:\log.txt;
select id,name from users;
spool off;

==============================

--查看dba_users表select * from dba_users;--创建用户 user1/user1 表空间 usercreate user user1 identified by user1 default tablespace users;--查看创建的用户select * from dba_users where username='USER1';select       sys_context('userenv','current_user') current_user,       sys_context('userenv', 'current_userid') current_userid,       sys_context('userenv','current_schema') current_schema,       --sys_context('userenv','terminal') terminal,       sys_context('userenv','language') language,       --sys_context('userenv','sessionid') sessionid,       --sys_context('userenv', 'instance') instance,       --sys_context('userenv', 'entryid') entryid,       sys_context('userenv', 'isdba') isdba,       --sys_context('userenv', 'nls_territory') nls_territory,       --sys_context('userenv', 'nls_currency') nls_currency,       --sys_context('userenv', 'nls_calendar') nls_calendar,       --sys_context('userenv', 'nls_date_format') nls_date_format,       --sys_context('userenv', 'nls_date_language') nls_date_language,       --sys_context('userenv', 'nls_sort') nls_sort,       sys_context('userenv', 'session_user') session_user,       --sys_context('userenv', 'session_userid') session_userid,       sys_context('userenv', 'proxy_user') proxy_user,       --sys_context('userenv', 'proxy_userid') proxy_userid,       sys_context('userenv', 'db_domain') db_domain,       sys_context('userenv', 'db_name') db_name,       sys_context('userenv', 'host') host,       sys_context('userenv', 'os_user') os_user,       sys_context('userenv', 'external_name') external_name,       sys_context('userenv', 'ip_address') ip_address,       sys_context('userenv', 'network_protocol') network_protocol,       --sys_context('userenv', 'bg_job_id') bg_job_id,       --sys_context('userenv', 'fg_job_id') fg_job_id,       sys_context('userenv', 'authentication_type') authentication_type,       sys_context('userenv', 'authentication_data') authentication_datafrom dual;--使用sys账户修改其他用户密码sqlplus /@orcl as sysdba--查询当前数据库是要修改用户的数据库show parameter db_name--结果NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------db_name                              string      orcl--查询用户状态select username,account_status from dba_users where username='SCOTT';--结果USERNAME                       ACCOUNT_STATUS------------------------------ --------------------------------SCOTT                          OPEN--解锁用户账户alter table user1 account unlock;--修改用户密码,密码区分大小写alter user user1 identified by abc;


【2】权限

系统权限:如:创建数据表

--查看某个用户的系统权限select * from dba_sys_privs where grantee='USER1';--解决用户没有session权限grant create session to user1;--解决用户没有create table权限grant create table to user1;--解决用户表空间没有权限1.grant resource to user1;2.alter user user1 quota unlimited on 'USERS';--撤销权限revoke create session from user2;
--查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)select * from V$PWFILE_USERS--赋予权限并且拥有权限的再分配权限with admin option注意:对于使用with admin option 为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限grant 权限列表,.. to username [with admin option 同时获得权限分配权];grant alert table on tablename to zhangsan with admin option;//关键字 with admin option同时获得权限分配权,撤销权限不会级联grant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似,撤销权限会级联--向数据库中所有用户分配权限grant select on dept to public;--检查DBA权限的用户  select * from dba_role_privs where granted_role='DBA'; --常见对象权限   CREATE SESSION                     创建会话   CREATE SEQUENCE                    创建序列   CREATE SYNONYM                     创建同名对象   CREATE TABLE                       在用户模式中创建表   CREATE ANY TABLE                   在任何模式中创建表   DROP TABLE                         在用户模式中删除表   DROP ANY TABLE                     在任何模式中删除表   CREATE PROCEDURE                   创建存储过程   EXECUTE ANY PROCEDURE              执行任何模式的存储过程   CREATE USER                        创建用户   DROP USER                          删除用户--查询权限分配情况数据字典视图                      描述ROLE_SYS_PRIVS            角色拥有的系统权限ROLE_TAB_PRIVS            角色拥有的对象权限USER_TAB_PRIVS_MADE       查询授出去的对象权限(通常是属主自己查)USER_TAB_PRIVS_RECD       用户拥有的对象权限USER_COL_PRIVS_MADE       用户分配出去的列的对象权限USER_COL_PRIVS_RECD       用户拥有的关于列的对象权限USER_SYS_PRIVS            用户拥有的系统权限USER_TAB_PRIVS            用户拥有的对象权限USER_ROLE_PRIVS           用户拥有的角色  权限总结1.使用create user语句创建用户,alter user语句修改用户,其语法大致相同drop user username [CASCADE] 会删除用户所拥有的所有对象及数据2.系统权限允许用户在数据库中执行特定的操作,如执行DDL语句。with admin option 使得该用户具有将自身获得的权限授予其它用户的功能但收回系统权限时,不会从其它帐户级联取消曾被授予的相同权限3.对象权限允许用户对数据库对象执行特定的操作,如执行DML语句。with grant option 使得该用户具有将自身获得的对象权限授予其它用户的功能但收回对象权限时,会从其它帐户级联取消曾被授予的相同权限4.系统权限与对象权限授予时的语法差异为对象权限使用了ON object_name 子句5. PUBLIC 为所有的用户6. ALL:对象权限中的所有对象权限


对象权限:如:对表或试图的操作或者访问
select,
insert,
update,
delete,
execute,执行函数或者存储过程或者程序包
index,
references,
alter 修改列的属性

--查看用户的对象权限select * from dba_tab_privs where grantee='USER1';--为用户赋予查询,增加,删除权限grant select/insert/delete on dual to user2;--为用户赋予更新权限:某列或者所有列grant update(employee_name) on t_employee to user2;--更新某列grant update on t_employee to user2;--更新所有列--赋予用户所有权限grant all on t_employee to user2;


【3】角色

角色是系统权限或对象权限的集合。可以对角色进行复用分配给不同的用户。
--示例--创建角色test_rolecreate role test_role;--为角色分配权限grant create session to test_role;grant create table to test_role;grant select on t_employee to test_role;grant update(employee_name) to test_role;--将角色分配给不同的用户grant test_role to user1;grant test_role to user2;grant test_role to user3;grant test_role to user4;--继承角色grant test_role to test_role2;--查看当前登陆用户的角色select * from session_roles;--禁用用户的角色alter user user1 default role none;--启用用户的角色set role test_role;
查看所有角色: select * from dba_roles; 查看用户所拥有的角色: select * from dba_role_privs; select * from user_role_privs; 




原创粉丝点击