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. Ve a la página Instancias de Cloud SQL en Google Cloud Console.

    Ir a la página Instancias de Cloud SQL

  2. Haz clic en la instancia para abrir la página Descripción general.
  3. Selecciona Usuarios en el menú de navegación.
  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 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 siguientes, realiza estos 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://www.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://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"
}

Crea un usuario

Para crear un usuario, haz lo siguiente:

Console

  1. Ve a la página Instancias de Cloud SQL en Google Cloud Console.

    Ir a la página Instancias de Cloud SQL

  2. Selecciona la instancia para abrir su página de descripción general.
  3. Selecciona Usuarios en el menú de navegación.
  4. Haz clic en AGREGAR USUARIO.
  5. En la página Agrega una cuenta de usuario a la instancia instance_name, haz clic en el botón de selección PostgreSQL.
  6. Agrega la siguiente información:
    • Un nombre de usuario
    • Una contraseña.
  7. Haga clic en Crear.

Los usuarios que se crean con Cloud SQL tienen los privilegios asociados a la función cloudsqlsuperuser: CREATEROLE, CREATEDB y LOGIN. Un usuario creado por estos usuarios puede tener privilegios de conexión de base de datos, lo que podría evitar que se lo borre. Si necesitas cambiar los atributos de un usuario, 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]

Los usuarios que se crean con Cloud SQL tienen los privilegios asociados a la función cloudsqlsuperuser: CREATEROLE, CREATEDB y LOGIN. Un usuario creado por estos usuarios puede tener privilegios de conexión de base de datos, lo que podría evitar que se lo borre. Si necesitas cambiar los atributos de un usuario, 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 siguientes, realiza estos 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://www.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://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"
}

Los usuarios que se crean mediante Cloud SQL tienen los privilegios asociados a la función cloudsqlsuperuser: CREATEROLE, CREATEDB y LOGIN. Un usuario creado por estos usuarios puede tener privilegios de conexión de base de datos, lo que podría evitar que se lo borre. Si necesitas cambiar los atributos de un usuario, 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. Ve a la página Instancias de Cloud SQL en Google Cloud Console.

    Ir a la página Instancias de Cloud SQL

  2. Selecciona la instancia para abrir su página de descripción general.
  3. Selecciona Usuarios en el menú de navegación.
  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 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 siguientes, realiza estos 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://www.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://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. Cuando aparezca el cuadro psql, cambia la contraseña:
    \password [USER];
    

    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. Ve a la página Instancias de Cloud SQL en Google Cloud Console.

    Ir a la página Instancias de Cloud SQL

  2. Selecciona la instancia para abrir su página de descripción general.
  3. Selecciona Usuarios en el menú de navegación.

gcloud

Muestra la lista de usuarios de esta instancia:

gcloud sql users list --instance=[INSTANCE_NAME]

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

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 siguientes, realiza estos reemplazos:

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

Método HTTP y URL:

GET https://www.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 de 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. Ve a la página Instancias de Cloud SQL en Google Cloud Console.

    Ir a la página Instancias de Cloud SQL

  2. Selecciona la instancia para abrir su página de descripción general.
  3. Selecciona Usuarios en el menú de navegación.
  4. Haz clic en el ícono de más acciones Ícono de más acciones para el usuario que quieres borrar.
  5. Selecciona Borrar y haz clic en Aceptar.

gcloud

Borra el usuario:

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

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 siguientes, realiza estos 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://www.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://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. 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?