前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL information_schema详解 COLUMN_PRIVILEGES

MySQL information_schema详解 COLUMN_PRIVILEGES

作者头像
bsbforever
发布于 2020-08-18 01:52:29
发布于 2020-08-18 01:52:29
57700
代码可运行
举报
运行总次数:0
代码可运行

这个专题主要讲information_schema数据库下的一些表

如无特殊说明数据库版本为MySQL 5.7.26

1. COLUMNS

该表显示一些用户具有的列权限信息,其来源为mysql.columns_priv系统表

有如下栏位

  • GRANTEE 权限授予的用户的名称,格式为'user_name'@'host_name'
  • TABLE_CATALOG 包含列的表所属的目录的名称,该值总是def
  • TABLE_SCHEMA 包含列的表所属的数据库的名称
  • TABLE_NAME 包含列的表名
  • COLUMN_NAME 列名
  • PRIVILEGE_TYPE 被授予的权限名称,取值可以为任何可以在列级别上的权限
  • IS_GRANTABLE 如果为YES,代表该用户拥有GRANT OPTION权限

接下来对上面的一些栏位做进一步的介绍

1.1 列的权限

我们可以为指定的表中的一个列赋予权限,可以一次性赋予多个列权限,如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GRANT SELECT (col1), INSERT (col1, col2) ON mydb.mytbl TO 'someuser'@'somehost';

这里我在测试环境中新加入一个权限

我们只赋予coltest用户test数据库中innodb_table两个列的权限,其中只有name列用select权限

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create database coltest;
grant all on coltest.* to 'coltest'@'%' identified by '123456' ;
flush privileges;
grant select (name),insert(name,age) on test.innodb_table to coltest@'%' ;

通过上面实验我们可以看出MySQL可以针对列做出权限管控,我们无法用coltest用户对innodb_table 除name列外其他列进行操作


2. 实际截图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES;

这里每个列的权限显示一行

或者

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SHOW grants for 'coltest'@'%';

这里所有列的权限显示在一行

3. 参考链接

https://dev.mysql.com/doc/refman/5.7/en/column-privileges-table.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅必备 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. COLUMNS
    • 1.1 列的权限
  • 2. 实际截图
  • 3. 参考链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档