ユーザー、役割、および特権の管理

MySQL データベースの権限管理にロールシステムを使用します。 ユーザーはUIと MySQL シェル から両方作成できます。 UIから作成されたユーザーは、 admin とほぼ同等の権限を持ちますが、他のユーザーを作成することはできません。 には と CREATE USER の両 GRANT 方のオプション admin があるため、ユーザーを作成し、自身が持つすべての権限(新規ユーザー作成権限を含む)を付与することができます。

mysql> SELECT DISTINCT GRANTEE FROM information_schema.user_privileges;
+-----------------------------+
| GRANTEE                     |
+-----------------------------+
| 'ibm'@'localhost'           |
| 'mysql.session'@'localhost' |
| 'mysql.sys'@'localhost'     |
| 'ibm-backup'@'localhost'    |
| 'admin'@'%'                 |
| 'ibm-replication'@'%'       |
| 'ibm-monitor'@'%'           |
+-----------------------------+
+-----------------+
| user            |
+-----------------+
| admin           |
| ibm-monitor     |
| ibm-replication |
| ibm             |
| ibm-backup      |
| mysql.session   |
| mysql.sys       |
+-----------------+

以下のユーザーは IBM Cloud によって保守されているため、お客様が変更したり削除したりしてはなりません。


| ibm-monitor     |
| ibm-replication |
| ibm             |
| ibm-backup      |

IBM Cloud で新しいデプロイメントをプロビジョニングすると、 MySQL にアクセスして管理するためのユーザーが admin 自動的に付与されます。

サービス資格情報Cloud Databases CLI プラグイン、または Cloud Databases API を使用して、UI でユーザーを追加します。

ユーザー管理コマンド

セキュリティー上の理由から、mysql.user テーブルに対して DML (データ操作言語) 照会を実行することはお勧めしていません。 mysql.user テーブルを変更しないようにために、DML 照会を使用してユーザーを管理する必要があります。

CREATE USERALTER USERRENAME USER、および DROP USER などのコマンドを使用してユーザーを管理します。

以下のコマンドを実行すると、ユーザーのリストとそのホスト情報を、認証情報とパスワード・ハッシュなしで抽出できます。

mysql> SELECT DISTINCT GRANTEE FROM information_schema.user_privileges;

admin ユーザー

IBM Cloud で新規デプロイメントをプロビジョンすると、MySQL へのアクセスおよび管理を行うための admin ユーザーが自動的に付与されます。 管理者パスワードを設定 したら、それを使用してデプロイメントに接続します。

データベースにテーブルなどのリソースを作成 admin すると、そのオブジェクトを所有します admin。 UIから作成されたユーザーは権限を付与されるため *.*、新規作成されたユーザーは自動的に全てのデータベースを閲覧可能となる。 MySQL sh を使用するか、UI で作成されたユーザーの権限を変更してアクセスを制限します。 権限を制限するには、有効になっている場合はグローバル権限を削除し、特定のユーザーがアクセス権を持つことが想定されるデータベースやデータベース・セットに権限を付与します。

接続に使用する前に管理者パスワードを設定してください。

UIで管理者パスワードを設定する

IBM Cloud ダッシュボードのリソースリストからインスタンスを選択し、UIから管理者パスワードを設定します。 次に、 「設定」 を選択します。 次に、 Change Database Admin Password を選択します。

CLIでadminパスワードを設定する

IBM Cloud CLI Cloud Databases プラグインから cdb user-password コマンドを使用して、管理パスワードを設定します。

たとえば、という名前のデプロイメントの example-deployment 管理者パスワードを設定するには、次のコマンドを使用します:

ibmcloud cdb user-password example-deployment admin <newpassword>

APIでの管理者パスワードの設定

サービスの概要パネルの「デプロイメント詳細」セクションに表示される「Foundation Endpoint」は、API経由でこのデプロイメントにアクセスするための基本 URL を提供します。 これを 「指定されたユーザーのパスワードの設定」 エンドポイントとともに使用して、管理者パスワードを設定します。

curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \

その他の ibm ユーザー

ibm および ibm-replication アカウントは、デプロイメントにおける唯一のスーパーユーザーです。 スーパーユーザー・アカウントをユーザーが使用することはできません。 これらのユーザーは、デプロイメントの安定性を確保するレプリケーション、メトリック、およびその他の機能を管理する内部管理アカウントです。

mysql で作成されたユーザー

IBM Cloud を使用したユーザーの作成を完全にバイパスし、mysql を使用して MySQL で直接ユーザーを作成することができます。 直接作成すると、MySQL 固有の役割およびユーザー管理を使用できます。 で作成されたユーザー/ロールは、すべての権限を手動で設定する必要 mysql があり、また自身が作成するオブジェクトに対する権限も設定する必要があります。

MySQL で直接作成されたユーザーは、_「サービス資格情報」_には表示されませんが、選択した場合は追加することが可能です。

これらのユーザーは、_サービス資格情報_に追加された場合でも、IAM の制御と統合されないことに注意してください。

テーブルへのユーザー・アクセス

mysql database を削除することはできませんが、ユーザーは、内部ユーザーを含む mysql.users テーブルを含めて、テーブルをドロップすることができます。 mysql database に属するテーブルを削除すると、構成が破損し、ポイント・イン・タイム。リカバリー (PITR) でしか解決できないため、クライアントはそれらのテーブルを削除してはなりません。

IBM Cloud クライアントによってシステムテーブルが削除されたために形成が破られた場合、警告を発しません。

その他のユーザーと接続ストリング

Databases for MySQL デプロイメントへのアクセスは、管理者ユーザーだけに制限されません。 _「サービス資格情報」_パネル、IBM CLI、または IBM Cloud Databases API を使用して、ユーザーを作成できます。

デプロイメント上のすべてのユーザーは、パブリック・エンドポイントまたはプライベート・エンドポイントの接続ストリングなどの接続ストリングを使用できます。

ユーザーを作成するときには、特定のデータベースの役割と特権をユーザーに割り当てます。 これらの特権には、ログイン、データベースの作成、他のユーザーの作成などの権限があります。 詳しくは、ユーザー、役割、および特権の管理のページを参照してください。

*「サービス資格情報」*でのユーザーの作成

  1. サービスのダッシュボードに移動します。
  2. _「サービス資格情報」をクリックして、「サービス資格情報」_パネルを開きます。
  3. **「新規資格情報」**をクリックします。
  4. 新規資格情報にわかりやすい名前を選びます。
  5. (オプション) 新規資格情報でパブリックまたはプライベートのどちらのエンドポイントを使用するかを指定します。 _「インラインの構成パラメーターの追加」_フィールドで { "service-endpoints": "public" } / { "service-endpoints": "private" } のいずれかを使用すると、指定したエンドポイントを使用した接続文字列を生成できます。 そのエンドポイントを使用することが強制されるわけではありません。 接続文字列に含まれるホスト名が制御されるだけです。 パブリック・エンドポイントはデフォルトで生成されます。
  6. **「追加」**をクリックして新規資格情報をプロビジョンします。 ユーザー名とパスワード、および MySQL データベース内に関連するデータベース・ユーザーが自動生成されます。

新しい資格情報が表に表示されます。接続文字列は JSON として_「資格情報の表示」_のクリックしてコピーできるフィールドに表示されます。

コマンド・ラインからのユーザーの作成

IBM Cloud CLI と Cloud Databases プラグインを使用してサービスを管理する場合は、cdb user-create を使用して新規ユーザーを作成できます。 例えば、「example-deployment」に新規ユーザーを作成するには、次のコマンドを使用します。

ibmcloud cdb user-create example-deployment <newusername> <newpassword>

このタスクが完了したら、ibmcloud cdb deployment-connections コマンドを使用して、新規ユーザーの接続文字列を取得できます。

API を使用したユーザーの作成

サービスの_「概要」パネルの「デプロイメントの詳細」_に表示される_基本エンドポイント_は、API を介してこのデプロイメントにアクセスするための基本 URL を提供します。 ユーザーを作成および管理するには、その基本 URL に /users エンドポイントを付けて使用します。

curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"username":"jane_smith", "password":"newsupersecurepassword"}'

タスクが終了したら、/users/{userid}/connections エンドポイントから新規ユーザーの接続ストリングを取得できます。

_サービス資格情報_へのユーザーの追加

CLI から新規ユーザーを作成しても、そのユーザーの接続文字列は_サービス資格情報_に自動的に入力されません。 ここにユーザーを追加するには、既存のユーザー情報を使用して新規資格情報を作成します。

JSON フィールドの_「インラインの構成パラメーターの追加」_にユーザー名およびパスワードを入力するか、JSON 情報を保管するファイルを指定します。 例えば、フィールドに {"existing_credentials":{"username":"Robert","password":"supersecure"}} と入力すると、ユーザー名「Robert」とパスワード「supersecure」が接続文字列に入力された_サービス資格情報_が生成されます。

既存のユーザーの資格情報を生成するときに、そのユーザーが存在するか検査されたり、そのユーザーが作成されたりすることはありません。