## 权限表
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在MySQL数据库中,由MySQL_install_db脚本初始化.存储账号权限信息表有user,db,host,tables_priv,columns_priv和procs_priv.
### user表
user表是MySQL表中最重要的一个权限表,记录允许连接到服务器的账号信息,里面的权限是全局级的.
### tables_priv表columns_priv表
tables_priv表用来对表设置操作权限,columns_priv表用来对表的某一列设置权限
### procs_priv表
procs_priv表可以对存储过程和存储函数设置操作权限.
## 授权
### 权限层级
|权限|授权范围|权限代码|
|-|-|-|
|全局权限|所有数据库|grant all on \*.\* |
|数据库层级|指定数据库|grant all on 数据库|
|表层级|指定表|grant all on数据库.数据表|
|列层级|指定表中的列||
|子程序层级|已存储的子程序||
### 子程序授权
```sql
grant 权限类型 [(作用在那些列)] [,权限类型[(作用在那些列)]]...
on [table|function|procedure] 授权列所在的表,表2...
to 用户名@主机名 [identified by [password] 新密码]
[,用户名@主机名 [identified by [password] 新密码]]...
[with grant option]
```
with关键字可以跟一个或多个值
|值|说明|
|-|-|
|grant option|被授权的用户可以将这些权限赋予别的用户|
|max_queries_per_hour count|设置每个小时可以执行count次查询|
|max_updates_per_hour count|设置每个小时可以执行count次更新|
|max_connections_per_hour count|设置每个小时可以建立count个链接|
|max_user_connections count|设置单个用户可以同时建立count个链接|
## 回收权限
### 回收用户所有权限
```sql
revoke all privileges, grant option
from 用户名@主机名 [,用户名@主机名];
```
### 回收用户指定权限
```sql
revoke 权限类型 [(列)] [,权限类型 [(列)]] ...
on 表,表2...
from 用户名@主机名 [,用户名@主机名]...;
```
## 查看权限
```sql
show grants for 用户名@主机名;
```
- 简介
- 数据库
- 数据表
- 创建数据表
- 查看数据表结构
- 修改数据表
- 删除数据表
- 查询数据
- 表单查询
- 聚合查询
- 链接查询
- 子查询
- 联合查询
- 正则查询
- 数据管理
- 数据类型
- 添加数据
- 更新数据
- 删除数据
- 索引
- 索引分类
- 设计原则
- 添加索引
- 查看索引
- 删除索引
- 视图
- 视图操作
- 视图应用
- 事务
- 触发器
- 存储过程和函数
- 变量
- 异常处理
- 光标
- 流程控制
- 存储过程
- 自定义函数
- 内置函数
- 数学
- 字符串
- 日期和时间
- 条件判断
- 系统信息
- 加/解密
- 其他
- 用户管理
- 登录和退出
- 新建用户
- 删除用户
- 修改用户
- 找回ROOT密码
- 权限管理
- 备份恢复
- 备份数据
- 恢复数据
- 日志
- 二进制日志
- 错误日志
- 查询日志
- 慢查询日志
- 性能优化
- 优化查询语句
- 优化数据库结构
- 优化服务器
- 主从复制
- WIN系统主从复制
- Linux单机主从复制
- Linux联机主从复制
- 参数配置
- 日常管理和维护
- 切换主从服务器
- PHP操作
- 连接
- 创建数据库
- 插入数据
- 插入多条数据
- 预处理语句
- 查询数据
- 预处理语句
- 实战应用
- 分表