このページでは、Cloud SQL の組み込み認証を有効にして使用する方法について説明します。
概要については、Cloud SQL の組み込みデータベース認証をご覧ください。ユーザーを作成する前に
- Cloud SQL インスタンスを作成する詳細については、インスタンスの作成をご覧ください。
データベースの管理クライアントを使用してユーザーを管理する場合は、次の操作を行います。
クライアントをインスタンスに接続します。外部アプリケーション用の接続オプションをご覧ください。
パスワードを設定して、インスタンスのデフォルト ユーザーを構成します。デフォルト ユーザー アカウントのパスワードを設定するをご覧ください。
デフォルト ユーザー アカウントのパスワードを設定する
新しい Cloud SQL インスタンスを作成する場合、インスタンスに接続するには、デフォルト ユーザー アカウントのパスワードを設定する必要があります。
Cloud SQL for MySQL では、デフォルト ユーザーはroot@%
です。
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
root
ユーザーを検索し、その他の操作メニューから [パスワードを変更] を選択します。
パスワードに関する上のリストをご覧ください。これは、インスタンスに対して設定されたパスワード ポリシーから派生したものです。
- 覚えやすく強力なパスワードを指定し、[OK] をクリックします。
gcloud
デフォルト ユーザーのパスワードを設定するには、次のように gcloud sql users set-password
コマンドを使用します。
コマンドを実行する前に、INSTANCE_NAME をインスタンスの名前に置き換えます。
gcloud sql users set-password root \ --host=% \ --instance=INSTANCE_NAME \ --prompt-for-password
REST v1
デフォルトのユーザー アカウントのパスワードを更新するには、users:update メソッドを指定して PUT リクエストを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- password: ユーザーのパスワード
HTTP メソッドと URL:
PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=root&host=%25
JSON 本文のリクエスト:
{ "name": "root", "password": "password" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
デフォルトのユーザー アカウントのパスワードを更新するには、users:update メソッドを指定して PUT リクエストを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- password: ユーザーのパスワード
HTTP メソッドと URL:
PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=root&host=%25
JSON 本文のリクエスト:
{ "name": "root", "password": "password" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
ユーザーを作成する
デフォルトのユーザー アカウントを設定した後、他のユーザーを作成できます。
コンソール
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
- [ユーザー アカウントを追加] をクリックします。
[ユーザー アカウントをインスタンス instance_name に追加] ページで、ユーザーが組み込みのデータベース メソッド(ユーザー名とパスワード)を使用して認証を行うか、IAM ユーザーとして認証を行うかを選択できます。
- [組み込み認証](デフォルト)を選択し、次の情報を追加します。
- ユーザー名
- 省略可。パスワード覚えやすく強力なパスワードを指定します。
- 省略可。ユーザー パスワード ポリシー。
- [ホスト名] セクションのデフォルト値は [すべてのホストを許可] です。つまり、ユーザーは任意の IP アドレスから接続できます。 必要に応じて、[IP アドレスまたはアドレス範囲でホストを制限する] を選択し、[ホスト] セクションに IP アドレスまたはアドレス範囲を入力します。これで、ユーザーは指定した IP アドレスからのみ接続できます。
- [Add(追加)] をクリックします。
MySQL 8.0 と Cloud SQL の認証方法を使用するインスタンス上に作成されたユーザーには、cloudsqlsuperuser
ロールが自動的に付与されます。このロールに関連付けられている権限は、CREATEROLE
、CREATEDB
、LOGIN
です。
MySQL 5.7 と Cloud SQL の認証方法を使用して作成されたインスタンスには、FILE
と SUPER
を除くすべての権限が自動的に付与されます。これらのユーザーの権限を変更する必要がある場合は、mysql
クライアントで GRANT コマンドまたは REVOKE コマンドを使用します。
gcloud
ユーザーを作成するには、gcloud sql users create
コマンドを使用します。
以下を置き換えます。
- USER_NAME: ユーザー名。
- HOST: 特定の IP アドレスまたはアドレス範囲としてのユーザーのホスト名。
- INSTANCE_NAME: インスタンスの名前。
- PASSWORD: ユーザーのパスワード。
必要に応じて、ユーザー パスワード ポリシー パラメータを追加します。
gcloud sql users create USER_NAME \ --host=HOST \ --instance=INSTANCE_NAME \ --password=PASSWORD
MySQL 8.0 と Cloud SQL の認証方法を使用するインスタンス上に作成されたユーザーには、cloudsqlsuperuser
ロールが自動的に付与されます。このロールに関連付けられている権限は、CREATEROLE
、CREATEDB
、LOGIN
です。
MySQL 5.7 と Cloud SQL の認証方法を使用して作成されたインスタンスには、FILE
と SUPER
を除くすべての権限が自動的に付与されます。これらのユーザーの権限を変更する必要がある場合は、mysql
クライアントで GRANT コマンドまたは REVOKE コマンドを使用します。
Cloud SQL のユーザー名の長さの上限は、オンプレミス MySQL と同じで、MySQL 8.0 では 32 文字、それ以前のバージョンでは 16 文字です。
Terraform
ユーザーを作成するには、Terraform リソースを使用します。
変更を適用する
Google Cloud プロジェクトで Terraform 構成を適用するには、次の手順を行います。
- Cloud Shell を起動します。
-
Terraform 構成を適用する Google Cloud プロジェクトを設定します。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
-
ディレクトリを作成し、そのディレクトリ内で新規ファイルを開きます。ファイル名には
.tf
拡張子が必要です(例:main.tf
)。mkdir DIRECTORY && cd DIRECTORY && nano main.tf
- サンプルを
main.tf
にコピーします。 - 環境に適用するサンプル パラメータを確認し、変更します。
Ctrl-x
を押してから、y
を押し、変更を保存します。-
Terraform を初期化します。
terraform init
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行し、プロンプトで「
yes
」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」のメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
変更を削除する
変更を削除するには、次の手順を行います。
- 削除の保護を無効にするには、Terraform 構成ファイルで
deletion_protection
引数をfalse
に設定します。deletion_protection = "false"
- 次のコマンドを実行し、プロンプトで「
yes
」と入力して、更新された Terraform 構成を適用します。terraform apply
-
以前に Terraform 構成で適用されたリソースを削除するには、次のコマンドを実行して、プロンプトに「
yes
」と入力します。terraform destroy
REST v1
ユーザーを作成するには、users:insert メソッドで POST リクエストを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- user-id: ユーザーの ID
- password: ユーザーのパスワード
必要に応じて、ユーザー パスワード ポリシー パラメータを追加します。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users
JSON 本文のリクエスト:
{ "name": "user-id", "password": "password" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
MySQL 8.0 と Cloud SQL の認証方法を使用するインスタンス上に作成されたユーザーには、cloudsqlsuperuser
ロールが自動的に付与されます。このロールに関連付けられている権限は、CREATEROLE
、CREATEDB
、LOGIN
です。
MySQL 5.7 と Cloud SQL の認証方法を使用して作成されたインスタンスには、FILE
と SUPER
を除くすべての権限が自動的に付与されます。これらのユーザーの権限を変更する必要がある場合は、mysql
クライアントで GRANT コマンドまたは REVOKE コマンドを使用します。
Cloud SQL のユーザー名の長さの上限は、オンプレミス MySQL と同じで、MySQL 8.0 では 32 文字、それ以前のバージョンでは 16 文字です。
REST v1beta4
ユーザーを作成するには、users:insert メソッドで POST リクエストを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- user-id: ユーザーの ID
- password: ユーザーのパスワード
必要に応じて、ユーザー パスワード ポリシー パラメータを追加します。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
JSON 本文のリクエスト:
{ "name": "user-id", "password": "password" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
MySQL 8.0 と Cloud SQL の認証方法を使用するインスタンス上に作成されたユーザーには、cloudsqlsuperuser
ロールが自動的に付与されます。このロールに関連付けられている権限は、CREATEROLE
、CREATEDB
、LOGIN
です。
MySQL 5.7 と Cloud SQL の認証方法を使用して作成されたインスタンスには、FILE
と SUPER
を除くすべての権限が自動的に付与されます。これらのユーザーの権限を変更する必要がある場合は、mysql
クライアントで GRANT コマンドまたは REVOKE コマンドを使用します。
Cloud SQL のユーザー名の長さの上限は、オンプレミス MySQL と同じで、MySQL 8.0 では 32 文字、それ以前のバージョンでは 16 文字です。
mysql クライアント
- ユーザーを作成するには、
mysql
プロンプトで次の CREATE USER ステートメントを使用します。CREATE USER 'USER_NAME'@'%' IDENTIFIED BY 'PASSWORD';
必要に応じて、ユーザー パスワード ポリシー パラメータを追加します。
- ユーザー テーブルを表示することによって、ユーザーの作成を確認できます。
SELECT user, host FROM mysql.user;
第 2 世代インスタンスの場合、出力は次の例のようになります。+----------+-----------+ | user | host | +----------+-----------+ | root | % | | newuser | % | +----------+-----------+ 1 row in set (0.01 sec)
GRANT
ステートメントでユーザーに権限を付与します。詳細については、MySQL によって提供される権限をご覧ください。mysql.user
テーブルをフラッシュして、変更が反映されていることを確認します。FLUSH TABLES mysql.user;
ユーザーの一覧表示
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
このリストには、各ユーザーの
User name
、Host name
、Authentication
のタイプが示されています。また、組み込みの認証タイプでは、
Password status
も示されます。
gcloud
gcloud sql users list コマンドを使用して、このインスタンスのユーザーを一覧表示します。
gcloud sql users list \ --instance=INSTANCE_NAME
このコマンドは、各ユーザーの Name
、Host
、認証 Type
を返します。
組み込みの認証タイプの場合、パスワード ポリシーの設定とステータスが返されます。例:
NAME HOST TYPE PASSWORD_POLICY user1 BUILT_IN {'allowedFailedAttempts': 2, 'enableFailedAttemptsCheck': True, 'passwordExpirationDuration': '7d', 'status': { 'locked': True, 'passwordExpirationTime': '2022-07-01T19:53:45.822742904Z' } }
REST v1
インスタンスに対して定義されているユーザーを一覧表示するには、users:list メソッドで GET リクエストを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "sqlserver", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-1", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-2", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { ... }, { ... } ] }
ユーザー パスワード ポリシーが設定されている場合、レスポンスの items
セクションに passwordPolicy
セクションが含まれています。以下にサンプルを示します。
{ ... "passwordValidationUserPolicy" : { { "enableFailedAttemptsCheck" : true, "allowedFailedAttempts" : 8, "passwordExpirationDuration" : "7d", "enablePasswordVerification" : true } }, ... }
REST v1beta4
インスタンスに対して定義されているユーザーを一覧表示するには、users:list メソッドで GET リクエストを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "sqlserver", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-1", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-2", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { ... }, { ... } ] }
ユーザー パスワード ポリシーが設定されている場合、レスポンスの items
セクションに passwordPolicy
セクションが含まれています。以下にサンプルを示します。
{ ... "passwordValidationUserPolicy" : { { "enableFailedAttemptsCheck" : true, "allowedFailedAttempts" : 8, "passwordExpirationDuration" : "7d", "enablePasswordVerification" : true } }, ... }
mysql クライアント
MySQL ユーザーを一覧表示するには、mysql
プロンプトで次の SELECT ステートメントを使用します。
SELECT user, host FROM mysql.user;
root ユーザー アカウントのみが構成されている第 2 世代インスタンスの場合、出力は次の例のようになります。
+------+-----------+ | user | host | +------+-----------+ | root | % | +------+-----------+ 1 row in set (0.01 sec)
この例では、ユーザー 'root'@'%' を追加したインスタンスのユーザーが示されています。パスワード フィールドには、パスワードのハッシュが表示されています。
ユーザーのパスワードを変更する
ユーザーのパスワードは次のいずれかの方法で変更できます。
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
- 更新するユーザーのその他アイコン
をクリックします。
- [パスワードを変更] を選択します。
- 新しいパスワードを指定します。
古いパスワードを引き続き使用する場合は、[デュアル パスワードを有効にする] ボタンを選択します。
- [OK] をクリックします。
gcloud
gcloud sql users set-password
コマンドを使用してパスワードを変更します。
以下を置き換えます。
- USER_NAME: ユーザー名。
- HOST: 特定の IP アドレスまたはアドレス範囲としてのユーザーのホスト名。
- INSTANCE_NAME: インスタンスの名前。
- PASSWORD: パスワード。パスワード ポリシーの要件を満たしている必要があります(設定している場合)。
MySQL 8.0 では、必要に応じて --retain-password
オプションを指定して、古いパスワードの使用を引き続きユーザーに許可できます。古いパスワードを破棄するには、--discard-dual-password
オプションを使用します。
gcloud sql users set-password USER_NAME \ --host=HOST \ --instance=INSTANCE_NAME \ --password=PASSWORD
REST v1
ユーザー パスワードを変更するには、users:update メソッドで PUT リクエストを使用します。
次のリクエストでは、ユーザー アカウント user_name'@'%
のパスワードを更新します。ユーザーに異なるホストがある場合は、呼び出しを正しいホストに変更する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- user-id: ユーザーの ID
- password: ユーザーのパスワード
- dual-password: 次のいずれかの列挙値。
DUAL_PASSWORD
: ユーザーは古いパスワードを引き続き使用できます。NO_DUAL_PASSWORD
: ユーザーは古いパスワードを使用できません。NO_MODIFY_DUAL_PASSWORD
: デュアル パスワードのステータスは変更されません。
HTTP メソッドと URL:
PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id
JSON 本文のリクエスト:
{ "name": "user-id", "password": "password", "retainedPassword" : "dual-password" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
ユーザー パスワードを変更するには、users:update メソッドで PUT リクエストを使用します。
次のリクエストでは、ユーザー アカウント user_name'@'%
のパスワードを更新します。ユーザーに異なるホストがある場合は、呼び出しを正しいホストに変更する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- user-id: ユーザーの ID
- password: ユーザーのパスワード
- dual-password: 次のいずれかの列挙値。
DUAL_PASSWORD
: ユーザーは古いパスワードを引き続き使用できます。NO_DUAL_PASSWORD
: ユーザーは古いパスワードを使用できません。NO_MODIFY_DUAL_PASSWORD
: デュアル パスワードのステータスは変更されません。
HTTP メソッドと URL:
PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id
JSON 本文のリクエスト:
{ "name": "user-id", "password": "password", "retainedPassword" : "dual-password" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
mysql クライアント
- パスワードを変更するには、
mysql
プロンプトで、次の SET PASSWORD ステートメントを使用します。SET PASSWORD FOR USER_NAME = PASSWORD('auth_string');
mysql.user
テーブルをフラッシュして、変更が反映されていることを確認します。FLUSH TABLES mysql.user;
パスワード ポリシー設定が原因でユーザーがロックアウトされた場合は、パスワードを変更してユーザーをロック解除します。パスワードを変更した場合は、パスワード ポリシーを遵守していることを確認してください。
ユーザー パスワード ポリシーを設定する
組み込み認証タイプを使用してユーザーを作成する間に、パスワード ポリシーを設定できます。
ポリシーを変更または設定できます。
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
- ポリシーを変更するユーザーのその他アイコン(
)をクリックします。
- [パスワード ポリシーを編集] を選択します。
- [Password policy] セクションで、次のオプションを 1 つ以上選択します。
- パスワードの有効期限を設定する: パスワードの有効期限が切れてからユーザーが新しいパスワードを作成するまでの日数を指定します。
- 試行失敗後のロック: アカウントがロックされるまでに、ユーザーがパスワードの入力を誤って試みた回数を指定します。
Cloud SQL for MySQL 8.0 でのみサポートされています。
- パスワードが変更されたときに現在のパスワードを要求する: パスワードを変更するときに、既存のパスワードの入力を求められます。
gcloud
ユーザー パスワード ポリシーを設定するには、gcloud sql users set-password-policy
コマンドを使用します。
--password-policy-enable-password-verification
を使用して、ユーザーがパスワードを変更するときに既存のパスワードの入力を必須にします。このパラメータを無効にするには、--no-password-policy-enable-password-verification
を使用します。
以下を置き換えます。
- USER_NAME: ユーザー名。
- INSTANCE_NAME: インスタンスの名前。
- PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS:(省略可)アカウントがロックされるまでにユーザーがパスワードの再試行を試みる回数。チェックを有効にするには
--password-policy-enable-failed-attempts-check
を使用し、無効にするには--no-password-policy-enable-failed-attempts-check
を使用します。 - PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION:(省略可)パスワードの有効期限が切れた後、ユーザーが新しいパスワードを作成する必要がある日数を指定します。
gcloud sql users set-password-policy USER_NAME \ --instance=INSTANCE_NAME \ --password-policy-enable-failed-attempts-check \ --password-policy-allowed-failed-attempts=PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS \ --password-policy-password-expiration-duration=PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION \ --password-policy-enable-password-verification
ユーザー パスワード ポリシーを消去するには、--clear-password-policy
パラメータを使用します。
gcloud sql users set-password-policy USER_NAME \ --instance=INSTANCE_NAME \ --clear-password-policy
ユーザー パスワード ポリシーを表示するには、List users
をご覧ください。
REST v1
ユーザー パスワード ポリシーを設定するには、users:update メソッドで PUT リクエストを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
- user-id: ユーザーの ID
- password: ユーザーのパスワード
- failed-attempts-check:
true
に設定すると、アカウントがロックされた後にログインに失敗した回数を確認できます。 - no-of-attempts: ログインに失敗すると、アカウントがロックされます。
- password-expiration-duration: パスワードの有効期限が切れた後、ユーザーが新しいパスワードを作成する必要がある日数。
- verify-password: ユーザーがパスワードを変更する際に既存のパスワードの入力を必須にするには、
true
に設定します。
HTTP メソッドと URL:
PUT https://sqladmin.googleapis.com/sql/v1/projects/project-id/instances/instance-id/users?name=user-id
JSON 本文のリクエスト:
{ "name": "user-id", "password": "password", "data": { "passwordValidationUserPolicy" : { { "enableFailedAttemptsCheck" : "failed-attempts-check", "allowedFailedAttempts" : "no-of-attempts", "passwordExpirationDuration" : "password-expiration-duration", "enablePasswordVerification" : "verify-password" } }, } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
ユーザー パスワード ポリシーを表示するには、List users
をご覧ください。
REST v1beta4
ユーザー パスワード ポリシーを設定するには、users:update メソッドで PUT リクエストを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
- user-id: ユーザーの ID
- password: ユーザーのパスワード
- failed-attempts-check: 省略可。アカウントがロックされた後にログインに失敗した回数のチェックを有効にするには、
true
に設定します。 - no-of-attempts: ログインに失敗すると、アカウントがロックされます。
- password-expiration-duration: パスワードの有効期限が切れた後、ユーザーが新しいパスワードを作成する必要がある日数。
- verify-password: 省略可。パスワードを変更しようとするとき、既存のパスワードの入力を必須にするには、
true
に設定します。
HTTP メソッドと URL:
PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id
JSON 本文のリクエスト:
{ "name": "user-id", "password": "password", "data": { "passwordValidationUserPolicy" : { { "enableFailedAttemptsCheck" : "failed-attempts-check", "allowedFailedAttempts" : "no-of-attempts", "passwordExpirationDuration" : "password-expiration-duration", "enablePasswordVerification" : "verify-password" } }, } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
ユーザー パスワード ポリシーを表示するには、List users
をご覧ください。
mysql クライアント
ユーザー パスワード ポリシーを設定するには、mysql
プロンプトで、次の ALTER USER ステートメントを使用します。
ALTER USER USER_NAME FAILED_LOGIN_ATTEMPTS ALLOWED_FAILED_ATTEMPTS PASSWORD EXPIRE INTERVAL PASSWORD_EXPIRATION_DURATION DAY PASSWORD REQUIRE CURRENT;
以下を置き換えます。
- USER_NAME: ユーザー名。
- ALLOWED_FAILED_ATTEMPTS:(省略可)アカウントがロックされるまでにユーザーがパスワードの再試行を試みる回数。
- PASSWORD_EXPIRATION_DURATION:(省略可)パスワードの有効期限が切れた後、ユーザーが新しいパスワードを作成する必要がある日数を指定します。
PASSWORD REQUIRE CURRENT
オプションを使用すると、ユーザーがパスワードを変更するときに既存のパスワードの入力を必須にできます。
ユーザー パスワード ポリシーを表示するには、List users
をご覧ください。
ユーザーを削除する
デフォルト ユーザーはユーザーを削除できます。
ユーザーを削除する前に、そのユーザーが所有するすべてのオブジェクトを削除するか、ユーザーの所有権の割り当てを変更して、他のオブジェクトにロールが付与されている権限をすべて取り消す必要があります。
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
- 削除するユーザーのその他アイコン(
)をクリックします。
- [削除] を選択して、もう一度 [削除] を選択します。
gcloud
gcloud sql users delete
コマンドを使用して、ユーザーを削除します。
以下を置き換えます。
- USER_NAME: ユーザー名。
- HOST: 特定の IP アドレスまたはアドレス範囲としてのユーザーのホスト名。
- INSTANCE_NAME: インスタンスの名前。
gcloud sql users delete USER_NAME \ --host=HOST \ --instance=INSTANCE_NAME
REST v1
以下のリクエストでは、users:delete メソッドを使用して、指定したユーザー アカウントを削除します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- username: ユーザーまたはサービス アカウントのメールアドレス
HTTP メソッドと URL:
DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?host=&name=username
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
以下のリクエストでは、users:delete メソッドを使用して、指定したユーザー アカウントを削除します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- username: ユーザーまたはサービス アカウントのメールアドレス
HTTP メソッドと URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=&name=username
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
mysql クライアント
- ユーザーを削除するには、
mysql
プロンプトで次の DROP USER ステートメントを使用します。DROP USER 'USER_NAME'@'HOST_NAME';
mysql.user
テーブルをフラッシュして、変更が反映されていることを確認します。FLUSH TABLES mysql.user;
ユーザー プロパティを更新する
ホストや権限などのユーザー プロパティを更新するには、mysql
クライアントを使用する必要があります。詳細については、MySQL のドキュメントの MySQL ユーザー アカウント管理をご覧ください。次のステップ
- Cloud SQL でのユーザーの操作の詳細について学習する。
- MySQL のドキュメントでユーザーの作成方法を確認する。
- インスタンスへの接続について学習する。