导览
- 前言
- Q:如何对MySQL数据库进行授权管理
- 一、MySQL的“特权”
- 1. 权限级别
- 2. 权限清单
 
- 二、授权操作
- 1. 查看权限
- 2. 分配权限
- 3. 回收权限
 
- 结语
- 精彩回放
前言
看过博主上一篇的盆友,可以Get到一个知识点:数据授权(eg:grant xx to yy)。对了,数据这么敏感,必须遵循“分而治之,最小认领”的原则。在这个大数据盛行的时代,数据显然成为人类的第N个生产资料,没有它,好像我们“站得不太高,看得不够清,听得不够远”。所以如何管理它,越来越重要了。
今天博主继续大话MySQL,助你了解它是如何完成授权的。Let’s Go~

Q:如何对MySQL数据库进行授权管理
提示:本文示例均已
MySQL5.7为例。
一、MySQL的“特权”
在学习如何授权前,咱们先来看看MySQL有哪些“可授之权”。
1. 权限级别
| 级别 | 说明 | 
|---|---|
| 全局 | 授予最高管理权限。 | 
| 数据库 | 授予数据库及其内的所有对象的权限。 | 
| 数据库对象 | 授予数据库对象(如表、索引、视图和存储例程)的权限。 | 
2. 权限清单
为进一步说明MySQL可以提供的特权,博主提供一个官方的列表:
| 权限 | 授权列表 | 作用域 | 
|---|---|---|
| ALL [PRIVILEGES] | Synonym for “all privileges” | Server administration | 
| ALTER | Alter_priv | Tables | 
| ALTER ROUTINE | Alter_routine_priv | Stored routines | 
| CREATE | Create_priv | Databases, tables, or indexes | 
| CREATE ROUTINE | Create_routine_priv | Stored routines | 
| CREATE TABLESPACE | Create_tablespace_priv | Server administration | 
| CREATE TEMPORARY TABLES | Create_tmp_table_priv | Tables | 
| CREATE USER | Create_user_priv | Server administration | 
| CREATE VIEW | Create_view_priv | Views | 
| DELETE | Delete_priv | Tables | 
| DROP | Drop_priv | Databases, tables, or views | 
| EVENT | Event_priv | Databases | 
| EXECUTE | Execute_priv | Stored routines | 
| FILE | File_priv | File access on server host | 
| GRANT OPTION | Grant_priv | Databases, tables, or stored routines | 
| INDEX | Index_priv | Tables | 
| INSERT | Insert_priv | Tables or columns | 
| LOCK TABLES | Lock_tables_priv | Databases | 
| PROCESS | Process_priv | Server administration | 
| PROXY | See proxies_priv table | Server administration | 
| REFERENCES | References_priv | Databases or tables | 
| RELOAD | Reload_priv | Server administration | 
| REPLICATION CLIENT | Repl_client_priv | Server administration | 
| REPLICATION SLAVE | Repl_slave_priv | Server administration | 
| SELECT | Select_priv | Tables or columns | 
| SHOW DATABASES | Show_db_priv | Server administration | 
| SHOW VIEW | Show_view_priv | Views | 
| SHUTDOWN | Shutdown_priv | Server administration | 
| SUPER | Super_priv | Server administration | 
| TRIGGER | Trigger_priv | Tables | 
| UPDATE | Update_priv | Tables or columns | 
| USAGE | Synonym for “no privileges” | Server administration | 
针对每个授权项,我们可以参考官方指导文档进行学习,直接跳转这里,进行查阅。
二、授权操作
了解了以上的“特权”后,我们可以自由支配它们,分配给适合的人。
1. 查看权限
比如你想查看指定用户(user)的权限,可以通过以下语句完成:
SHOW GRANTS FOR [USER]@[HOST];
查看用户的非特权属性,可通过以下语句完成:
SHOW CREATE USER [USER]@[HOST];
2. 分配权限
分配权限,统一使用以下语句完成:
grant xx privileges on [DB_NAME].[TABLE_NAME] to [USER]@[HOST] identified by [PASSWORD] with grant option;
这里博主有必要对这个语句,做一个特别介绍:
- grant xxprivileges
 授权的范围,比如all、select、create等。
- on [DB_NAME].[TABLE_NAME]
 授权的对象,比如哪个库,哪个表。
- to [USER]@[HOST]
 授权的用户访问控制,比如test用户通过127.0.0.1访问数据库。
- identified by [PASSWORD]
 授权的用户访问密码。
3. 回收权限
既然有分配,那么就有回收。回收应该怎么操作,可通过以下语句完成:
revoke xx privileges on [DB_NAME].[TABLE_NAME] from [USER]@[HOST];
这里博主对这个语句,同样做一个特别介绍:
- revoke xxprivileges
 撤销/回收授权的范围,比如all、select、create等。
- on [DB_NAME].[TABLE_NAME]
 撤销/回收的对象,比如哪个库,哪个表。
- from [USER]@[HOST]
 撤销/回收的用户访问控制,比如test用户通过127.0.0.1访问数据库。
结语
本文对MySQL的权限操作进行了一定的介绍。希望可对有需要的盆友提供一定的帮助。
 走过的、路过的盆友们,点点赞,收收藏,并加以指导,以备不时之需哈~
精彩回放
MySQL系列之如何在Linux只安装客户端
 MySQL系列之如何正确的使用窗口函数(基于8.0版本)
 MySQL系列之数据导入导出
 MySQL系列之索引入门(上)
 MySQL系列之索引入门(下)
