Gestionar usuarios con la autenticación integrada

En esta página se describe cómo habilitar y usar la autenticación integrada de Cloud SQL.

Para obtener una descripción general, consulta Autenticación de bases de datos integrada de Cloud SQL.

Antes de crear usuarios

  1. Crea una instancia de Cloud SQL. Para obtener más información, consulta Crear instancias.
  2. Habilita las políticas de contraseñas en la instancia. Para obtener más información, consulta las políticas de contraseñas de instancias.
  3. Si tienes previsto usar el cliente administrativo de tu base de datos para gestionar usuarios, sigue estos pasos:

    1. Conecta el cliente a tu instancia. Consulta Opciones de conexión para aplicaciones externas.

    2. Configura el usuario predeterminado de la instancia definiendo la contraseña. Consulta Establecer la contraseña de la cuenta de usuario predeterminada.

Definir la contraseña de la cuenta de usuario predeterminada

Cuando creas una instancia de Cloud SQL, debes definir una contraseña para la cuenta de usuario predeterminada antes de poder conectarte a la instancia.

En Cloud SQL para MySQL, el usuario predeterminado es root@%. Esto significa que se trata de un usuario de base de datos con el nombre de usuario root que puede conectarse desde cualquier host (@%).

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. En el menú de navegación de SQL, selecciona Usuarios.
  4. Busca el usuario root y, a continuación, selecciona Cambiar contraseña en el menú de más acciones Icono de acciones adicionales..

    Ten en cuenta las estipulaciones que se indican para la contraseña, que se derivan de la política de contraseñas establecida para la instancia.

  5. Introduce una contraseña segura que puedas recordar y haz clic en Aceptar.

gcloud

Usa el comando gcloud sql users set-password de la siguiente manera para definir la contraseña del usuario predeterminado.

Sustituye INSTANCE_NAME por el nombre de la instancia antes de ejecutar el comando.

gcloud sql users set-password root \
--host=% \
--instance=INSTANCE_NAME \
--prompt-for-password

REST v1

Para actualizar la contraseña de la cuenta de usuario predeterminada, usa una solicitud PUT con el método users:update.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: tu ID de proyecto
  • instance-id: el ID de instancia que quieras
  • 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=root&host=%25

Cuerpo JSON de la solicitud:

{
  "name": "root",
  "password": "password"
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

Para actualizar la contraseña de la cuenta de usuario predeterminada, usa una solicitud PUT con el método users:update.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: tu ID de proyecto
  • instance-id: el ID de instancia que quieras
  • 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=root&host=%25

Cuerpo JSON de la solicitud:

{
  "name": "root",
  "password": "password"
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

Crear un usuario

Después de configurar la cuenta de usuario predeterminada, puedes crear otros usuarios.

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. En el menú de navegación de SQL, selecciona Usuarios.
  4. Haz clic en Añadir cuenta de usuario.

    En la página Añadir 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.

  5. Selecciona Autenticación integrada (opción predeterminada) y añade la siguiente información:
    • Un nombre de usuario.
    • Opcional. Una contraseña. Proporciona una contraseña segura que puedas recordar.
    • Opcional. La política de contraseñas de los usuarios.
    • En la sección Nombre de host, el valor predeterminado es Permitir cualquier host, lo que significa que el usuario puede conectarse desde cualquier dirección IP. También puedes seleccionar Restringir host por dirección IP o por intervalo de direcciones y, en la sección Host, introducir una dirección IP o un intervalo de direcciones. El usuario solo podrá conectarse desde la dirección o las direcciones IP especificadas.
  6. Haz clic en Añadir.

Los usuarios creados en instancias que usan MySQL 8.0 o versiones posteriores y el método de autenticación de Cloud SQL tienen asignado automáticamente el rol cloudsqlsuperuser y los siguientes privilegios asociados a este rol: CREATEROLE, CREATEDB y LOGIN.

Los usuarios creados en instancias que usan MySQL 5.7 y el método de autenticación de Cloud SQL tienen todos los privilegios automáticamente, excepto FILE y SUPER. Si necesitas cambiar los privilegios de estos usuarios, utiliza los comandos GRANT o REVOKE en el cliente mysql.

Para obtener más información sobre estas cuentas de usuario y privilegios, consulta Otras cuentas de usuario de MySQL.

gcloud

Para crear un usuario, usa el comando gcloud sql users create.

Haz los cambios siguientes:

  • USER_NAME: nombre de usuario.
  • HOST: el nombre de host del usuario como una dirección IP específica, un intervalo de direcciones o cualquier host (%).
  • INSTANCE_NAME: el nombre de la instancia.
  • PASSWORD: la contraseña del usuario.
gcloud sql users create USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME \
--password=PASSWORD

Los usuarios creados en instancias que usan MySQL 8.0 o versiones posteriores y el método de autenticación de Cloud SQL tienen asignado automáticamente el rol cloudsqlsuperuser y los siguientes privilegios asociados a este rol: CREATEROLE, CREATEDB y LOGIN.

Los usuarios creados en instancias que usan MySQL 5.7 y el método de autenticación de Cloud SQL tienen todos los privilegios automáticamente, excepto FILE y SUPER. Si necesitas cambiar los privilegios de estos usuarios, utiliza los comandos GRANT o REVOKE en el cliente mysql.

Para obtener más información sobre estas cuentas de usuario y privilegios, consulta Otras cuentas de usuario de MySQL.

Los límites de longitud de los nombres de usuario son los mismos en Cloud SQL que en MySQL local: 32 caracteres en MySQL 8.0 y versiones posteriores, y 16 caracteres en versiones anteriores.

Cuando creas un usuario, puedes añadir parámetros de política de contraseñas de usuario.

Terraform

Para crear un usuario, usa un recurso de Terraform.

resource "random_password" "pwd" {
  length  = 16
  special = false
}

resource "google_sql_user" "user" {
  name     = "user"
  instance = google_sql_database_instance.instance.name
  password = random_password.pwd.result
}

Aplica los cambios

Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

Preparar Cloud Shell

  1. Abre Cloud Shell.
  2. Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.

    Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.

Preparar el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

  1. En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

    Copia el código de ejemplo en el archivo main.tf que acabas de crear.

    También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
    terraform init

    Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
    terraform plan

    Haga las correcciones necesarias en la configuración.

  2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply

    Espera hasta que Terraform muestre el mensaje "Apply complete!".

  3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

Eliminar los cambios

Para eliminar los cambios, sigue estos pasos:

  1. Para inhabilitar la protección contra la eliminación, en el archivo de configuración de Terraform, asigna el valor false al argumento deletion_protection.
    deletion_protection =  "false"
  2. Aplica la configuración de Terraform actualizada ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply
  1. Para quitar los recursos que se hayan aplicado anteriormente con tu configuración de Terraform, ejecuta el siguiente comando e introduce yes en la petición:

    terraform destroy

REST v1

Para crear un usuario, usa una solicitud POST con el método users:insert.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: tu ID de proyecto
  • instance-id: el ID de instancia que quieras
  • user-id: 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, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

Los usuarios creados en instancias que usan MySQL 8.0 o versiones posteriores y el método de autenticación de Cloud SQL tienen asignado automáticamente el rol cloudsqlsuperuser y los siguientes privilegios asociados a este rol: CREATEROLE, CREATEDB y LOGIN.

Los usuarios creados en instancias que usan MySQL 5.7 y el método de autenticación de Cloud SQL tienen todos los privilegios automáticamente, excepto FILE y SUPER. Si necesitas cambiar los privilegios de estos usuarios, utiliza los comandos GRANT o REVOKE en el cliente mysql.

Para obtener más información sobre estas cuentas de usuario y privilegios, consulta Otras cuentas de usuario de MySQL.

Los límites de longitud de los nombres de usuario son los mismos en Cloud SQL que en MySQL local: 32 caracteres en MySQL 8.0 y versiones posteriores, y 16 caracteres en versiones anteriores.

Cuando creas un usuario, puedes añadir parámetros de política de contraseñas de usuario.

REST v1beta4

Para crear un usuario, usa una solicitud POST con el método users:insert.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: tu ID de proyecto
  • instance-id: el ID de instancia que quieras
  • user-id: 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, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

Los usuarios creados en instancias que usan MySQL 8.0 o versiones posteriores y el método de autenticación de Cloud SQL tienen asignado automáticamente el rol cloudsqlsuperuser y los siguientes privilegios asociados a este rol: CREATEROLE, CREATEDB y LOGIN.

Los usuarios creados en instancias que usan MySQL 5.7 y el método de autenticación de Cloud SQL tienen todos los privilegios automáticamente, excepto FILE y SUPER. Si necesitas cambiar los privilegios de estos usuarios, utiliza los comandos GRANT o REVOKE en el cliente mysql.

Para obtener más información sobre estas cuentas de usuario y privilegios, consulta Otras cuentas de usuario de MySQL.

Los límites de longitud de los nombres de usuario son los mismos en Cloud SQL que en MySQL local: 32 caracteres en MySQL 8.0 y versiones posteriores, y 16 caracteres en versiones anteriores.

Cuando creas un usuario, puedes añadir parámetros de política de contraseñas de usuario.

Cliente mysql

  1. Para crear un usuario, en la petición mysql, usa la siguiente instrucción CREATE USER:
      CREATE USER 'USER_NAME'@'%'
         IDENTIFIED BY 'PASSWORD';
      

    Si quiere, puede añadir los parámetros de la política de contraseñas de usuario.

  2. Puedes confirmar la creación del usuario mostrando la tabla de usuario:
    SELECT user, host FROM mysql.user;
    En el caso de una instancia de segunda generación, el resultado es similar al siguiente ejemplo:
    +----------+-----------+
    | user     | host      |
    +----------+-----------+
    | root     | %         |
    | newuser  | %         |
    +----------+-----------+
    1 row in set (0.01 sec)
    
  3. Asigna privilegios al usuario con la instrucción GRANT. Para obtener más información, consulta Privilegios proporcionados por MySQL.
  4. Borra la tabla mysql.user para asegurarte de que el cambio se mantiene:
      FLUSH TABLES mysql.user;

Definir una política de contraseñas de usuario

Puedes definir una política de contraseñas con el tipo de autenticación integrado.

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. En el menú de navegación de SQL, selecciona Usuarios.
  4. Haz clic en más acciones Icono de acciones adicionales. del usuario cuya política quieras cambiar.
  5. Selecciona Editar política de contraseñas.
  6. En la sección Política de contraseñas, selecciona una o varias de las siguientes opciones:
    • Establecer la fecha de vencimiento de la contraseña: especifica el número de días tras los cuales la contraseña caduca y el usuario debe crear una nueva.
    • Bloquear tras varios intentos fallidos: especifica el número de veces que un usuario puede probar la contraseña incorrectamente antes de que se bloquee la cuenta.

      Solo se admite en Cloud SQL para MySQL 8.0 y versiones posteriores.

    • Solicitar la contraseña actual al cambiarla: requiere que los usuarios introduzcan su contraseña actual cuando intenten cambiarla.

gcloud

Para definir la política de contraseñas de usuario, usa el comando gcloud sql users set-password-policy.

Usa --password-policy-enable-password-verification para que los usuarios tengan que introducir su contraseña actual cuando intenten cambiarla. Para inhabilitar este parámetro, usa --no-password-policy-enable-password-verification.

Haz los cambios siguientes:

  • USER_NAME: nombre de usuario.
  • INSTANCE_NAME: el nombre de la instancia.
  • HOST: el nombre de host del usuario como una dirección IP específica, un intervalo de direcciones o cualquier host (%).
  • PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS: Opcional: número de veces que un usuario puede probar la contraseña incorrectamente antes de que se bloquee la cuenta. Usa --password-policy-enable-failed-attempts-check para habilitar y --no-password-policy-enable-failed-attempts-check para inhabilitar la comprobación.
  • PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION: opcional. Especifica el número de días tras los cuales caduca la contraseña y el usuario debe crear una nueva.
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--password-policy-enable-failed-attempts-check \
--password-policy-allowed-failed-attempts=PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS \
--password-policy-password-expiration-duration=PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION \
--password-policy-enable-password-verification

Para quitar una política de contraseñas de usuario, usa el parámetro --clear-password-policy.

gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--clear-password-policy

Para ver la política de contraseñas de los usuarios, consulta Lista de usuarios.

REST v1

Para definir una política de contraseñas de usuario, usa una solicitud PUT con el método users:update.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto
  • INSTANCE_ID: el ID de instancia
  • USER_ID: el ID del usuario
  • PASSWORD: la contraseña del usuario
  • FAILED_ATTEMPTS_CHECK: se define como true para habilitar una comprobación del número de intentos fallidos de inicio de sesión tras los cuales se bloquea la cuenta.
  • NUMBER_OF_ATTEMPTS: el número de intentos fallidos de inicio de sesión tras los cuales se bloquea la cuenta
  • PASSWORD_EXPIRATION_DURATION: el número de días tras los cuales caduca la contraseña y el usuario tiene que crear una nueva.
  • VERIFY_PASSWORD: se establece en true para que sea obligatorio que los usuarios introduzcan su contraseña actual cuando intenten cambiarla.

Método HTTP y URL:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

Cuerpo JSON de la solicitud:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION",
        "enablePasswordVerification" : "VERIFY_PASSWORD"
      }
    },
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

Para ver la política de contraseñas de los usuarios, consulta Lista de usuarios.

REST v1beta4

Para definir una política de contraseñas de usuario, usa una solicitud PUT con el método users:update.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto
  • INSTANCE_ID: el ID de instancia
  • USER_ID: el ID del usuario
  • PASSWORD: la contraseña del usuario
  • FAILED_ATTEMPTS_CHECK: se define como true para habilitar una comprobación del número de intentos fallidos de inicio de sesión tras los cuales se bloquea la cuenta.
  • NUMBER_OF_ATTEMPTS: el número de intentos fallidos de inicio de sesión tras los cuales se bloquea la cuenta
  • PASSWORD_EXPIRATION_DURATION: el número de días tras los cuales caduca la contraseña y el usuario tiene que crear una nueva.
  • VERIFY_PASSWORD: se establece en true para que sea obligatorio que los usuarios introduzcan su contraseña actual cuando intenten cambiarla.

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",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION",
        "enablePasswordVerification" : "VERIFY_PASSWORD"
      }
    },
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

Para ver la política de contraseñas de los usuarios, consulta Lista de usuarios.

Cliente mysql

Para definir una política de contraseñas de usuario, en la petición mysql, usa la siguiente instrucción ALTER USER:

ALTER USER USER_NAME
    FAILED_LOGIN_ATTEMPTS ALLOWED_FAILED_ATTEMPTS
    PASSWORD EXPIRE INTERVAL PASSWORD_EXPIRATION_DURATION DAY
    PASSWORD REQUIRE CURRENT;

Haz los cambios siguientes:

  • USER_NAME: nombre de usuario.
  • ALLOWED_FAILED_ATTEMPTS: Opcional: número de veces que un usuario puede probar la contraseña incorrectamente antes de que se bloquee la cuenta.
  • PASSWORD_EXPIRATION_DURATION: opcional. Especifica el número de días tras los cuales caduca la contraseña y el usuario debe crear una nueva.

Usa la opción PASSWORD REQUIRE CURRENT para que los usuarios tengan que introducir su contraseña actual cuando intenten cambiarla.

Las

Para ver la política de contraseñas de los usuarios, consulta Listar usuarios.

Lista de usuarios

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. En el menú de navegación de SQL, selecciona Usuarios.

    En la lista se muestra el User name, el Host name y el tipo Authentication de cada usuario.

    Además, en el caso del tipo de autenticación integrada, también se indica el Password status.

gcloud

Usa el comando gcloud sql users list para enumerar los usuarios de esta instancia:

gcloud sql users list \
--instance=INSTANCE_NAME

El comando devuelve el Name, el Host y la autenticación Type de cada usuario.

Además, en el caso del tipo de autenticación integrada, se devuelven los ajustes y el estado de la política de contraseñas. Por ejemplo:

    NAME    HOST    TYPE        PASSWORD_POLICY
    user1           BUILT_IN    {'allowedFailedAttempts': 2,
                                 'enableFailedAttemptsCheck': True,
                                 'passwordExpirationDuration': '7d',
                                 'status': {
                                   'locked': True,
                                   'passwordExpirationTime': '2022-07-01T19:53:45.822742904Z'
                                 }
                                }
   

REST v1

Para enumerar los usuarios definidos en una instancia, usa una solicitud GET con el método users:list.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

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

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

Si se ha definido una política de contraseñas de usuario, la sección items de la respuesta incluye una sección passwordPolicy. En el siguiente código de ejemplo se muestra la sección passwordPolicy.

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d",
      "enablePasswordVerification" : true
    }
  },
  ...
}
  

REST v1beta4

Para enumerar los usuarios definidos en una instancia, usa una solicitud GET con el método users:list.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

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

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

Si se ha definido una política de contraseñas de usuario, la sección items de la respuesta incluye una sección passwordPolicy. En el siguiente código de ejemplo se muestra la sección passwordPolicy.

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d",
      "enablePasswordVerification" : true
    }
  },
  ...
}
  

Cliente mysql

Para ver una lista de los usuarios de MySQL, en la petición mysql, usa la siguiente instrucción SELECT:

SELECT user, host FROM mysql.user;

En una instancia de segunda generación con solo la cuenta de usuario root configurada, el resultado será similar al de este ejemplo:

+------+-----------+
| user | host      |
+------+-----------+
| root | %         |
+------+-----------+
1 row in set (0.01 sec)

En este ejemplo se muestran los usuarios de una instancia con el usuario root. Este usuario puede conectarse desde cualquier host (%). El campo de contraseña muestra el hash de la contraseña.

Cambiar la contraseña de un usuario

Las contraseñas de los usuarios se pueden cambiar de una de las siguientes formas.

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. En el menú de navegación de SQL, selecciona Usuarios.
  4. Haz clic en más acciones Icono de acciones adicionales. junto al usuario que quieras actualizar.
  5. Selecciona Cambiar contraseña.
  6. Especifica una nueva contraseña.

    Además, si quieres seguir usando tu contraseña anterior, marca la casilla Conservar contraseña actual.

  7. Haz clic en Aceptar.

gcloud

Usa el comando gcloud sql users set-password para cambiar una contraseña.

Haz los cambios siguientes:

  • USER_NAME: nombre de usuario.
  • HOST: el nombre de host del usuario como una dirección IP específica, un intervalo de direcciones o cualquier host (%).
  • INSTANCE_NAME: el nombre de la instancia.
  • PASSWORD: una contraseña. Debe cumplir los requisitos de las políticas de contraseñas, si se han definido.

Si tienes MySQL 8.0 o una versión posterior, puedes seguir permitiendo que el usuario utilice la contraseña antigua con la opción --retain-password. Para descartar la contraseña anterior, usa la opción --discard-dual-password.

gcloud sql users set-password USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME \
--password=PASSWORD

REST v1

Para cambiar la contraseña de un usuario, usa una solicitud PUT con el método users:update.

La siguiente solicitud actualiza la contraseña de la cuenta de usuario user_name'@'%. Si el usuario tiene un host diferente, debes modificar la llamada con el host correcto.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: tu ID de proyecto
  • instance-id: el ID de instancia que quieras
  • user-id: ID del usuario.
  • password: la nueva contraseña del usuario
  • dual-password: uno de estos valores de enumeración:
    • DUAL_PASSWORD: el usuario puede seguir usando la contraseña anterior.
    • NO_DUAL_PASSWORD: el usuario no puede usar la contraseña anterior.
    • NO_MODIFY_DUAL_PASSWORD: el estado de la contraseña dual no cambia.

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",
  "retainedPassword" : "dual-password"
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

Para cambiar la contraseña de un usuario, usa una solicitud PUT con el método users:update.

La siguiente solicitud actualiza la contraseña de la cuenta de usuario user_name'@'%. Si el usuario tiene un host diferente, debes modificar la llamada con el host correcto.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: tu ID de proyecto
  • instance-id: el ID de instancia que quieras
  • user-id: ID del usuario.
  • password: la nueva contraseña del usuario
  • dual-password: uno de estos valores de enumeración:
    • DUAL_PASSWORD: el usuario puede seguir usando la contraseña anterior.
    • NO_DUAL_PASSWORD: el usuario no puede usar la contraseña anterior.
    • NO_MODIFY_DUAL_PASSWORD: el estado de la contraseña dual no cambia.

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",
  "retainedPassword" : "dual-password"
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

  1. Para cambiar la contraseña, en la petición mysql, usa la siguiente instrucción SET PASSWORD:
    SET PASSWORD FOR USER_NAME = PASSWORD('auth_string');
  2. Borra la tabla mysql.user para asegurarte de que el cambio se mantenga:
    FLUSH TABLES mysql.user;

Si un usuario no puede acceder a su cuenta debido a la configuración de la política de contraseñas, cambia la contraseña para desbloquearla. Asegúrate de que las contraseñas, cuando se cambien, cumplan la política de contraseñas.

Quitar una política de contraseñas de usuario

Puedes quitar una política de contraseñas a un usuario que tenga el tipo de autenticación integrado.

gcloud

Para quitar la política de contraseñas de usuario, usa el comando gcloud sql users set-password-policy y el parámetro --clear-password-policy.

Haz los cambios siguientes:

  • USER_NAME: el nombre de usuario
  • INSTANCE_NAME: el nombre de la instancia
  • HOST: el nombre de host del usuario como una dirección IP específica, un intervalo de direcciones o cualquier host (%)
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--clear-password-policy

REST v1

Para quitar una política de contraseñas de usuario, usa una solicitud PUT con el método users:update.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto
  • INSTANCE_ID: el ID de instancia
  • USER_ID: el ID del usuario
  • PASSWORD: la contraseña del usuario

Método HTTP y URL:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

Cuerpo JSON de la solicitud:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

REST v1beta4

Para quitar una política de contraseñas de usuario, usa una solicitud PUT con el método users:update.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto
  • INSTANCE_ID: el ID de instancia
  • 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",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

Quitar un usuario

El usuario predeterminado puede quitar usuarios.

Antes de eliminar un usuario, debe eliminar todos los objetos que le pertenezcan o reasignar su propiedad, así como revocar todos los privilegios que se le hayan concedido en otros objetos.

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. En el menú de navegación de SQL, selecciona Usuarios.
  4. Haz clic en más acciones Icono de acciones adicionales. junto al usuario que quieras quitar.
  5. Selecciona Quitar y, a continuación, vuelve a seleccionar Quitar.

gcloud

Usa el comando gcloud sql users delete para quitar un usuario.

Haz los cambios siguientes:

  • USER_NAME: nombre de usuario.
  • HOST: el nombre de host del usuario como una dirección IP específica, un intervalo de direcciones o cualquier host (%).
  • INSTANCE_NAME: el nombre de la instancia.
gcloud sql users delete USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME

REST v1

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

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto
  • INSTANCE_ID: el ID de instancia que quieras
  • USERNAME: la dirección de correo del usuario o de la cuenta de servicio

Método HTTP y URL:

DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

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

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto
  • INSTANCE_ID: el ID de instancia que quieras
  • USERNAME: la dirección de correo del usuario o de la cuenta de servicio

Método HTTP y URL:

DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

  1. Para eliminar un usuario, en la petición mysql, usa la siguiente instrucción DROP USER:
    DROP USER 'USER_NAME'@'HOST_NAME';
  2. Borra la tabla mysql.user para asegurarte de que el cambio se mantiene:
    FLUSH TABLES mysql.user;

Actualizar propiedades de usuario

Para actualizar las propiedades de usuario, como el host o los privilegios, debe usar el cliente mysql. Para obtener más información, consulta el artículo Gestión de cuentas de usuario de MySQL en la documentación de MySQL.

Siguientes pasos