このページでは、Cloud SQL インスタンスに対して次の操作を行う方法について説明します。
- デフォルトのユーザー アカウントを構成します。
- 他のユーザー アカウントを作成、削除、更新します。
Cloud SQL でのユーザーの詳細については、PostgreSQL ユーザーをご覧ください。
始める前に
以下のタスクを完了する前に、Cloud SQL インスタンスを作成します。詳細については、インスタンスの作成をご覧ください。
データベースの管理クライアントを使用してユーザーを管理する場合は、インスタンスでデフォルト ユーザーを構成しておく必要があります。詳細については、デフォルト アカウントの構成をご覧ください。
また、インスタンスに接続された管理クライアントを構成しておく必要があります。詳細については、外部アプリケーションのための接続オプションをご覧ください。デフォルト ユーザー アカウントの構成
新しい Cloud SQL インスタンスを作成する場合、インスタンスに接続するには、デフォルト ユーザー アカウントを構成しておく必要があります。
Cloud SQL for PostgreSQL の場合、デフォルトのユーザーはpostgres
です。デフォルト ユーザーを構成するには:
Console
- Google Cloud Console の Cloud SQL インスタンス ページに移動します。
- インスタンスをクリックして [概要] ページを開きます。
- ナビゲーション メニューから [ユーザー] を選択します。
postgres
ユーザーを検索し、その他の操作メニューから [パスワードを変更] を選択します。
- 覚えやすく強力なパスワードを指定し、[OK] をクリックします。
gcloud
デフォルト ユーザーのパスワードを設定します。
gcloud sql users set-password postgres \ --instance=[INSTANCE_NAME] --prompt-for-password
REST v1beta4
次のリクエストでは、users:update メソッドを使用して、root ユーザー アカウント
後述のリクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- user-id: ユーザーの ID
- password: ユーザーのパスワード
HTTP メソッドと URL:
PUT https://www.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://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
ユーザーの作成
ユーザーを作成するには:
Console
- Google Cloud Console の Cloud SQL インスタンス ページに移動します。
- インスタンスを選択して [概要] ページを開きます。
- ナビゲーション メニューから [ユーザー] を選択します。
- [ユーザーを追加] をクリックします。
- [ユーザー アカウントをインスタンス instance_name に追加] ページで、[PostgreSQL] ラジオボタンをクリックします。
- 以下の情報を追加します。
- ユーザー名
- パスワード
ホスト(オプション)
デフォルトは '%' です。これは、ホストリストが制限されていないことを意味します。IP アドレスまたは IP アドレスの範囲を指定することもできます。この場合、これらのアドレスから接続しているユーザーだけがデータベースにアクセスできます。
- [作成] をクリックします。
Cloud SQL を使用して作成されたユーザーには、cloudsqlsuperuser
役割と関連付けられている権限(CREATEROLE
、CREATEDB
、LOGIN
)があります。これらのユーザーによって作成されたユーザーは、データベース接続権限を持つことができます。これにより、ユーザーが削除されるのを防ぐことができます。ユーザーの属性を変更する必要がある場合は、psql
クライアントで ALTER ROLE コマンドを使用します。ALTER ROLE
で変更できない属性もあります。ただし、NOSUPERUSER
ロールと NOREPLICATION
ロールは例外です。
gcloud
ユーザーを作成します。
gcloud sql users create [USER_NAME] \ --instance=[INSTANCE_NAME] --password=[PASSWORD]
Cloud SQL を使用して作成されたユーザーには、cloudsqlsuperuser
役割と関連付けられている権限(CREATEROLE
、CREATEDB
、LOGIN
)があります。これらのユーザーによって作成されたユーザーは、データベース接続権限を持つことができます。これにより、ユーザーが削除されるのを防ぐことができます。ユーザーの属性を変更する必要がある場合は、psql
クライアントで ALTER ROLE コマンドを使用します。ALTER ROLE
で変更できない属性もあります。ただし、NOSUPERUSER
ロールと NOREPLICATION
ロールは例外です。
ユーザー名の長さの上限は、オンプレミス PostgreSQL の場合と同じです。
REST v1beta4
以下のリクエストでは、users:insert メソッドを使用してユーザー アカウント「user_name」を作成します。
後述のリクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- user-id: ユーザーの ID
- password: ユーザーのパスワード
HTTP メソッドと URL:
POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
JSON 本文のリクエスト:
{ "name": "user-id", "password": "password" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Cloud SQL を使用して作成されたユーザーには、cloudsqlsuperuser
役割と関連付けられている権限(CREATEROLE
、CREATEDB
、LOGIN
)があります。これらのユーザーによって作成されたユーザーは、データベース接続権限を持つことができます。これにより、ユーザーが削除されるのを防ぐことができます。ユーザーの属性を変更する必要がある場合は、psql
クライアントで ALTER ROLE コマンドを使用します。ALTER ROLE
で変更できない属性もあります。ただし、NOSUPERUSER
ロールと NOREPLICATION
ロールは例外です。
ユーザー名の長さの上限は、オンプレミス PostgreSQL の場合と同じです。
psql クライアント
psql
プロンプトで、ユーザーを作成します。CREATE USER [USER_NAME] WITH [ATTRIBUTE1] [ATTRIBUTE2]...; \password [USER_NAME];
プロンプトが表示されたら、パスワードを入力します。
役割の属性に関する詳細については、PostgreSQL のドキュメントをご覧ください。
- ユーザー テーブルを表示することによって、ユーザーの作成を確認できます。
SELECT * FROM pg_roles;
ユーザーのパスワードの変更
ユーザーのパスワードを変更するには:
Console
- Google Cloud Console の Cloud SQL インスタンス ページに移動します。
- インスタンスを選択して [概要] ページを開きます。
- ナビゲーション メニューから [ユーザー] を選択します。
- 更新するユーザーのその他アイコン
をクリックします。
- [パスワードを変更] を選択し、新しいパスワードを指定して、[OK] をクリックします。
gcloud
パスワードを更新します。
gcloud sql users set-password [USER_NAME] \ --instance=[INSTANCE_NAME] --prompt-for-password
REST v1beta4
以下のリクエストでは、users:update メソッドを使用して、ユーザー アカウント(user_name)のパスワードを更新します。
後述のリクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- user-id: ユーザーの ID
- password: ユーザーのパスワード
HTTP メソッドと URL:
PUT https://www.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://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
psql クライアント
psql
プロンプトで、パスワードを変更します。\password [USER];
プロンプトが表示されたら、パスワードを入力します。
ユーザーの更新
属性などのユーザー プロパティを更新するには、psql
クライアントを使用する必要があります。詳細については、PostgreSQL ドキュメントのデータベースの役割をご覧ください。
ユーザーの一覧を表示する
ユーザーを一覧表示するには:
Console
- Google Cloud Console の Cloud SQL インスタンス ページに移動します。
- インスタンスを選択して [概要] ページを開きます。
- ナビゲーション メニューから [ユーザー] を選択します。
gcloud
このインスタンスのユーザーを一覧表示します。
gcloud sql users list --instance=[INSTANCE_NAME]
このコマンドのパラメータの完全なリストについては、gcloud sql users list のリファレンス ページをご覧ください。
REST v1beta4
次のリクエストでは、users:list メソッドを使用して、インスタンスに定義されているユーザーを一覧表示します。
後述のリクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
HTTP メソッドと URL:
GET https://www.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" ] } }, { ... }, { ... } ] }
psql クライアント
psql
プロンプトで、PostgreSQL ユーザーの一覧を表示します。
SELECT * FROM pg_roles;
ユーザーの削除
ユーザーを削除するには:
ユーザーを削除する前に、そのユーザーが所有するすべてのオブジェクトを削除するか、ユーザーの所有権の割り当てを変更して、他のオブジェクトにロールが付与されている権限をすべて取り消す必要があります。
Console
- Google Cloud Console の Cloud SQL インスタンス ページに移動します。
- インスタンスを選択して [概要] ページを開きます。
- ナビゲーション メニューから [ユーザー] を選択します。
- 削除するユーザーのその他アイコン
をクリックします。
- [削除] を選択し、[OK] をクリックします。
gcloud
ユーザーを削除します。
gcloud sql users delete [USER_NAME] --instance=[INSTANCE_NAME]
REST v1beta4
以下のリクエストでは、users:delete メソッドを使用して、指定したユーザー アカウントを削除します。
後述のリクエストのデータを使用する前に、次のように置き換えます。
- project-id: 実際のプロジェクト ID
- instance-id: 目的のインスタンス ID
- user-id: ユーザーの ID
HTTP メソッドと URL:
DELETE https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=&name=user-id
JSON 本文のリクエスト:
{ "name": "user-id", "host": "" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
psql クライアント
psql
プロンプトで、ユーザーを削除します。DROP ROLE [USER_NAME];
DROP ROLE
ステートメントの詳細については、PostgreSQL のドキュメントをご覧ください。
次のステップ
- Cloud SQL でのユーザーの操作の詳細について学習する。
- ロールの作成に関する PostgreSQL ドキュメントを読む。
- インスタンスへの接続について学習する。