的USER_ATTRIBUTES
表(MySQL 8.0.21可用)提供了关于用户评论和用户属性的信息。它的值来自mysql.user
系统表。
的USER_ATTRIBUTES
表有这些列:
用户
属性所指向的帐户的用户名部分
属性
应用列值。宿主
属性所指向的帐户的主机名部分
属性
应用列值。属性
属性指定的帐户的用户注释、用户属性或两者都属于
用户
而且宿主
列。JSON对象表示形式。属性的显示与使用创建用户…属性……
或Alter user…属性……
声明。用户注释显示为具有的键值对评论
作为钥匙。例如,语句
CREATE USER 'bill'@'localhost' COMMENT '注释' ATTRIBUTE '{"foo": "bar", "bazz": "fazz"}'
属性中添加以下行USER_ATTRIBUTES
表:+------+-----------+--------------------------------------------------------+ | 主机用户| |属性 | +------+-----------+--------------------------------------------------------+ | 比尔| localhost |{“foo”:“酒吧”,“bazz”:“fazz”、“评论”:“一个评论 "} | +------+-----------+--------------------------------------------------------+
笔记
USER_ATTRIBUTES
是非标准的INFORMATION_SCHEMA
表格为了只获取给定用户的非引号字符串的用户注释,你可以使用这样的查询:
mysql> 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
特权。
有关指定帐户注释和属性的详细信息,请参见CREATE USER语句.