Crea y administra usuarios de PostgreSQL

En esta página, se describe cómo hacer lo siguiente para las instancias de Cloud SQL:

  • Configurar la cuenta de usuario predeterminada
  • Crear, borrar y actualizar otras cuentas de usuario

Para obtener más información acerca de cómo funcionan los usuarios con Cloud SQL, consulta usuarios de PostgreSQL.

Antes de comenzar

Antes de completar las tareas a continuación, crea una instancia de Cloud SQL. Para obtener más información, consulta Crea instancias.

Si planeas usar el cliente de administración de tu base de datos para administrar usuarios, debes tener configurado el usuario predeterminado en la instancia. Para obtener más información, consulta Configura la cuenta predeterminada.

Además, debe haber configurado un cliente administrativo conectado a su instancia. Si deseas obtener más información, consulta la página sobre opciones de conexión para aplicaciones externas.

Cómo configurar la cuenta de usuario predeterminada

Cuando creas una instancia de Cloud SQL nueva, debes configurar la cuenta de usuario predeterminada antes de poder conectarte a la instancia.

El usuario predeterminado de Cloud SQL para PostgreSQL es postgres.

Para configurar el usuario predeterminado, haz lo siguiente:

Console

  1. En Google Cloud Console, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de la instancia para abrir la página Descripción general de esa instancia.
  3. Selecciona Usuarios en el menú de navegación de SQL.
  4. Busca el usuario postgres y selecciona Cambiar contraseña en el menú de más acciones Ícono de más acciones.
  5. Proporciona una contraseña segura que puedas recordar y haz clic en Aceptar.

gcloud

Establece una contraseña para el usuario predeterminado:

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

REST v1

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: el ID de instancia deseado
  • user-id: el ID del usuario
  • password: la contraseña del usuario

Método HTTP y URL:

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

En la solicitud que se muestra a continuación, se usa el método users:update para actualizar la cuenta de usuario raíz.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: el ID de instancia deseado
  • user-id: el ID del usuario
  • password: la contraseña del usuario

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

Crea un usuario

Console

  1. En Google Cloud Console, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de la instancia para abrir la página Descripción general de esa instancia.
  3. Selecciona Usuarios en el menú de navegación de SQL.
  4. Haz clic en Agregar cuenta de usuario.

    En la página Agrega una cuenta de usuario a la instancia instance_name, puedes elegir si el usuario se autentica con el método de base de datos integrado (nombre de usuario y contraseña) o como usuario de IAM.

    • Si seleccionas Autenticación integrada (la opción predeterminada), agrega la siguiente información:
      • Un nombre de usuario
      • Una contraseña (opcional).
      • Si seleccionas Cloud IAM, en el campo Miembro, debes ingresar la dirección de correo electrónico de un miembro de IAM existente de tu proyecto de Google Cloud para asociarlo con el usuario.
    • Haga clic en Add.

A los usuarios creados en instancias que usan el método de autenticación de Cloud SQL se les otorga la función cloudsqlsuperuser de forma automática y tienen los siguientes privilegios asociados a esta función: CREATEROLE, CREATEDB y LOGIN.

Si necesitas cambiar los atributos de estos usuarios, usa el comando ALTER ROLE en el cliente psql. No todos los atributos se pueden modificar con ALTER ROLE. Dentro de las excepciones, se incluyen las funciones NOSUPERUSER y NOREPLICATION.

gcloud

Crea el usuario:

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

A los usuarios creados en instancias que usan el método de autenticación de Cloud SQL se les otorga la función cloudsqlsuperuser de forma automática y tienen los siguientes privilegios asociados a esta función: CREATEROLE, CREATEDB y LOGIN.

Si necesitas cambiar los atributos de estos usuarios, usa el comando ALTER ROLE en el cliente psql. No todos los atributos se pueden modificar con ALTER ROLE. Dentro de las excepciones, se incluyen las funciones NOSUPERUSER y NOREPLICATION.

Los límites de extensión del nombre de usuario son los mismos en Cloud SQL y en PostgreSQL local.

REST v1

En la solicitud que se muestra a continuación, se usa el método users:insert para crear una cuenta de usuario “user_name”.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: el ID de instancia deseado
  • user-id: el ID del usuario
  • password: la contraseña del usuario

Método HTTP y URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

A los usuarios que se crean en las instancias que usan el método de autenticación de Cloud SQL se les otorga la función cloudsqlsuperuser de forma automática y tienen los siguientes privilegios asociados con esta función: CREATEROLE, CREATEDB y LOGIN.

Si necesitas cambiar los atributos de estos usuarios, usa el comando ALTER ROLE en el cliente psql. No todos los atributos se pueden modificar con ALTER ROLE. Dentro de las excepciones, se incluyen las funciones NOSUPERUSER y NOREPLICATION.

Los límites de extensión del nombre de usuario son los mismos en Cloud SQL y en PostgreSQL local.

REST v1beta4

En la solicitud que se muestra a continuación, se usa el método users:insert para crear una cuenta de usuario “user_name”.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: el ID de instancia deseado
  • user-id: el ID del usuario
  • password: la contraseña del usuario

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

A los usuarios que se crean en las instancias que usan el método de autenticación de Cloud SQL se les otorga la función cloudsqlsuperuser de forma automática y tienen los siguientes privilegios asociados con esta función: CREATEROLE, CREATEDB y LOGIN.

Si necesitas cambiar los atributos de estos usuarios, usa el comando ALTER ROLE en el cliente psql. No todos los atributos se pueden modificar con ALTER ROLE. Dentro de las excepciones, se incluyen las funciones NOSUPERUSER y NOREPLICATION.

Los límites de extensión del nombre de usuario son los mismos en Cloud SQL y en PostgreSQL local.

Cliente psql

  1. Cuando aparezca el cuadro psql, crea el usuario:
      CREATE USER USER_NAME
          WITH ATTRIBUTE1 ATTRIBUTE2...;
          \password USER_NAME;
      

    Escríbala cuando se le indique.

    Para obtener más información acerca de los atributos de la función, consulta la documentación de PostgreSQL.

  2. Muestra la tabla de usuarios para confirmar la creación del usuario:
      SELECT * FROM pg_roles;
      

Cómo cambiar una contraseña de usuario

Para cambiar una contraseña de usuario, haz lo siguiente:

Console

  1. En Google Cloud Console, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de la instancia para abrir la página Descripción general de esa instancia.
  3. Selecciona Usuarios en el menú de navegación de SQL.
  4. Haz clic en el ícono de más acciones Ícono de más acciones para el usuario que quieres actualizar.
  5. Selecciona Cambiar contraseña, especifica una contraseña nueva y haz clic en Aceptar.

gcloud

Actualiza la contraseña:

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

REST v1

En la siguiente solicitud, se usa el método users:update para actualizar la contraseña de la cuenta de usuario “user_name”.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: el ID de instancia deseado
  • user-id: el ID del usuario
  • password: la contraseña del usuario

Método HTTP y URL:

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

En la siguiente solicitud, se usa el método users:update para actualizar la contraseña de la cuenta de usuario “user_name”.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: el ID de instancia deseado
  • user-id: el ID del usuario
  • password: la contraseña del usuario

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

Cliente psql

  1. Cuando aparezca el cuadro psql, cambia la contraseña:
    \password USER_NAME;
    

    Escríbala cuando se le indique.

Actualiza usuarios

Para actualizar propiedades del usuario como los atributos, debes usar el cliente psql. Para obtener más información, consulta Funciones de base de datos en la documentación de PostgreSQL.

Muestra la lista de usuarios

Para mostrar la lista de usuarios, haz lo siguiente:

Console

  1. En Google Cloud Console, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de la instancia para abrir la página Descripción general de esa instancia.
  3. Selecciona Usuarios en el menú de navegación de SQL.

    La columna Authentication muestra si el usuario es un IAM user o si usa autenticación integrada.

gcloud

Muestra la lista de usuarios de esta instancia:

gcloud sql users list \
--instance=INSTANCE_NAME

El comando muestra el Name, el Host y la Type de autenticación (como BUILT_IN o CLOUD_IAM_USER) para cada usuario.

Para obtener una lista completa de los parámetros de este comando, consulta la página de referencia de gcloud sql users list.

REST v1

La siguiente solicitud usa el método users:list a fin de mostrar la lista de los usuarios definidos para una instancia.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: el ID de instancia deseado

Método HTTP y URL:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

La siguiente solicitud usa el método users:list a fin de mostrar la lista de los usuarios definidos para una instancia.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: el ID de instancia deseado

Método HTTP y URL:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

En el mensaje psql, muestra una lista de usuarios de PostgreSQL:

SELECT * FROM pg_roles;

Borra usuarios

Para borrar un usuario, haz lo siguiente:

Antes de borrarlo, debes quitarle todos los objetos que posee o reasignar su propiedad, y revocar todos los privilegios que se le hayan otorgado a la función en otros objetos.

Console

  1. En Google Cloud Console, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de la instancia para abrir la página Descripción general de esa instancia.
  3. Selecciona Usuarios en el menú de navegación de SQL.
  4. Haz clic en el ícono de más acciones Ícono de más acciones para el usuario que quieres borrar.
  5. Selecciona Quitar y, luego, vuelve a seleccionar Quitar.

gcloud

Borra el usuario:

gcloud sql users delete USER_NAME \
--instance=INSTANCE_NAME

REST v1

En la solicitud que se muestra a continuación, se usa el método users:delete para borrar la cuenta de usuario especificada.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: el ID de instancia deseado
  • user-id: el ID del usuario

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

En la solicitud que se muestra a continuación, se usa el método users:delete para borrar la cuenta de usuario especificada.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: el ID de instancia deseado
  • user-id: el ID del usuario

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

Cliente psql

  1. Cuando aparezca el cuadro psql, borra el usuario:
    DROP ROLE USER_NAME;
    

    Para obtener más información sobre la instrucción DROP ROLE, consulta la documentación de PostgreSQL.

¿Qué sigue?