MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  INFORMATION_SCHEMA テーブル  /  INFORMATION_SCHEMA USER_ATTRIBUTES テーブル

26.46 INFORMATION_SCHEMA USER_ATTRIBUTES テーブル

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 ステートメント」 を参照してください。


関連キーワード:  テーブル, SCHEMA, INFORMATION, INNODB, ATTRIBUTES, アカウント, ユーザー, ATTRIBUTE, TABLE, ステートメント