不能 说明 ext 存在 esp 我们 可执行 emp 状态
每次谈到用户和权限,总感觉没什么去分享和交流的.其实不然,不恰当的去形容好比你是个客户去买房子,你去看 200W 的房子和 1000W 的房子那绝对不一样,服务级别享受待遇也截然不同.
数据库中用户和权限好比钱和房子,你用户级别越高其实对应的权限越高,技术无非都是从这个世界人性化演变过来的.扯的多一些,那么我数据库中用户密码最基本的信息,用户使用特定用户账号队友自己的特点和操作权限.那么角色就是权限的集合,角色可以分配给用户(给你钥匙),把这个权限特定集合分配用户.
啥叫用户?
分为两类:1,创建库的时候系统自己创建的用户(系统用户) 2,另一种用系统用户创建的用户,叫普通用户
格式:
select username,account_status,default_tablespace,temprorary_tablespace from user_users;
解释:
查询当年系统中所有的用户和状态所属的表空间.
格式:
create useruser_name identified by password default tablespace users;
解释:
学习 Oracle 一定要学会用英语去看,用英语翻译上一句命令就是,创建用户 user_name 确认密码 password 默认表空间是 users; 其实一句话的是,无压力(黑色是关键字).
dba_user 这个表也可以查看详细的信息,一个库表,一个用户!
用户与模式(Schema)
模式就是说用户拥有的对象集合.对象有表,索引,触发器等等.每个用户都会有独立的模式信息,新建用户除外,他们的集合为空的.Schema 为空,Schema 必须依赖于用户存在.
格式:
select sys_count('userenv','current_user')current_user,sys_countext('userevn','current_schema')current_schema from dual;
解释:
通过本条的查询语句发现我们用 System 登录后可以看到集合, 到底有啥意义呢,就是说 Schema_对象名组合可以限制数据库中唯一的对象.
系统用户 sys 和 system
系统用户 sys 和 system 是最常用的两个用户系统,那么 sys 是 ORACLE 数据库中最高权限用户, 角色为 sysdba(数据库管理员), system 仅次于 sys 用户,角色是 SYSOPER(数据库操作员). 比如 sys 可以创建库, 那么 system 不可以结合没有这个权限(默认没有).
格式:
show parameter db_name;
解释:
代码 show parameter 用于显示说明 db_name(数据库名称) 参数信息.
格式:
alter user system account unlock;
解释:
解锁用户,比如 scott 用户默认是不能登陆状态,解锁后 dba_users 查询状态则是 OPEN 打开
格式:
alter user scott identified by password;
解释:
修改 scott 的密码,然后登陆.
权限好比你等级,好比法律就是你在社会制度中的最高等级,Privilege 的对象用户,只要是数据库操作对象和可执行的多动都会受到限制的.那么也有两种权限: 1,系统权限 2,对象权限
系统权限:
系统权限是针对数据库特定操作,如创建数据表,与对象权限不用,对已有的对象进行访问和操作.
格式:
select distinct privilege from dba_sys_privs;
解释:
查看系统权限都有哪一些(主要组成部分)
分配权限:
格式:
grant create session to tiger; -- 赋予创建会话(连接)的权限
grant create table to tiger; -- 赋予创建表权限
alter user tiger quota 10M on users quota 2M on temp;-- 因为没有分配用户能使用多大的表空间没权限,用 system 分配空间大小
select * from dba_sys_privs where lower(grantee) = 'tiger';-- 查询 tiger 用户目前有的系统权限
revoke create table from tiger; -- 撤回回收赋予 tiger 的权限
对象权限:
格式:
select grantee,table_name,privilege from dba_tab_privs where lower(grantee)='tiger';
解释:
查看 grantee 有的对象权限.
格式:
grant select on dual to tiger;-- 把 system 查询 dual 赋权给 tiger
grant insert on table to tiger; -- 赋予创建 table(指定表名) 权限
grant update(table_name) to tiger; -- 赋权只能更新这表中的 name 列;
grant all on table to tiger;-- 赋权全部对象权限
revoke all on table to tiger;-- 将 tiger 的对象权限全部收回
角色:
虽然我们可以利用系统和对象权限去控制,我们会发现任务量会变的非常复杂麻烦,在这个背景下,Oralce 提出了角色的概念,角色我们该是介绍过就是系统权限或者对象权限的集合.Oracle 允许创建角色,然后将角色信息赋予用户,从而间接的将权限信息添加给用户,重要的是角色可复用,某一种程度上大大减少了重复的工作和代码量.
利用继承的特性,从简单的角色衍生出复杂的角色,无疑提高的权限分配的工作和效率
一起来创建一个角色
格式:
create role role_employee;
解释:
create role 创建角色的关键字
格式:
grant all on table to role_employee;-- 赋予全部权限给角色 role
grant role_employee to tiger;-- 把角色的全部权限给 tiger 用户,需要注意必须重新登录数据库才可以生效.
继承角色:
角色可以继承另一个角色的权限信息,减少自身 grant 的动作指令
格式:
grant system to role_employee;
解释:
把 system 的权限赋权给角色 role, 虽然感觉意义不大,但是一些严谨的数据库对用户安全会非常重视,每一个角色都会有分类,当代码量比较复杂时候角色的用处当然会很重要.
格式:
alter user cat default role none;
解释:
禁止 cat 用户默认角色全部禁止,查询 session_roles 则为空
格式:
set role role_hr;
解释:
启动角色 role_hr, 如果有多个角色可以用逗号隔开
到最后回头看一看文章,就是用户角色权限三者变化和相互依赖的关系,数据库安全仅仅依赖用户的控制是不可行的,那么一个相对安全逻辑紧密的数据库没有用户角色权限等策略是一定不行的,清晰思路一切难题都会迎刃而解!
用户 and 权限
来源: http://www.bubuko.com/infodetail-2461188.html