ユーザー、役割、および特権の管理
MySQL 5.7 は、役割のシステムを使用してデータベースの許可を管理します。 UI と MySQL Shell の両方からユーザーを作成します。 UIから作成されたユーザーは、 admin
とほぼ同じ権限を持つが、他のユーザーを作成することはできない。 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 USER
、 ALTER USER
、 RENAME 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 を使用して、ユーザーを作成できます。
デプロイメント上のすべてのユーザーは、パブリック・エンドポイントまたはプライベート・エンドポイントの接続ストリングなどの接続ストリングを使用できます。
ユーザーを作成するときには、特定のデータベースの役割と特権をユーザーに割り当てます。 これらの特権には、ログイン、データベースの作成、他のユーザーの作成などの権限があります。 詳しくは、ユーザー、役割、および特権の管理のページを参照してください。
*「サービス資格情報」*でのユーザーの作成
- サービスのダッシュボードに移動します。
- _「サービス資格情報」をクリックして、「サービス資格情報」_パネルを開きます。
- **「新規資格情報」**をクリックします。
- 新規資格情報にわかりやすい名前を選びます。
- (オプション) 新規資格情報でパブリックまたはプライベートのどちらのエンドポイントを使用するかを指定します。 _「インラインの構成パラメーターの追加」_フィールドで
{ "service-endpoints": "public" }
/{ "service-endpoints": "private" }
のいずれかを使用すると、指定したエンドポイントを使用した接続文字列を生成できます。 そのエンドポイントを使用することが強制されるわけではありません。 接続文字列に含まれるホスト名が制御されるだけです。 パブリック・エンドポイントはデフォルトで生成されます。 - **「追加」**をクリックして新規資格情報をプロビジョンします。 ユーザー名とパスワード、および 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」が接続文字列に入力された_サービス資格情報_が生成されます。
既存のユーザーの資格情報を生成するときに、そのユーザーが存在するか検査されたり、そのユーザーが作成されたりすることはありません。