Como 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 mais informações, consulte Como 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.

    Acessar 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

v1beta4 REST

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.

    Acessar 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;
    • Opcionalmente, um Host

      O padrão é "%", o que significa que a lista de hosts não é restrita. Também é possível fornecer um endereço IP ou intervalo de endereços IP, o que significa que apenas os usuários que se conectarem a partir desses endereços poderão acessar o banco de dados.

  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.

v1beta4 REST

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.

    Acessar 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

v1beta4 REST

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.

    Acessar 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.

v1beta4 REST

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.

    Acessar 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]

v1beta4 REST

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