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 Cómo configurar la cuenta de usuario predeterminada.

Además, debes tener configurado un cliente de administración conectado a tu 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. 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 root con un valor de host de % (any host) 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

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'@'%').

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"name": "root", "password": "[PASSWORD]"}' \
     -X PUT \
     'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?name=root&host=%25'

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 Crear cuenta de usuario.
  5. En el cuadro de diálogo Crear cuenta de usuario, especifica lo siguiente:
    • Un nombre de usuario
    • Una contraseña
    • De forma opcional, un host

      El valor predeterminado es '%', lo que significa que la lista de host no está restringida. También puedes proporcionar una dirección IP o un rango de direcciones IP, lo que significa que solo los usuarios que se conecten desde esas direcciones podrán acceder a la base de datos.

  6. Haz 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.

Los usuarios creados con Cloud SQL tienen todos los privilegios, excepto FILE y SUPER. Si necesitas cambiar los privilegios de un usuario, usa el comando GRANT o REVOKE en el cliente mysql.

Los límites de longitud del nombre de usuario son los mismos en Cloud SQL y en MySQL local.

gcloud

Crea el usuario:

gcloud sql users create [USER_NAME] \
   --host=[HOST] --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.

Los usuarios creados con Cloud SQL tienen todos los privilegios, excepto FILE y SUPER. Si necesitas cambiar los privilegios de un usuario, usa el comando GRANT o REVOKE en el cliente mysql.

Los límites de longitud del nombre de usuario son los mismos en Cloud SQL y en MySQL local.

REST

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

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"host": "%", "name": "[USER_NAME]", "password": "[PASSWORD]"}' \
     -X POST \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users

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.

Los usuarios creados con Cloud SQL tienen todos los privilegios, excepto FILE y SUPER. Si necesitas cambiar los privilegios de un usuario, usa el comando GRANT o REVOKE en el cliente mysql.

Los límites de longitud del nombre de usuario son los mismos en Cloud SQL y en MySQL local.

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

REST

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.

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"name": "[USER_NAME]", "host": "%", "password": "[PASSWORD]"}' \
     -X PUT \
     'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?name=[USER_NAME]&host=%25'

Cliente MySQL

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

Actualiza los usuarios

Para actualizar las propiedades de los usuarios, 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. 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

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

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     -X GET \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users

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.

Cómo borrar 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] --host=[HOST] --instance=[INSTANCE_NAME]

REST

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

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"name": "[USER_NAME]", "host": "%"}' \
     -X DELETE \
     'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?host=%25&name=[USER_NAME]'

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