今天主要分享关于performance_schema
和information_schema
的授权问题。在最近对performance_schema
进行授权时,我遇到了一些有趣的现象。接下来,让我们一起探讨这些问题。
1、查看授权
从下面的授权信息中,我们可以看到root@'%'
没有with grant option
权限。
2、查看mysql.user表
执行以下命令查看mysql.user
表的信息:
mysql> select host,user,Grant_priv,authentication_string,password_expired from mysql.user;
在授予with grant option
选项后,可以发现root@'%'
已经拥有grant_priv
权限。
3、更新升级数据库信息
测试后发现,这并不是由于数据库版本升级问题导致的。
5、重新授权
经过测试,我们发现授权是成功的。
mysql> grant all privileges on information_schema.* to jk@'%';
mysql> grant select on information_schema.* to jk@'%';
mysql> grant select on performance_schema.* to jk@'%';
总结
information_schema
数据库类似于“数据字典”,提供了访问数据库元数据的方式,如数据库名或表名、列类型、访问权限等,并随时可以更改。它用于查看信息以及系统决策时作为重要的信息提供者。所有用户默认就有访问information_schema
的权限,类似于Oracle的user_*
视图。据观察,它不支持(也无需)显示授权,包括select
。
performance_schema
默认等同于普通数据库,唯一的区别在于不支持all
权限,需要显式授予select
、drop
等权限(要truncate
必须有drop
权限)。
觉得有用的朋友,请多帮忙转发。后面我会分享更多关于DevOps和DBA方面的内容,感兴趣的朋友可以关注。