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 la base de datos integrada de Cloud SQL.Antes de crear usuarios
- Crea una instancia de Cloud SQL. Para obtener más información, consulta cómo Crear instancias.
- Habilita las políticas de contraseñas para la instancia. Para obtener más información, consulta Políticas de contraseñas de instancia.
Si planeas usar el cliente de administración de tu base de datos para administrar usuarios, haz lo siguiente:
Conecta el cliente a tu instancia. Consulta Opciones de conexión para aplicaciones externas.
Establece una contraseña para configurar el usuario predeterminado en la instancia. Consulta Establece una contraseña para la cuenta de usuario predeterminada.
Establece una contraseña para la cuenta del usuario predeterminado
Cuando creas una instancia de Cloud SQL nueva, debes establecer una contraseña para la cuenta de usuario predeterminada antes de poder conectarte a la instancia.
En Cloud SQL para MySQL, el usuario predeterminado esroot@%
. Esto significa que un usuario de la base de datos tiene un nombre de usuario de root
que puede conectarse desde cualquier host (@%
).
Consola
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
- Selecciona Usuarios en el menú de navegación de SQL.
- Busca el usuario
root
y selecciona Cambiar contraseña en el menú de más acciones .Considera las estipulaciones enumeradas para la contraseña, que derivan de la política de contraseñas establecida para la instancia.
- Proporciona 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 a fin de configurar la contraseña para el usuario predeterminado.
Reemplaza 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 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
Para actualizar la contraseña de la cuenta de usuario predeterminada, usa una solicitud PUT con el método users:update.
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
Después de configurar la cuenta de usuario predeterminada, puedes crear otros usuarios.
Consola
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
- Selecciona Usuarios en el menú de navegación de SQL.
- 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.
- Selecciona Autenticación integrada (la opción predeterminada) y agrega 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 usuario.
- 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.
- Haga clic en Agregar.
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
Para crear un usuario, usa el comando
gcloud sql users create
.
Reemplaza lo siguiente:
- USER_NAME: El nombre de usuario
- HOST: El nombre de host del usuario como una dirección IP específica, un rango 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
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.
Cuando creas un usuario, puedes agregar parámetros de política de contraseñas de usuario.
Terraform
Para crear un usuario, usa un recurso de Terraform.
Aplica los cambios
Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.
Prepara Cloud Shell
- Inicia Cloud Shell
-
Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf
, por ejemplo,main.tf
. En este instructivo, el archivo se denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.
Copia el código de muestra en el
main.tf
recién creado.De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
Inicialice Terraform. Solo debes hacerlo una vez por directorio.
terraform init
De manera opcional, incluye la opción
-upgrade
para usar la última versión del proveedor de Google:terraform init -upgrade
Aplique los cambios
-
Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
terraform plan
Corrige la configuración según sea necesario.
-
Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yes
cuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “Apply complete!”.
- Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
Borra los cambios
Para borrar tus cambios, haz lo siguiente:
- Para inhabilitar la protección contra la eliminación, en tu archivo de configuración de Terraform, establece el argumento
deletion_protection
enfalse
.deletion_protection = "false"
- Para aplicar la configuración actualizada de Terraform, ejecuta el siguiente comando y, luego, ingresa
yes
cuando se te solicite:terraform apply
-
Quita los recursos que se aplicaron antes con tu configuración de Terraform a través de la ejecución del siguiente comando y, luego, ingresa
yes
cuando se te solicite:terraform destroy
REST v1
Para crear un usuario, usa una solicitud POST con el método users:insert.
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.
Cuando creas un usuario, puedes agregar 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 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.
Cuando creas un usuario, puedes agregar parámetros de política de contraseñas de usuario.
Cliente mysql
- Para crear un usuario, en el mensaje
mysql
, usa la siguiente sentencia CREATE USER:CREATE USER 'USER_NAME'@'%' IDENTIFIED BY 'PASSWORD';
De manera opcional, agrega los parámetros de la política de contraseñas de usuario.
- 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)
- Proporciona privilegios al usuario con la declaración
GRANT
. Para obtener más información, consulta los privilegios proporcionados por MySQL. - Limpia la tabla
mysql.user
para asegurarte de que el cambio persista:FLUSH TABLES mysql.user;
Establece una política de contraseñas de usuario
Puedes configurar una política de contraseñas con el tipo de autenticación integrado.
Consola
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
- Selecciona Usuarios en el menú de navegación de SQL.
- Haz clic en el ícono de más acciones en el usuario cuya política deseas cambiar.
- Selecciona Editar política de contraseñas.
- En la sección Política de contraseñas, selecciona una o más de las siguientes opciones:
- Configurar la contraseña para que venza: Especifica la cantidad de días luego de los cuales vence la contraseña y el usuario debe crear una nueva.
- Bloqueo después de intentos fallidos: Especifica la cantidad de veces que un usuario puede probar la contraseña de forma incorrecta antes de que se bloquee la cuenta.
Esta opción solo es compatible con Cloud SQL para MySQL 8.0.
- Exigir la contraseña actual cuando se cambia la contraseña: requiere que los usuarios ingresen su contraseña existente cuando intentan cambiarla.
gcloud
Para establecer la política de la contraseña del usuario, usa el comando
gcloud sql users set-password-policy
.
Usa --password-policy-enable-password-verification
para que los usuarios ingresen su contraseña existente cuando intenten cambiarla. Para inhabilitar este parámetro, usa --no-password-policy-enable-password-verification
.
Reemplaza lo siguiente:
- 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 rango de direcciones o cualquier host (
%
). - PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS: (Opcional) La cantidad de veces que un usuario puede probar la contraseña de manera incorrecta antes de que se bloquee la cuenta. Usa
--password-policy-enable-failed-attempts-check
para habilitar la verificación y--no-password-policy-enable-failed-attempts-check
para inhabilitarla. - PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION: Especifica la cantidad de días después de los cuales vence la contraseña y el usuario debe crear una nueva (opcional).
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 del usuario, consulta Mostrar lista de usuarios.
REST v1
Para establecer una política de contraseñas de usuario, usa una solicitud PUT con el método users:update.
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 la instancia
- USER_ID: El ID del usuario
- PASSWORD: La contraseña del usuario
- FAILED_ATTEMPTS_CHECK: Configúralo como
true
para habilitar una verificación de la cantidad de intentos de acceso fallidos después de que se bloquea la cuenta - NUMBER_OF_ATTEMPTS: La cantidad de intentos de acceso fallidos después de la cual se bloquea la cuenta
- PASSWORD_EXPIRATION_DURATION: La cantidad de días después de los cuales vence la contraseña y el usuario debe crear una nueva
- VERIFY_PASSWORD: Configúralo como
true
para que los usuarios ingresen su contraseña existente cuando intenten cambiar la contraseña
HTTP method and 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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Para ver la política de contraseñas del usuario, consulta Mostrar lista de usuarios.
REST v1beta4
Para establecer una política de contraseñas de usuario, usa una solicitud PUT con el método users:update.
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 la instancia
- USER_ID: El ID del usuario
- PASSWORD: La contraseña del usuario
- FAILED_ATTEMPTS_CHECK: Configúralo como
true
para habilitar una verificación de la cantidad de intentos de acceso fallidos después de que se bloquea la cuenta - NUMBER_OF_ATTEMPTS: La cantidad de intentos de acceso fallidos después de la cual se bloquea la cuenta
- PASSWORD_EXPIRATION_DURATION: La cantidad de días después de los cuales vence la contraseña y el usuario debe crear una nueva
- VERIFY_PASSWORD: Configúralo como
true
para que los usuarios ingresen su contraseña existente cuando intenten cambiar la contraseña
HTTP method and 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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Para ver la política de contraseñas del usuario, consulta Mostrar lista de usuarios.
Cliente mysql
Para establecer una política de contraseñas de usuario, en la ventana mysql
, usa la siguiente sentencia
ALTER USER:
ALTER USER USER_NAME FAILED_LOGIN_ATTEMPTS ALLOWED_FAILED_ATTEMPTS PASSWORD EXPIRE INTERVAL PASSWORD_EXPIRATION_DURATION DAY PASSWORD REQUIRE CURRENT;
Reemplaza lo siguiente:
- USER_NAME: El nombre de usuario
- ALLOWED_FAILED_ATTEMPTS: (Opcional) La cantidad de veces que un usuario puede probar la contraseña de manera incorrecta antes de que se bloquee la cuenta.
- PASSWORD_EXPIRATION_DURATION: Especifica la cantidad de días después de los cuales vence la contraseña y el usuario debe crear una nueva (opcional).
Usa la opción PASSWORD REQUIRE CURRENT
para hacer que los usuarios ingresen su contraseña existente cuando intenten cambiarla.
Para ver la política de contraseñas del usuario, consulta Mostrar lista de usuarios.
Mostrar lista de usuarios
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
- Selecciona Usuarios en el menú de navegación de SQL.
En la lista, se muestran los tipos
User name
,Host name
yAuthentication
para cada usuario.Además, para el tipo de autenticación integrado, también se indica
Password status
.
gcloud
Usa el comando gcloud sql users list a fin de enumerar los usuarios para esta instancia:
gcloud sql users list \ --instance=INSTANCE_NAME
El comando muestra el Name
, el Host
y la autenticación Type
para cada usuario.
Además, para el tipo de autenticación integrado, se muestran la configuración y el estado de la política de contraseña. 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 de una instancia, usa una solicitud GET con el método users:list.
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" ] } }, { ... }, { ... } ] }
Si se estableció una política de contraseñas de usuario, la sección items
de la respuesta incluye una sección passwordPolicy
. En el siguiente ejemplo de código, se muestra la sección passwordPolicy
.
{ ... "passwordValidationUserPolicy" : { { "enableFailedAttemptsCheck" : true, "allowedFailedAttempts" : 8, "passwordExpirationDuration" : "7d", "enablePasswordVerification" : true } }, ... }
REST v1beta4
Para enumerar los usuarios definidos de una instancia, usa una solicitud GET con el método users:list.
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" ] } }, { ... }, { ... } ] }
Si se estableció una política de contraseñas de usuario, la sección items
de la respuesta incluye una sección passwordPolicy
. En el siguiente ejemplo de código, se muestra la sección passwordPolicy
.
{ ... "passwordValidationUserPolicy" : { { "enableFailedAttemptsCheck" : true, "allowedFailedAttempts" : 8, "passwordExpirationDuration" : "7d", "enablePasswordVerification" : true } }, ... }
Cliente mysql
Para mostrar una lista de los usuarios de MySQL, en el mensaje mysql
, usa la siguiente sentencia
SELECT:
SELECT user, host FROM mysql.user;
Para una instancia de segunda generación que tenga solo la cuenta de usuario root
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 con el usuario root
. Este usuario puede conectarse desde cualquier host (%
). El campo de contraseña muestra el hash de la contraseña.
Cambia una contraseña de usuario
Las contraseñas de usuario se pueden cambiar de una de las siguientes maneras.
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
- Selecciona Usuarios en el menú de navegación de SQL.
- Haz clic en el ícono de más acciones para el usuario que quieres actualizar.
- Selecciona Cambiar contraseña.
- Especifica una contraseña nueva.
Además, si deseas seguir usando tu contraseña anterior, selecciona la casilla de verificación Conservar contraseña actual.
- Haga clic en Aceptar.
gcloud
Usa el comando
gcloud sql users set-password
para cambiar una contraseña.
Reemplaza lo siguiente:
- USER_NAME: El nombre de usuario
- HOST: El nombre de host del usuario como una dirección IP específica, un rango de direcciones o cualquier host (
%
). - INSTANCE_NAME: El nombre de la instancia
- PASSWORD: Una contraseña. Debe cumplir con los requisitos de las políticas de contraseñas, si se configuraron.
De forma opcional, para MySQL 8.0, puedes permitir que el usuario use la contraseña anterior 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 una contraseña de usuario, usa una solicitud PUT con el método users:update.
La siguiente solicitud actualiza la contraseña para la cuenta de usuario user_name'@'%
. Si tu usuario tiene un host diferente, debes modificar la llamada con 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
- dual-password: Uno de estos valores de enum:
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 doble no se modifica.
HTTP method and 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, 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
Para cambiar una contraseña de usuario, usa una solicitud PUT con el método users:update.
La siguiente solicitud actualiza la contraseña para la cuenta de usuario user_name'@'%
. Si tu usuario tiene un host diferente, debes modificar la llamada con 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
- dual-password: Uno de estos valores de enum:
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 doble no se modifica.
HTTP method and 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, 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
- Para cambiar la contraseña, cuando aparezca el cuadro
mysql
, usa la siguiente sentencia SET PASSWORD:SET PASSWORD FOR USER_NAME = PASSWORD('auth_string');
- Limpia la tabla
mysql.user
para asegurarte de que el cambio persista:FLUSH TABLES mysql.user;
Si un usuario está bloqueado debido a la configuración de la política de contraseñas, cambia la contraseña para desbloquearlo. Asegúrate de que las contraseñas, cuando se modifiquen, cumplan con la política de contraseñas.
Quita una política de contraseñas de usuario
Puedes quitar una política de contraseñas de un usuario que tiene el tipo de autenticación integrado.
gcloud
Para quitar la política de contraseñas del usuario, usa el comando gcloud sql users set-password-policy
y el parámetro --clear-password-policy
.
Reemplaza lo siguiente:
- USER_NAME: El nombre de usuario
- INSTANCE_NAME: Es el nombre de la instancia.
- HOST: El nombre de host del usuario como una dirección IP específica, un rango 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 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 la 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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
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 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 la 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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Quita un usuario
El usuario predeterminado puede quitar usuarios.
Antes de quitar un usuario, debes quitarle todos los objetos que posee o reasignar su propiedad, y revocar todos los privilegios que se le hayan otorgado al rol en otros objetos.
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
- Selecciona Usuarios en el menú de navegación de SQL.
- Haz clic en el ícono de más acciones para el usuario que quieres quitar.
- Selecciona Quitar y, luego, vuelve a seleccionar Quitar.
gcloud
Usa el comando
gcloud sql users delete
para quitar un usuario.
Reemplaza lo siguiente:
- USER_NAME: El nombre de usuario
- HOST: El nombre de host del usuario como una dirección IP específica, un rango 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
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
- USERNAME: la dirección de correo electrónico del usuario o 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, 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
- USERNAME: la dirección de correo electrónico del usuario o 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, 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
- Para borrar un usuario, en el mensaje
mysql
, usa la siguiente sentencia DROP USER:DROP USER 'USER_NAME'@'HOST_NAME';
- Limpia la tabla
mysql.user
para asegurarte de que el cambio persista:FLUSH TABLES mysql.user;
Actualiza las propiedades de usuario
Para actualizar las propiedades del usuario, como el host o los privilegios, debes usar el clientemysql
. 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.
¿Qué sigue?
- Obtén más información sobre cómo funciona Cloud SQL con los usuarios.
- Lee la documentación de MySQL sobre la creación de usuarios.
- Obtén más información sobre cómo conectarse a las instancias.