USER_ATTRIBUTES
テーブル (MySQL 8.0.21 で使用可能) には、ユーザーコメントおよびユーザー属性に関する情報が表示されます。 mysql.user
システムテーブルから値を取得します。
USER_ATTRIBUTES
テーブルには、次のカラムがあります:
-
USER
ATTRIBUTE
カラムの値が適用されるアカウントのユーザー名部分。 -
HOST
ATTRIBUTE
カラムの値が適用されるアカウントのホスト名部分。 -
ATTRIBUTE
USER
カラムおよびHOST
カラムで指定されたアカウントに属するユーザーコメントまたはユーザー属性 (あるいはその両方)。 値は JSON オブジェクト表記です。 属性は、CREATE USER ... ATTRIBUTE ...
ステートメントまたはALTER USER ... ATTRIBUTE ...
ステートメントを使用して設定されたとおりに表示されます。 ユーザーコメントは、キーとしてcomment
を持つキーと値のペアとして表示されます。たとえば、
CREATE USER 'bill'@'localhost' COMMENT 'A comment' ATTRIBUTE '{"foo": "bar", "bazz": "fazz"}'
というステートメントでは、USER_ATTRIBUTES
テーブルに次の行が追加されます:+------+-----------+--------------------------------------------------------+ | USER | HOST | ATTRIBUTE | +------+-----------+--------------------------------------------------------+ | bill | localhost | {"foo": "bar", "bazz": "fazz", "comment": "A comment"} | +------+-----------+--------------------------------------------------------+
メモ
USER_ATTRIBUTES
は非標準のINFORMATION_SCHEMA
テーブルです。-
引用符で囲まれていない文字列として特定のユーザーのユーザーコメントのみを取得するには、次のようなクエリーを使用できます:
mysql> SELECT ATTRIBUTE->>"$.comment" AS Comment -> FROM INFORMATION_SCHEMA.USER_ATTRIBUTES -> WHERE USER='bill' AND HOST='localhost'; +-----------+ | Comment | +-----------+ | A comment | +-----------+
同様に、キーを使用して、特定のユーザー属性の引用符で囲まれていない値を取得できます。
-
MySQL 8.0.22 より前は、
USER_ATTRIBUTES
のコンテンツには誰でもアクセスできます。 MySQL 8.0.22 では、USER_ATTRIBUTES
の内容に次のようにアクセスできます:-
次の場合、すべての行にアクセスできます:
現在のスレッドはレプリカスレッドです。
アクセス制御システムが初期化されていません (たとえば、
--skip-grant-tables
オプションを使用してサーバーを起動した場合)。現在認証されているアカウントには、
mysql.user
システムテーブルに対するUPDATE
またはSELECT
権限があります。現在認証されているアカウントには、
CREATE USER
およびSYSTEM_USER
権限があります。
それ以外の場合、現在認証されているアカウントはそのアカウントの行を表示できます。 また、アカウントに
CREATE USER
権限はあるがSYSTEM_USER
権限はない場合、SYSTEM_USER
権限を持たない他のすべてのアカウントの行を表示できます。
-
アカウントコメントおよび属性の指定の詳細は、セクション13.7.1.3「CREATE USER ステートメント」 を参照してください。