的USER_ATTRIBUTES
table (MySQL 8.0.21版本)提供了关于用户评论和用户属性的信息。它从mysql.user
系统表。
的USER_ATTRIBUTES
表有以下列:
用户
所指向的帐户的用户名部分
属性
列值适用。宿主
控件所指向的帐户的主机名部分
属性
列值适用。属性
控件指定的帐户的用户注释、用户属性或两者都属于
用户
和宿主
列。JSON对象表示。属性完全显示为使用创建用户……属性……
或改变用户……属性……
声明。用户注释显示为具有的键值对评论
作为键。例如,语句
CREATE USER 'bill'@'localhost' COMMENT ' ATTRIBUTE {"foo": "bar", "bazz": "fazz"}'
将以下行添加到USER_ATTRIBUTES
表:+------+-----------+--------------------------------------------------------+ | 主机用户| |属性 | +------+-----------+--------------------------------------------------------+ | 比尔| localhost |{“foo”:“酒吧”,“bazz”:“fazz”、“评论”:“一个评论 "} | +------+-----------+--------------------------------------------------------+
笔记
USER_ATTRIBUTES
是一个非标准的INFORMATION_SCHEMA
表格为了只获得给定用户的用户评论作为一个不带引号的字符串,你可以使用这样的查询:
SELECT ATTRIBUTE->>"$. Comment " AS Comment -> FROM INFORMATION_SCHEMA。USER_ATTRIBUTES -> WHERE USER='bill' AND HOST='localhost';+-----------+ | 评论 | +-----------+ | 一个评论 | +-----------+
类似地,可以使用给定用户属性的键来获取其未加引号的值。
在MySQL 8.0.22之前,
USER_ATTRIBUTES
任何人都可以访问内容。从MySQL 8.0.22开始,USER_ATTRIBUTES
内容可在下列地点查阅:所有行都是可访问的,如果:
当前线程是一个复制线程。
访问控制系统尚未初始化(例如,服务器使用
——skip-grant-tables
选项)。当前通过身份验证的帐户具有
创建用户
和SYSTEM_USER
特权。
否则,当前经过身份验证的帐户可以看到该帐户的行。此外,如果帐户有
创建用户
特权却不是SYSTEM_USER
特权,它可以看到不具有SYSTEM_USER
特权。
有关指定帐户注释和属性的详细信息,请参见第13.7.1.3节,"创建用户语句".