Criar e gerenciar usuários do PostgreSQL

Nesta página, mostramos como realizar as ações a seguir em instâncias do Cloud SQL:

  • Configurar a conta de usuário padrão.
  • Criar, excluir e atualizar outras contas de usuário.

Para saber como os usuários trabalham com o Cloud SQL, consulte Usuários do PostgreSQL.

Antes de começar

Antes de concluir as tarefas abaixo, crie uma instância do Cloud SQL. Para saber mais, consulte o artigo Criar instâncias.

Se você planeja usar o cliente administrativo de seu banco de dados para gerenciar usuários, é preciso ter configurado o usuário padrão na instância. Para mais informações, consulte Como configurar a conta padrão.

Além disso, você precisa ter configurado um cliente administrativo conectado à sua instância. Para mais informações, consulte Opções de conexão para aplicativos externos.

Configurar a conta de usuário padrão

Ao criar uma nova instância do Cloud SQL, você precisa configurar a conta de usuário padrão para poder se conectar à instância.

No Cloud SQL para PostgreSQL, o usuário padrão é postgres.

Para configurar o usuário padrão:

Console

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Clique na instância para abrir a respectiva página "Visão geral".
  3. Selecione Usuários no menu de navegação.
  4. Encontre o usuário postgres e selecione Alterar senha no menu "Mais ações" Ícone mais ações..
  5. Forneça uma senha forte que você consiga lembrar posteriormente e clique em Ok.

gcloud

Defina a senha do usuário padrão:

gcloud sql users set-password postgres \
    --instance=[INSTANCE_NAME] --prompt-for-password

REST v1beta4

A solicitação a seguir usa o método users:update para atualizar a conta de usuário raiz.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • user-id: o ID do usuário
  • password: a senha do usuário

Método HTTP e URL:

PUT https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id

Corpo JSON da solicitação:

{
  "name": "user-id",
  "password": "password"
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Como criar um usuário

Para criar um usuário:

Console

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Selecione a instância para abrir a página "Visão geral" correspondente.
  3. Selecione Usuários no menu de navegação.
  4. Clique em ADICIONAR USUÁRIO.
  5. Na página Adicionar uma conta de usuário à instância instance_name, clique no botão de opção PostgreSQL.
  6. Adicione as seguintes informações:
    • Um Nome de usuário
    • uma Senha
  7. Clique em Criar.

Os usuários criados com o Cloud SQL têm os privilégios associados ao papel cloudsqlsuperuser: CREATEROLE, CREATEDB e LOGIN. Um usuário criado por esses usuários pode ter privilégios de conexão ao banco de dados, o que pode impedir que ele seja excluído. Se você precisar alterar os atributos de um usuário, utilize o comando ALTER ROLE (em inglês) no cliente psql. Nem todos os atributos podem ser modificados com ALTER ROLE. As exceções incluem os papéis NOSUPERUSER e NOREPLICATION.

gcloud

Crie o usuário:

gcloud sql users create [USER_NAME] \
   --instance=[INSTANCE_NAME] --password=[PASSWORD]

Os usuários criados com o Cloud SQL têm os privilégios associados ao papel cloudsqlsuperuser: CREATEROLE, CREATEDB e LOGIN. Um usuário criado por esses usuários pode ter privilégios de conexão ao banco de dados, o que pode impedir que ele seja excluído. Se você precisar alterar os atributos de um usuário, utilize o comando ALTER ROLE (em inglês) no cliente psql. Nem todos os atributos podem ser modificados com ALTER ROLE. As exceções incluem os papéis NOSUPERUSER e NOREPLICATION.

Os limites de tamanho de nome de usuário são os mesmos no Cloud SQL e no PostgreSQL no local.

REST v1beta4

A solicitação abaixo usa o método users:insert para criar uma conta de usuário "user_name".

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • user-id: o ID do usuário
  • password: a senha do usuário

Método HTTP e URL:

POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users

Corpo JSON da solicitação:

{
  "name": "user-id",
  "password": "password"
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Os usuários criados com o Cloud SQL têm os privilégios associados ao papel cloudsqlsuperuser: CREATEROLE, CREATEDB e LOGIN. Um usuário criado por esses usuários pode ter privilégios de conexão ao banco de dados, o que pode impedir que ele seja excluído. Se você precisar alterar os atributos de um usuário, utilize o comando ALTER ROLE (em inglês) no cliente psql. Nem todos os atributos podem ser modificados com ALTER ROLE. As exceções incluem os papéis NOSUPERUSER e NOREPLICATION.

Os limites de tamanho de nome de usuário são os mesmos no Cloud SQL e no PostgreSQL no local.

Cliente psql

  1. No prompt psql, crie o usuário:
      CREATE USER [USER_NAME]
          WITH [ATTRIBUTE1] [ATTRIBUTE2]...;
          \password [USER_NAME];
      

    Digite a senha quando solicitada.

    Para mais informações sobre os atributos de papéis, consulte a documentação do PostgreSQL.

  2. É possível confirmar a criação do usuário ao exibir a tabela do usuário:
      SELECT * FROM pg_roles;
      

Alterar uma senha de usuário

Para alterar uma senha de usuário:

Console

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Selecione a instância para abrir a página "Visão geral" correspondente.
  3. Selecione Usuários no menu de navegação.
  4. Selecione o usuário a ser atualizado e clique em "Mais ações" Ícone mais ações..
  5. Selecione Alterar senha, especifique uma nova senha e clique em OK.

gcloud

Atualize a senha:

gcloud sql users set-password [USER_NAME] \
   --instance=[INSTANCE_NAME] --prompt-for-password

REST v1beta4

A seguinte solicitação usa o método users:update para atualizar a senha da conta de usuário "user_name".

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • user-id: o ID do usuário
  • password: a senha do usuário

Método HTTP e URL:

PUT https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id

Corpo JSON da solicitação:

{
  "name": "user-id",
  "password": "password"
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Cliente psql

  1. No prompt psql, altere a senha:
    \password [USER];
    

    Digite a senha quando solicitada.

Atualizar usuários

Para atualizar as propriedades do usuário, como atributos, você precisa usar o cliente psql. Para mais informações, consulte Papéis de banco de dados na documentação do PostgreSQL.

Como listar usuários

Para listar usuários:

Console

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Selecione a instância para abrir a página "Visão geral" correspondente.
  3. Selecione Usuários no menu de navegação.

gcloud

Liste os usuários desta instância:

gcloud sql users list --instance=[INSTANCE_NAME]

Para ver uma lista completa de parâmetros desse comando, consulte a página de referência de gcloud sql users list.

REST v1beta4

A solicitação abaixo usa o método users:list para listar os usuários definidos para uma instância.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada

Método HTTP e URL:

GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

Cliente psql

No prompt psql, liste os usuários do PostgreSQL:

SELECT * FROM pg_roles;

Excluir usuários

Para excluir um usuário, siga estas instruções:

Antes de excluir um usuário, você precisa descartar todos os objetos que são da propriedade dele ou reatribuir a propriedade e revogar os privilégios concedidos ao papel em outros objetos.

Console

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Selecione a instância para abrir a página "Visão geral" correspondente.
  3. Selecione Usuários no menu de navegação.
  4. Selecione o usuário a ser excluído e clique em "Mais ações" Ícone mais ações..
  5. Selecione Excluir e clique em OK.

gcloud

Exclua o usuário:

gcloud sql users delete [USER_NAME] --instance=[INSTANCE_NAME]

REST v1beta4

A solicitação abaixo usa o método users:delete para excluir a conta de usuário especificada.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • user-id: o ID do usuário

Método HTTP e URL:

DELETE https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=&name=user-id

Corpo JSON da solicitação:

{
  "name": "user-id",
  "host": ""
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Cliente psql

  1. No prompt psql, exclua o usuário:
    DROP ROLE [USER_NAME];
    

    Para mais informações sobre a instrução DROP ROLE, consulte a documentação do PostgreSQL.

A seguir