切换数据库
|
|
创建数据库
|
|
查询数据库
-
查询所有的数据库
1
show databases;
-
查询当前正在使用的数据库
1
select database();
删除数据库
|
|
授权机制
权限类型
- 数据库各部分的授权形式
- Read:允许读取数据,但不允许修改数据。
- Insert - 允许插入新数据,但不允许修改现有数据。
- Update:允许修改数据,但不允许删除数据。
- Delete:允许删除数据。
- 修改数据库架构的授权形式
- Index - 允许创建和删除索引。
- Resource - 允许创建新关系。
- Alteration - 允许在关系中添加或删除属性。
- Drop - 允许删除关系。
用户与角色
用户是指可以连接到数据库并执行操作的实体。每个用户有一个唯一的用户名和密码,通过这些凭证来认证和识别该用户。用户具有访问数据库和执行某些操作的权限。通常情况下,用户是直接与权限绑定的。
- 每个用户可以拥有一个或多个权限,这些权限控制用户能在数据库中执行哪些操作(如查询、插入、更新、删除等)。
- 用户可以是数据库的实际操作实体,如开发人员、管理员、应用程序等。
创建用户
|
|
角色是一种逻辑上的权限集合,它允许将多个权限组合在一起并赋予用户。角色是权限的集合,用户可以通过赋予某个角色来间接获得角色所包含的权限。这样,通过角色管理权限比直接授予权限给用户更简洁和灵活,尤其是当多个用户需要相同权限时。
- 角色是一个权限集合,可以包含多个权限,用户通过赋予角色来获得这些权限。
- 角色并不直接与具体的数据库操作实体(如用户)绑定,而是充当权限的管理和分配工具。
创建角色
|
|
授权规范
授予权限
代码语法
|
|
注意事项
- 权限的授予者必须已经拥有指定项目的权限(或者是数据库管理员)。
- 授予对视图的特权并不意味着授予对基础关系的任何特权。
- 默认情况下, 被授予权限的用户/角色无权把此权限授予其他用户/角色,除非使用with grant option子句
视图的授权
- 创建视图的用户不需要获得该视图上的所有权限。他得到的那些权限不会为他提供超越他已有权限的额外授权。例如,如果一个创建视图的用户在用来定义视图的关系上没有update 权限的话,那么他不能得到视图上的update权限。
- 如果用户创建一个视图, 而此用户在该视图上不能获得任何权限,系统会拒绝这样的视图创建请求
模式的授权
- 默认情况:只有模式的拥有者才能够执行对模式的任何修改, 诸如创建或删除关系, 增加或删除关系的属性, 以及增加或删除索引
- referrence权限允许用户在创建关系时声明外码,例如你有两个表:orders 和 customers,其中 orders表中的 customer_id列引用了 customers 表中的 id 列作为外键。这时,在创建外键约束时,用户需要拥有对 customers 表的 REFERENCES 权限。
一个用户/角色的权限
-
所有直接授予用户/角色的权限。
-
所有授予给用户/角色所拥有角色的权限。
收回权限
代码语法
|
|
注意事项
- 若权限列表中包含public,所有用户都将失去该权限,但明确授予该权限的用户除外。
- 如果不同的授权者两次向同一用户授予相同的权限,则用户在权限撤销后可以保留该权限
- 所有依赖于被撤销的权限的权限也将被撤销。
- 收回权限的方式
- cascade:级联收回,从一个用户/角色那里收回权限可能导致其他用户/角色也失去该权限
- restrict:不需要级联收回
- 可以收回grant option