权限组成结构
- 用户:有用自己的用户名和密码,并且拥有能够操作的权限。
- 操作权限:限制一个用户能够做什么,可以配置到全局/数据库/表/列
MySQL主要权限
权限 | 权限级别 | 权限说明 |
---|---|---|
create | 数据库、表或索引 | 创建数据库、表、索引 |
drop | 数据库或表 | 删除数据库或表 |
alter | 表 | 更改表,比如添加字段、索引 |
delete | 表 | 删除数据 |
index | 表 | 索引 |
insert | 表 | 插入 |
select | 表 | 查询 |
update | 表 | 更新 |
create view | 视图 | 创建视图 |
execute | 存储过程 | 执行存储过程 |
权限的分布
- 全局:针对所有数据库都有效
- 数据库:只针对当前数据库有效
MySQL中权限的设置也是存储在数据库中的:
- mysql.user:用户表、包括用户名,密码,主机,全局权限,性能限制
- mysql.db:数据库权限设置
- mysql.table_priv:表权限设置
- mysql.column_priv:列权限设置
权限相关命令
完整语法:
- grant 权限
- on 数据库对象
- to 用户 identified by 密码
- with grant option(给别人权限)
/* 创建用户 */
create user '用户名'@'访问限制' identified by '密码';
/* 赋予anthony用户select、insert权限 *.*代表所有数据库对象 */
grant select,insert on *.* to 'anthony'@'localhost';
/* 创建用户并且赋予权限 */
grant select,insert on *.* to 'anthony'@'localhost' identified by '密码';
/* 加上with grant option(给别人权限) */
grant select,insert on *.* to 'anthony'@'localhost' identified by '密码' with grant option;
刷新权限
flush privileges;
查看权限
/* 当前用户权限 */
show grants;
/* 特定用户权限 */
show grants for 用户@访问限制;
回收权限
语法:revoke 权限 on 数据库对象 from 用户;
使用revoke撤销全部权限,操作者必须拥有全局的create user或update权限
revoke all on *.* from anthony;
删除用户
drop user 用户@限制访问;
drop user 'anthony'@'%';
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。