このページでは、Cloud SQL の組み込み認証を有効にして使用する方法について説明します。
Cloud SQL を使用して作成するユーザーの詳細については、その他の SQL Server ユーザーをご覧ください。ユーザーを作成する前に
- Cloud SQL インスタンスを作成します。詳細については、インスタンスの作成をご覧ください。
- データベースの管理クライアントを使用してユーザーを管理する場合は、パスワードを設定して、インスタンスのデフォルト ユーザーを構成します。デフォルトのユーザー アカウントのパスワードを設定するをご覧ください。
デフォルトのユーザー アカウントのパスワードを設定する
新しい Cloud SQL インスタンスを作成する場合は、インスタンスに接続する前に、デフォルトのユーザー アカウントのパスワードを設定する必要があります。
Cloud SQL for SQL Server の場合、デフォルト ユーザーはsqlserver
です。
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
sqlserver
ユーザーを検索し、その他の操作メニュー から [パスワードを変更] を選択します。- 覚えやすく強力なパスワードを指定し、[OK] をクリックします。
gcloud
デフォルト ユーザーのパスワードを設定するには、次のように gcloud sql users set-password
コマンドを使用します。
コマンドを実行する前に、INSTANCE_NAME をインスタンス名に置き換えます。
gcloud sql users set-password sqlserver \ --instance=INSTANCE_NAME \ --prompt-for-password
REST v1
デフォルトのユーザー アカウントのパスワードを更新するには、users:update メソッドを指定して PUT リクエストを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- user-id: ユーザーの ID
- 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" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような 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
- user-id: ユーザーの ID
- 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" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような 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" }
ユーザーを作成する
デフォルトのユーザー アカウントの設定が完了したら、他のユーザーを作成できます。
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
- [ユーザー アカウントを追加] をクリックします。
- [ユーザー アカウントをインスタンス instance_name に追加] ページで、次の情報を追加します。
- ユーザー名
- パスワード(省略可)
- [Add] をクリックします。
gcloud
ユーザーを作成するには、gcloud sql users create
コマンドを使用します。
以下を置き換えます。
- USER_NAME: ユーザー名。
- INSTANCE_NAME: インスタンスの名前。
- PASSWORD: ユーザーのパスワード。
gcloud sql users create USER_NAME \ --instance=INSTANCE_NAME \ --password=PASSWORD
ユーザー名の長さの制限は、Cloud SQL とオンプレミスの SQL Server で同じです。
Terraform
ユーザーを作成するには、Terraform リソースを使用します。
変更を適用する
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tf
にする必要があります(例:main.tf
)。このチュートリアルでは、このファイルをmain.tf
とします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tf
にサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行う必要があります。
terraform init
必要に応じて、最新バージョンの Google プロバイダを使用する場合は、
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、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" }
ユーザー名の長さの制限は、Cloud SQL とオンプレミスの SQL Server で同じです。
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" }
ユーザー名の長さの制限は、Cloud SQL とオンプレミスの SQL Server で同じです。
ユーザーの一覧表示
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
gcloud
gcloud sql users list コマンドを使用して、このインスタンスのユーザーを一覧表示します。
gcloud sql users list \ --instance=INSTANCE_NAME
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" ] } }, { ... }, { ... } ] }
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" ] } }, { ... }, { ... } ] }
ユーザーのパスワードを変更する
ユーザーのパスワードは、次のいずれかの方法で変更できます。
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
- 更新するユーザーのその他アイコン をクリックします。
- [パスワードの変更] を選択します。
- 新しいパスワードを指定します。
- [OK] をクリックします。
gcloud
gcloud sql users set-password
コマンドを使用してパスワードを変更します。
以下を置き換えます。
- USER_NAME: ユーザー名。
- INSTANCE_NAME: インスタンスの名前。
gcloud sql users set-password USER_NAME \ --instance=INSTANCE_NAME \ --prompt-for-password
REST v1
ユーザー パスワードを変更するには、users:update メソッドで PUT リクエストを使用します。
次のリクエストでは、ユーザー アカウント user_name
のパスワードを更新します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- user-id: ユーザーの ID
- 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" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような 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: ユーザーの新しいパスワード
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" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような 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" }
ユーザーを削除する
デフォルト ユーザーはユーザーを削除できます。
ユーザーを削除する前に、そのユーザーが所有するすべてのオブジェクトを削除するか、ユーザーの所有権の割り当てを変更して、他のオブジェクトにロールが付与されている権限をすべて取り消す必要があります。
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
- 削除するユーザーのその他アイコン をクリックします。
- [削除] を選択して、もう一度 [削除] を選択します。
gcloud
gcloud sql users delete
コマンドを使用して、ユーザーを削除します。
以下を置き換えます。
- USER_NAME: ユーザー名。
- INSTANCE_NAME: インスタンスの名前。
gcloud sql users delete USER_NAME \ --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" }
ユーザー プロパティを更新する
SQL Server のデータベースレベルのロールの詳細については、SQL Server ドキュメントのデータベースレベルのロールについてをご覧ください。次のステップ
- Cloud SQL でのユーザーの操作の詳細について学習する。