すべてのプロダクト
Search
ドキュメントセンター

PolarDB:アカウントと権限管理

最終更新日:Aug 28, 2026

このトピックでは、アカウントと権限の管理方法について説明します。

PolarDB-X のアカウントと権限システムは MySQL 5.7 と互換性があります。GRANT、REVOKE、SHOW GRANTS、CREATE USER、DROP USER、SET PASSWORD などのステートメントをサポートしています。データベースレベルおよびテーブルレベルで権限を付与できます。グローバルレベルおよびカラムレベルの権限はサポートされていません。

アカウントの作成

構文

CREATE USER [IF NOT EXISTS] user IDENTIFIED BY 'password';

パラメーター

user パラメーターはアカウントを指定します。アカウントはユーザー名とホスト名の組み合わせです。形式は 'username'@'host' です。

  • username は次のルールに従う必要があります。

    • 大文字と小文字を区別します。

    • 長さは 4 文字以上 20 文字以内です。

    • 文字で始まる必要があります。

    • 大文字、小文字、数字を含めることができます。

  • host は、ユーザーがログインできるホストを指定します。アカウントは、ユーザー名とホスト名の組み合わせによって一意に識別されます。host は次のルールに従う必要があります。

    • host は IP アドレスでなければなりません。_ および % ワイルドカードを使用できます。ワイルドカードを含む host 値は、単一引用符で囲む必要があります。例: lily@'30.9.%.%' および david@'%'。

      説明

      _ は 1 文字に一致し、% は 0 文字以上に一致します。

    • ログイン試行に 2 つのユーザーアカウントが一致する場合、システムはプレフィックスが最も長く一致するアカウントを使用します。例えば、システムに david@'30.9.12_.234' と david@'30.9.1%.234' という 2 つのユーザーがいる場合、ホスト 30.9.127.234 からの david のログイン試行では、david@'30.9.12_.234' アカウントが使用されます。

    • 仮想プライベートクラウド (VPC) を使用する場合、ホスト IP アドレスが変更される可能性があります。アカウントと権限の設定が無効にならないようにするには、host を '%' に設定することで、任意の IP アドレスに一致させることができます。

  • password パラメーターは次の要件を満たす必要があります。

    • 長さは 6 文字以上 20 文字以内です。

    • 大文字、小文字、数字、および次の特殊文字を含めることができます: @#$%^&+=。

例

CREATE USER 'user1'@'127.0.0.1' IDENTIFIED BY '123456';

CREATE USER IF NOT EXISTS 'user2'@'%' identified by '123456';

アカウントパスワードの変更

構文

SET PASSWORD FOR user = PASSWORD('auth_string')

例

SET PASSWORD FOR 'user1'@'127.0.0.1' = PASSWORD('654321');
説明

SQL ステートメントを使用して特権アカウントのパスワードを変更することはできません。

アカウントの削除

構文

DROP USER user;

例

DROP USER 'user2'@'%';
説明

SQL ステートメントを使用して特権アカウントを削除することはできません。

アカウントへの権限の付与

構文

GRANT privileges ON database.table TO user;

パラメーター

privileges パラメーターは特権タイプを指定します。権限レベルは、上位から順に、グローバルレベル (サポート対象外)、データベースレベル、テーブルレベル、カラムレベルです。PolarDB-X は、テーブルに関する 8 つの基本特権をサポートしています: CREATE、DROP、ALTER、INDEX、INSERT、DELETE、UPDATE、SELECT。

  • TRUNCATE 操作には、テーブルに対する DROP 特権が必要です。

  • REPLACE 操作には、テーブルに対する INSERT および DELETE 特権が必要です。

  • CREATE INDEX および DROP INDEX 操作には、テーブルに対する INDEX 特権が必要です。

  • CREATE SEQUENCE には、データベースレベルの CREATE 特権が必要です。

  • DROP SEQUENCE には、データベースレベルの DROP 特権が必要です。

  • ALTER SEQUENCE には、データベースレベルの ALTER 特権が必要です。

  • INSERT ON DUPLICATE UPDATE ステートメントには、テーブルに対する INSERT および UPDATE 特権が必要です。

例

GRANT SELECT,UPDATE ON `db1`.* TO 'user1'@'127.0.0.1';
説明

SQL ステートメントを使用して特権アカウントに権限を付与することはできません。

アカウント権限の表示

構文

SHOW GRANTS [FOR user];
説明

current_user() を使用して、現在のユーザーを表示できます。

例

SHOW GRANTS FOR 'user1'@'127.0.0.1';
+------------------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1'                       |
+------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'            |
| GRANT SELECT, UPDATE ON db1.* TO 'user1'@'127.0.0.1' |
+------------------------------------------------------+

SHOW GRANTS FOR current_user();
+------------------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1'                       |
+------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'            |
| GRANT SELECT, UPDATE ON db1.* TO 'user1'@'127.0.0.1' |
+------------------------------------------------------+

アカウントからの権限の取り消し

構文

REVOKE privileges ON database.table FROM user;

例

REVOKE UPDATE ON db1.* FROM 'user1'@'127.0.0.1';

SHOW GRANTS FOR 'user1'@'127.0.0.1';
+----------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1'               |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'    |
| GRANT SELECT ON db1.* TO 'user1'@'127.0.0.1' |
+----------------------------------------------+
説明

SQL ステートメントを使用して特権アカウントから権限を取り消すことはできません。