## 權限表
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操作
- 連接
- 創建數據庫
- 插入數據
- 插入多條數據
- 預處理語句
- 查詢數據
- 預處理語句
- 實戰應用
- 分表