Crea y administra usuarios de MySQL

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

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 para poder conectarte a la instancia.

El usuario predeterminado de Cloud SQL para MySQL es root@%.

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 root 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 root \
--host=% \
--instance=INSTANCE_NAME \
--prompt-for-password

REST v1

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

('root'@'%').

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
  • 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, 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.

('root'@'%').

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
  • 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, 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).
      • 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.

        De manera opcional, selecciona Restringir host por dirección IP o rango de direcciones y, luego, ingresa una dirección IP o un rango de direcciones en la sección Host. Luego, el usuario solo podrá conectarse desde la dirección IP o las direcciones especificadas.

    • 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.
  5. Haga clic en Add.

A los usuarios creados en instancias que usan MySQL 8.0 y 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.

Los usuarios que se crean en instancias que usan MySQL 5.7 y el método de autenticación de Cloud SQL reciben todos los privilegios, excepto FILE y SUPER automáticamente. Si necesitas cambiar los privilegios de estos usuarios, usa el comando GRANT o REVOKE en el archivo mysql. cliente.

gcloud

Crea el usuario:

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

A los usuarios creados en instancias que usan MySQL 8.0 y 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.

Los usuarios que se crean en instancias que usan MySQL 5.7 y el método de autenticación de Cloud SQL reciben todos los privilegios, excepto FILE y SUPER automáticamente. Si necesitas cambiar los privilegios de estos usuarios, usa el comando GRANT o REVOKE en el archivo mysql. cliente.

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

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 creados en instancias que usan MySQL 8.0 y 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.

Los usuarios que se crean en instancias que usan MySQL 5.7 y el método de autenticación de Cloud SQL reciben todos los privilegios, excepto FILE y SUPER automáticamente. Si necesitas cambiar los privilegios de estos usuarios, usa el comando GRANT o REVOKE en el archivo mysql. cliente.

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

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 creados en instancias que usan MySQL 8.0 y 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.

Los usuarios que se crean en instancias que usan MySQL 5.7 y el método de autenticación de Cloud SQL reciben todos los privilegios, excepto FILE y SUPER automáticamente. Si necesitas cambiar los privilegios de estos usuarios, usa el comando GRANT o REVOKE en el archivo mysql. cliente.

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

Cliente mysql

  1. Cuando aparezca el cuadro mysql, crea el usuario:
      CREATE USER 'USER_NAME'@'%'
         IDENTIFIED BY 'PASSWORD';
      
  2. Puedes confirmar la creación del usuario si muestras la tabla de usuario:
    SELECT user, host FROM mysql.user;
    
    Para una instancia de segunda generación, el resultado es similar a este ejemplo:
    +----------+-----------+
    | user     | host      |
    +----------+-----------+
    | root     | %         |
    | newuser  | %         |
    +----------+-----------+
    1 row in set (0.01 sec)
    
  3. Proporciona privilegios al usuario con la declaración GRANT. Para obtener más información, consulta los privilegios proporcionados por MySQL.
  4. Limpia la tabla mysql.user para asegurarte de que el cambio persista:
      FLUSH TABLES mysql.user;
    

Cambia 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 \
--host=HOST \
--instance=INSTANCE_NAME \
--prompt-for-password

REST v1

En la solicitud que se muestra a continuación, se usa el método users:update para actualizar la contraseña de la cuenta de usuario user_name'@'%'. Si tu usuario tiene un host diferente, debes modificar la llamada y especificar el host correcto.

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 contraseña de la cuenta de usuario user_name'@'%'. Si tu usuario tiene un host diferente, debes modificar la llamada y especificar el host correcto.

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 mysql

  1. Cuando aparezca el cuadro de mysql, cambia la contraseña:
    SET PASSWORD FOR USER_NAME = PASSWORD('auth_string');
    
  2. Limpia la tabla mysql.user para asegurarte de que el cambio persista:
    FLUSH TABLES mysql.user;
    

Actualiza usuarios

Para actualizar las propiedades del usuario, como el host o los privilegios, debes usar el cliente mysql. Para obtener más información, consulta la página sobre la administración de cuentas de usuario de MySQL en la documentación de MySQL.

Cómo mostrar 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.

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

Cuando aparezca el cuadro de mysql, enumera los usuarios de MySQL:

SELECT user, host FROM mysql.user;

Para una instancia de segunda generación que tenga solo la cuenta de usuario raíz configurada, el resultado es similar a este ejemplo:

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

En este ejemplo se muestran los usuarios para una instancia en la que se agregó el usuario 'root'@'%'. El campo de contraseña muestra el hash de la contraseña.

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 \
--host=HOST \
--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 mysql

  1. Cuando aparezca el cuadro de mysql, borra el usuario:
    DROP USER 'USER_NAME'@'HOST_NAME';
    

    Para obtener más información sobre la declaración DROP USER, consulta la documentación de MySQL.

  2. Limpia la tabla mysql.user para asegurarte de que el cambio persista:
    FLUSH TABLES mysql.user;
    

¿Qué sigue?