在数据库管理中一定本着一个原则就是权限最小化的原则,如果有需要在赋予相应的权限
数据库管理员日常对于用户的管理任务如下:
– 创建新用户
– 删除用户
– 删除表
– 备份表
1、创建用户yuri,并设置密码为password。
create user yuri identified by password;
2、用户创建之后, DBA 会赋予用户一些系统权限
以应用程序开发者为例, 一般具有下列系统权限:
- create session
-create table
-create sequence
-create view
-create procedure
例如:赋予用于yuri如下权限
grant create session, create table, create sequence, create view to yuri;
二、角色的作用
角色的目的是定义了一个有哪些权限的角色,并把用户指定为这个角色。方便统一管理
1、创建角色
create role mang;
2、赋予角色权限
grant create table, create view to mang;
3、将角色授予用户
grant mang to yuri
DBA 可以创建用户和修改密码。
用户自己可以使用 ALTER USER 语句修改密码。
4、将yuri用户的密码改为1q2w3e
alter user yuri identified by 1q2w3e;
对象权限
对象权限 | Table | View | Sequence |
ALTER | ![]() | ![]() | |
DELETE | ![]() | ![]() | |
INDEX | ![]() | ||
INSERT | ![]() | ![]() | |
REFERENCES | ![]() | ||
SELECT | ![]() | ![]() | ![]() |
UPDATE | ![]() | ![]() |
不同的对象具有不同的对象权限
对象的拥有者拥有所有权限
对象的拥有者可以向外分配权限
语法:
grant object_priv [(columns)] on object to {user|role|public} [with grant option];
1、赋予查询employees表的权限给yuri用户
grant select on employees to yuri;
授予指定的列给yuri用户和mang角色,更新department_name和location_id的权限
grant update (department_name, location_id) on departments to yuri, mang;
WITH GRANT OPTION 和 和 PUBLIC 关键字
WITH GRANT OPTION 使用户同样具有分配权限的权利
grant select, insert on departments to demo with grant option;
向数据库中所有用户分配权限
grant select on alice.departments to public;
确认授予的权限
数据字典视图 | 描述 |
ROLE_SYS_PRIVS | 角色拥有的系统权限 |
ROLE_TAB_PRIVS | 角色拥有的对象权限 |
USER_ROLE_PRIVS | 用户拥有的角色 |
USER_SYS_PRIVS | 用户拥有的系统权限 |
USER_TAB_PRIVS_MADE | 用户分配的关于表对象权限 |
USER_TAB_PRIVS_RECD | 用户拥有的关于表对象权限 |
USER_COL_PRIVS_MADE | 用户分配的关于列的对象权限 |
USER_COL_PRIVS_RECD | 用户拥有的关于列的对象权限 |
撤销对象权限
使用 REVOKE 语句撤销权限
使用 WITH GRANT OPTION 子句所分配的权限同样被收回
语法:
revoke {privilege [, privilege...]|all} on object from {user[, user...]|role|public} [cascade constraints];
1、撤销授予给 yuri 用户 employees 表的 SELECT 和 INSERT 权限。
revoke select ,instert on employees from yuri;