Oracle 中的用户权限。
来源:互联网 发布:自动化交易编程设计 编辑:程序博客网 时间:2024/05/16 02:13
用户权限
用户是用于 资源管理 和 权限控制 的一个概念。
安装完 Oracle,缺省有两个用户:
SYS
用户,又叫数据库系统管理员、特权用户,数据库中至高无上的存在。- 它是数据库的系统管理员,负责数据库的安装、维护、升级、备份、恢复、优化等操作。
- 在它之下,保存着数据库所有的系统字典。
- 不能用 normal 身份登录,必须用 SYSDBA/SYSOPER 身份登录。
SYSTEM
用户,数据库管理员,它拥有 DBA 角色,主要负责对数据库中各种对象,各种资源的管理。SCOTT
用户,一个示例用户,默认是锁定的,需要解锁使用。
新创建的用户,是不能做任何事情的(甚至不能登录)。 必须要为用户授予权限,才能做相应的事情。 可以说,用户是权限的容器。
权限分为两种:
- 系统权限。执行特定命令和实施特定行为的权限。
- 对象权限。作用在某个数据库对象上的权限,包括对对象的增删改查。
- 角色。为了方便管理,将若干系统权限打包统一分配,称之为角色。
4.1 用户的管理
-- 创建用户的语法CREATE USER name IDENTIFIED BY password -- 一个用户,至少拥有用户名和密码 [DEFAULT TABLESPACE users] -- 指定此用户下数据默认保存位置,如果不指定,默认为 Users 表空间 [TEMPORARY TABLESPACE temp] -- 指定临时表空间,默认为 temp 表空间 [QUOTA 100M/unlimited ON USERS] -- 在表空间上有多少空间的使用权力,默认为 0, unlimited 表示无上限 [ACCOUNT LOCK/UNLOCK] -- 账号的初始状态:锁定/未锁定,默认为未锁定 [PASSWORD EXPIRE] -- 账号的初始状态:强制要求重设密码,默认不强制 [PROFILE DEFAULT] -- 指定使用的资源文件,默认是 default;-- 修改用户的语法ALTER USER name [跟创建用户的参数是一样的];-- 删除用户的语法DROP USER name [cascade];
为了对用户行为有更精细的控制,需要使用 资源文件 (profile
)。 资源文件是口令限制、资源限制的命名集合。
-- 增加资源文件的语法CREATE PROFILE name LIMIT RESOURCE_参数 n/unlimited/default -- 控制的是资源的占用 PASSWORD_参数; -- 控制的是密码的使用-- 修改资源文件的语法ALTER PROFILE name ...;-- 删除资源文件的语法DROP PROFILE name;-- 为用户指定资源文件ALTER USER name PROFILE profile_name;
常用资源文件选项:
操作示例:
-- 所有的用户信息,保存在字典表 dba_users 里面select * from dba_users where USERNAME='VIP';-- 所有的资源文件信息,保存在 dba_profiles 里面select * from dba_profiles where profile='DEFAULT';-- 创建用户的最基本语句,需要用户名和密码-- 其他属性采用的都是默认值create user vip identified by vip;-- 再一个稍微复杂一点的创建语句create user vip identified by vip default tablespace users temporary temporary temp quota unlimited on users password expire;-- 最好为我们的新用户指定特定的表空间create tablespace db_vip datafile 'd:/db_vip.dbf' size 50m;create user vip identified by vip default tablespace db_vip quota unlimited on db_vip password expire;-- 为我们的用户创建相应的资源文件create profile vip_profile limit failed_login_attempts 3 password_life_time unlimited sessions_per_user 2;-- 将资源文件分配给用户,也可以在创建用户的时候指定alter user profile vip_profile;
权限(Privilege)
权限指的是执行特定命令或访问数据库对象的权利,分为系统权限和对象权限。
-- 授权-- with admin option 可以允许获得权限的用户可以将这个权限继续授予别人GRANT 权限 [ON 对象] TO 谁 [WITH ADMIN OPTION];-- 撤销授权REVOKE 权限 FROM 谁;-- 创建角色CREATE ROLE 角色名;操作示例:
-- 对象权限有 select/insert/update/delete/alter/execute 等-- 系统中所有的系统权限和角色保存在相关字典表中:select * from system_privilege_map; -- 列出系统中所有的系统权限select * from dba_role; -- 列出系统中所有的角色-- 查看已授予的权限select * from dba_sys_privs where grantee='VIP';select * from dba_tab_privs where grantee='VIP';select * from dba_role_privs where grantee='VIP';--- 关于权限的管理-- 新建用户先create user vip identified by vip quota 1m on users;-- 新用户什么都干不了,甚至不能登录,如果想让它可以登录,给它一个相应权限:grant create session to vip;-- 现在可以登录 vip 了。但是不能创建表,需要我们给一个相应权限:grant create table to vip;-- 现在,可以创建表了create table aaa (i int);insert into aaa values (888);commit;-- 上面创建用户、授权的语句可以缩写为:grant create session, create table to vip identified vip quota 1m on user;-- 自己创建的表,自己会有完全的操作权力,但如果想要看别的用户的表,需要授权:grant select on scott.emp to vip;-- 上面就有了查询的权限。但不能修改。如果要修改,需要相应权限。当然,如果想把对象上的所有权力一并授予,需要用到 All:grant all on scott.emp to vip;-- 通过下面语句,可以看到对象权限的授予情况:select * from dba_tab_privs where grantee='VIP';角色是权限的命名集合,它可以简化授权。
-- 创建角色create role myrole;-- 将权限赋予角色grant create session, create table to myrole;grant create view to myrole;-- 甚至可以将另一个角色赋予我们的角色grant resource to myrole;-- 使用角色grant myrole to vip;grant myrole to vip with admin option;-- 删除角色drop role myrole;[Oracle 预定义角色] Oracle 自带了很多角色,常用的有:
- CONNECT,只包含了 create session 等权限,即登录系统的权限
select * from dba_sys_privs where grantee='CONNECT';- RESOURCE,包含了若干 create xxx 权限,即创建对象、创建资源的权限
select * from dba_sys_privs where grantee=RESOURCE';- DBA,包含了200多个系统权限,是用来进行系统管理的角色
grant connect, resource to A_Common_User;grant dba to A_Super_User;[特殊的 PUBLIC 角色] 公用角色,默认是授予每个用户的。
grant connect to public; -- 这样,不需要进行任何其他操作,所有新建的用户就都拥有登录的功能了。[最小权限原则] 我们开发的时候,为了方便,经常要做这样的操作:
grant dba to xxx identified by yyy; -- 创建一个用户 xxx,密码为 yyy,授予 dba 角色但这权力太大,在正式环境中,这样的授权是非常不合适的。一般要遵守
最小权限原则
, 也就是:创建一个用户,授予能完成任务的尽量少的权限,多一个也不好。比如,我们有客户需要查看 vip 用户下的 student 表,我们需要创建一个用户给他:
-- 第一步,为客户需求创建一个用户create user guest identified by ***;-- 第二步,授予连接数据库的权限grant connect to guest;-- 第三步,授予 vip.student 的 select 权限grant select on vip.student to guest;-- 当然,上面可以再简化为以下。That's All.grant connect to guest identified by ***;grant select on vip.student to guest;
阅读全文
1 0
- Oracle 中的用户权限。
- 查看Oracle中的所有用户权限
- oracle 用户权限
- Oracle用户权限
- oracle用户权限
- oracle用户权限
- oracle 用户权限
- oracle用户权限
- oracle 用户权限
- oracle用户权限
- Oracle用户权限
- Oracle 用户权限
- Oracle用户权限
- Oracle用户权限
- oracle 用户权限
- Oracle 用户权限
- oracle用户权限
- oracle用户权限
- 数据导出EXCEL
- http响应总结:常见http响应错误总结
- BZOJ 1013 [JSOI 2008] 高斯消元 解题报告
- Visible Trees HDU
- 本地安装gradle3.3版本
- Oracle 中的用户权限。
- 集合框架
- 将图片转换为PDF文件格式如何操作
- python给图片添加字符
- logback 常用配置详解(二) <appender>
- 欢迎使用CSDN-markdown编辑器
- Oracle 常用SQL记录
- unity3d发布webgl手机测试流程
- Snackbar的使用