データ管理 (DMS) は、MySQLデータベースの詳細な権限制御をサポートしています。 たとえば、データベース、テーブル、フィールド、およびビューに対する権限を管理できます。 このトピックでは、DMSでMySQLデータベースのユーザー権限を管理する方法について説明します。
前提条件
ApsaraDB RDS for MySQL、PolarDB for MySQL、AnalyticDB for MySQLインスタンス、自己管理型MySQLデータベース、ネイティブMariaDBデータベース、またはApsaraDB for MariaDBデータベースが使用されています。
DMS管理者、データベース管理者 (DBA) 、またはインスタンスの所有者などの通常のユーザーです。 詳細については、「システムロール」をご参照ください。
MongoDBデータベースのデータベースアカウントとデータベースパスワードが取得されます。
概要
対応するコンソールで、ApsaraDB RDS for MySQLインスタンスまたはPolarDB for MySQLインスタンスのMySQLデータベースに対する大まかな権限を管理できます。 たとえば、他のユーザーにMySQLデータベースの読み取り専用権限または読み取りおよび書き込み権限を付与できます。 MySQLデータベースでDMLステートメントまたはDDLステートメントを実行する権限を他のユーザーに付与することもできます。 ただし、より柔軟できめ細かい権限管理が必要な場合があります。 この場合、DMSのユーザー権限管理機能を使用できます。 例:
SELECT
ステートメントとUPDATE
ステートメントを実行するためのグローバル権限をユーザーAに付与できます。説明グローバル権限は、データベースインスタンス内のすべてのデータベースに適用されます。 詳細については、「サポートされているグローバル権限」をご参照ください。
ユーザーBに、テーブルに対して
SELECT
ステートメントを実行する権限、またはフィールドに対してUPDATE
ステートメントを実行する権限を付与できます。説明詳細な権限は、データベースインスタンス内の特定のデータベースまたはすべてのデータベースに適用できます。 詳細については、「サポートされている詳細権限」をご参照ください。
ユーザーの作成
DMSコンソールV5.0 にログインします。
PostgreSQLデータベースにログインします。 詳細については、「データベースインスタンスへのログイン」をご参照ください。
DMSコンソールの左側のナビゲーションウィンドウで、管理するインスタンスを右クリックし、アカウント管理 を選択します。
説明DMSコンソールにシンプルモードでログインする場合は、左側のナビゲーションウィンドウで [データベースインスタンス] をクリックします。 表示されるインスタンスリストで、管理するインスタンスを右クリックし、アカウント管理 を選択します。
アカウント管理 ページで、左上の 作成ユーザー をクリックします。
[ユーザーの作成] ダイアログボックスで、次の手順を実行します。
基本設定 タブで、次の表に示すパラメーターを設定します。
パラメーター
説明
ユーザー名
データベースへのログインに使用するユーザーの名前。
ホスト
アカウントがIPアドレスからデータベースにアクセスできることを示します。
説明このパラメーターを設定しない場合、ユーザーは特定のIPアドレスから許可されたデータベースにアクセスすることに制限されません。 このパラメーターのデフォルト値は
%
です。パスワード
現在のインスタンスのデータベースへのログインに使用するパスワード。
パスワードの確認
パスワードをもう一度入力して、パスワードを確認します。
説明上記のパラメーターを設定すると、DMSは設定したパラメーターに基づいてSQL文を自動的に生成します。 次に、DMSは現在のインスタンスの各データベースのステートメントを実行します。 SQL文の構文は、
CREATE USER 'Username' @ 'Hostname' IDENTIFIED BY 'Password';
です。[詳細オプション] をクリックすると、さらに設定を完了できます。
たとえば、次の図に示すように、ユーザーに特定の制限を設定できます。 この場合、DMSは次のSQL文を生成して実行します。
GRANT USAGE ON *.* TO 'Username'@'Hostname' WITH MAX_QUERIES_PER_HOUR 100 MAX_UPDATES_PER_HOUR 200 MAX_CONNECTIONS_PER_HOUR 300 MAX_USER_CONNECTIONS 400;
グローバル権限 タブをクリックし、ユーザーに付与する1つ以上の権限を選択します。
説明必要な権限が見つからない場合、その権限はインスタンスでサポートされていないか、Alibaba Cloudアカウントに権限を付与する権限がありません。 標準アカウントを使用する場合は、特権アカウントを使用してDMSコンソールにログインし、この手順を再試行します。
オブジェクトのアクセス許可 タブをクリックし、パラメーターを設定して、ユーザーにきめ細かい権限を付与します。
たとえば、次の図に示すように、ユーザーがデータベース内のデータを照会または挿入したり、データベース内のテーブルからデータを削除したりできるようにすることができます。 この場合、DMSは次のSQL文を生成して実行します。
GRANT SELECT,INSERT ON 'rds_db'.* TO 'Username' @ 'Hostname'; GRANT DELETE ON 'rds_db'.'rds_table' TO 'Username' @ 'Hostname';
確認 をクリックします。
Sqlのプレビュー メッセージで、確認 をクリックします。
説明SQL文は、設定したパラメーターに基づいて生成できます。 データベースインスタンスがSecurity Collaborationモードで管理されている場合、セキュリティルールによりSQL文の実行に失敗することがあります。 この場合、画面上の指示に従って操作を実行するか、データベース管理者 (DBA) またはDMS管理者に連絡することができます。 セキュリティルールの変更方法については、「このトピックのFAQ」をご参照ください。
ユーザーの変更または削除
管理を許可されているユーザーのユーザー名、パスワード、グローバル権限、詳細権限を変更できます。
DMSコンソールV5.0 にログインします。
DMSコンソールの左側のナビゲーションウィンドウで、管理するインスタンスを右クリックし、アカウント管理 を選択します。
説明DMSコンソールにシンプルモードでログインする場合は、左側のナビゲーションウィンドウで [データベースインスタンス] をクリックします。 表示されるインスタンスリストで、管理するインスタンスを右クリックし、アカウント管理 を選択します。
[アカウント管理] ページで、管理するユーザーを探し、[操作] 列の [編集] をクリックしてユーザーに関する情報を変更するか、[操作] 列の [削除] をクリックしてユーザーを削除します。
サポートされているグローバル権限
権限 | オブジェクト | 説明 |
CREATE | データベース、テーブル、またはインデックス | ユーザーがデータベース、テーブル、またはインデックスを作成できるようにします。 |
DROP | データベース、テーブル、またはビュー | ユーザーがデータベース、テーブル、またはビューを削除できるようにします。 |
GRANTオプション | データベース、テーブル、またはストアドプロシージャ | ユーザーが他のユーザーに1つ以上の権限を付与または取り消すことを許可します。 |
REFERENCES | データベース、テーブル、またはフィールド | ユーザーがデータベース、テーブル、またはフィールドを参照するための外部キーを作成できるようにします。 |
LOCK TABLES | データベース | ユーザーがデータベース内のテーブルをロックできるようにします。 |
EVENT | データベース | ユーザーがデータベース内のイベントを照会、作成、変更、または削除できるようにします。 |
ALTER | テーブルまたはビュー | ユーザーがテーブルまたはビューを変更できるようにします。 例えば、ユーザは、テーブルにフィールドを追加したり、インデックスを作成したり、テーブル内のフィールドを変更したりすることができる。 |
DELETE | 表 | ユーザーがテーブルからデータを削除できるようにします。 |
INDEX | 表 | ユーザーがテーブルのインデックスを作成または削除できるようにします。 |
INSERT | テーブルまたはフィールド | ユーザーがテーブルまたはフィールドにデータを挿入できるようにします。 |
SELECT | テーブルまたはフィールド | ユーザーがテーブルまたはフィールド内のデータを照会できるようにします。 |
UPDATE | テーブルまたはフィールド | ユーザーがテーブルまたはフィールドのデータを更新できるようにします。 |
ビューの作成 | ビュー | ユーザーがビューを作成できるようにします。 |
SHOW VIEW | ビュー | ユーザーがビューをチェックできるようにします。 |
TRIGGER | トリガー | ユーザーがトリガーを作成、削除、実行、または表示できるようにします。 |
ALTER ROUTINE | ストアドプロシージャ | ユーザーがストアドプロシージャを変更できるようにします。 |
CREATE ROUTINE | ストアドプロシージャ | ユーザーがストアドプロシージャを作成できるようにします。 |
EXECUTE | ストアドプロシージャ | ユーザーがストアドプロシージャを実行できるようにします。 |
FILE | サーバホストでのファイルアクセス | ユーザーがサーバーホスト上のファイルにアクセスできるようにします。 |
CREATE TEMPORARY TABLES | サーバー管理 | ユーザーがサーバー上に一時テーブルを作成できるようにします。 |
CREATE USER | サーバー管理 | ユーザーがサーバー上にユーザーを作成できるようにします。 |
PROCESS | サーバー管理 | ユーザーがサーバー上で実行されているスレッドに関する情報を照会できるようにします。 |
RELOAD | サーバー管理 |
|
REPLICATION CLIENT | サーバー管理 | ユーザーは、プライマリサーバー、レプリカサーバー、およびバイナリログのステータスを確認できます。 この権限はレプリケーションに必要です。 レプリカサーバーをソースサーバーに接続するために作成されたユーザーにこの権限を付与します。 |
REPLICATION SLAVE | サーバー管理 | ユーザーは、プライマリサーバー、レプリカサーバー、およびバイナリログのステータスを確認できます。 この権限はレプリケーションに必要です。 レプリカサーバーをソースサーバーに接続するために作成されたユーザーにこの権限を付与します。 |
データを表示する | サーバー管理 | ユーザーがサーバー上のすべてのデータベースの名前を表示できるようにします。 |
シャットダウン | サーバー管理 | ユーザーがサーバーをシャットダウンできるようにします。 |
スーパー | サーバー管理 | ユーザーがKILLステートメントを実行して、サーバー上で実行されているスレッドを終了できるようにします。 説明 ApsaraDB RDS for MySQLおよびApsaraDB for MariaDBはSUPER権限をサポートしていません。 |
サポートされている詳細な権限
権限 | オブジェクト | 説明 |
CREATE | データベース、テーブル、またはインデックス | ユーザーがデータベース、テーブル、またはインデックスを作成できるようにします。 |
DROP | データベース、テーブル、またはビュー | ユーザーがデータベース、テーブル、またはビューを削除できるようにします。 |
GRANTオプション | データベース、テーブル、またはストアドプロシージャ | ユーザーが他のユーザーに1つ以上の権限を付与または取り消すことを許可します。 |
REFERENCES | データベース、テーブル、またはフィールド | ユーザーがデータベース、テーブル、またはフィールドを参照するための外部キーを作成できるようにします。 |
LOCK TABLES | データベース | ユーザーがデータベース内のテーブルをロックできるようにします。 |
EVENT | データベース | ユーザーがデータベース内のイベントを照会、作成、変更、または削除できるようにします。 |
ALTER | テーブルまたはビュー | ユーザーがテーブルまたはビューを変更できるようにします。 例えば、ユーザは、テーブルにフィールドを追加したり、インデックスを作成したり、テーブル内のフィールドを変更したりすることができる。 |
DELETE | 表 | ユーザーがテーブルからデータを削除できるようにします。 |
INDEX | 表 | ユーザーがテーブルのインデックスを作成または削除できるようにします。 |
INSERT | テーブルまたはフィールド | ユーザーがテーブルまたはフィールドにデータを挿入できるようにします。 |
SELECT | テーブルまたはフィールド | ユーザーがテーブルまたはフィールド内のデータを照会できるようにします。 |
UPDATE | テーブルまたはフィールド | ユーザーがテーブルまたはフィールドのデータを更新できるようにします。 |
ビューの作成 | ビュー | ユーザーがビューを作成できるようにします。 |
SHOW VIEW | ビュー | ユーザーがビューをチェックできるようにします。 |
TRIGGER | トリガー | ユーザーがトリガーを作成、削除、実行、または表示できるようにします。 |
よくある質問
Q: CREATE USERステートメントを実行して、セキュリティルールのために特定のアクセス許可を持つユーザーを作成できないことがシステムから通知されるのはなぜですか。
A: 返されたエラーメッセージに基づいてエラーをトラブルシューティングします。 以下の手順を実行します。
インスタンスに設定されているセキュリティルールセットを照会します。
左側のナビゲーションウィンドウで、現在のインスタンスを右クリックし、[詳細を表示] を選択します。
セキュリティルールを変更します。
最初に DMSコンソールV5.0
上部のナビゲーションバーで、
を選択します。[セキュリティルール] タブで、管理するセキュリティルールセットを見つけ、[操作] 列の [編集] をクリックします。
左側のナビゲーションウィンドウで、[SQL Correct] をクリックします。
[チェックポイント] パラメーターを [SQL実行ルール] に設定します。
セキュリティルールリストで、[すべてのDCLはSQLConsoleで直接実行できます] セキュリティルールを見つけ、[操作] 列の [編集] をクリックします。
[Change Rule - SQL Correct] ダイアログボックスで、SQLエディターにCREATE_USERを追加します。
[送信] をクリックします。