MySQL系列之数据授权(privilege)

导览

前言

看过博主上一篇的盆友,可以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)的权限,可以通过以下语句完成:

sql 复制代码
SHOW GRANTS FOR [USER]@[HOST];

查看用户的非特权属性,可通过以下语句完成:

sql 复制代码
SHOW CREATE USER [USER]@[HOST];

2. 分配权限

分配权限,统一使用以下语句完成:

sql 复制代码
grant xx privileges on [DB_NAME].[TABLE_NAME] to [USER]@[HOST] identified by [PASSWORD] with grant option;

这里博主有必要对这个语句,做一个特别介绍:

  • grant xx privileges
    授权的范围,比如all、select、create等。
  • on [DB_NAME].[TABLE_NAME]
    授权的对象,比如哪个库,哪个表。
  • to [USER]@[HOST]
    授权的用户访问控制,比如test用户通过127.0.0.1访问数据库。
  • identified by [PASSWORD]
    授权的用户访问密码。

3. 回收权限

既然有分配,那么就有回收。回收应该怎么操作,可通过以下语句完成:

sql 复制代码
revoke xx privileges on [DB_NAME].[TABLE_NAME] from [USER]@[HOST];

这里博主对这个语句,同样做一个特别介绍:

  • revoke xx privileges
    撤销/回收授权的范围,比如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系列之索引入门(下)


相关推荐
倔强的石头_14 小时前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou642 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
于眠牧北2 天前
MySQL的锁类型,表锁,行锁,MVCC中所使用的临键锁
mysql
李广坤3 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
Turnip12024 天前
深度解析:为什么简单的数据库"写操作"会在 MySQL 中卡住?
后端·mysql
爱可生开源社区4 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1774 天前
《从零搭建NestJS项目》
数据库·typescript
加号34 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏4 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐5 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端