关于 MySQL 的权限简单的理解就是 MySQL 允许你做你权利以内的事情,不可以越界。比如只允许你执行 select 操作,那么你就不能执行 update 操作。存储账户权限信息的表主要有四个:user 表、db 表、tables_priv 表、columns_priv 表。 用户权限信息表:
- user 表:user 表存储了允许连接到服务器的用户信息,并且它指定这些用户有哪种全局(超级用户、管理员)权限。在 user 表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了 DELETE 权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。
- db 表:db 表存储了用户对某个数据库的操作权限,在这里指定的权限适用于一个数据库中的所有表。
- tables_priv 表:tables_priv 表存储了用户对某个表的操作权限,在这里指定的一个权限适用于一个表的所有列。
- columns_priv 表:columns_priv 表存储了用户对表中某列的操作权限,在这里指定的权限适用于一个表的特定列。
MySQL 用户权限管理主要有以下作用:
- 可以限制用户访问哪些库、哪些表
- 可以限制用户对哪些表执行 SELECT、CREATE、DELETE、DELETE、ALTER 等操作
- 可以限制用户登录的 IP 或域名
- 可以限制用户自己的权限是否可以授权给别的用户
MySQL 权限信息表的验证过程分为两个阶段:连接权限验证和执行权限验证
MySQL 的权限分布,权限分布就是针对表可以设置什么权限,针对列可以设置什么权限等等
权限分布 | 可能的设置的权限 | 表权限 | 'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter' | 列权限 | 'Select', 'Insert', 'Update', 'References' | 过程权限 | 'Execute', 'Alter Routine', 'Grant' |
|