En esta página se explica cómo crear, enumerar y eliminar bases de datos de MySQL en una instancia de Cloud SQL.
Una instancia recién creada tiene cuatro bases de datos del sistema:
information_schema : proporciona acceso a los metadatos de la base de datos, información sobre el servidor MySQL.
mysql : el esquema del sistema. Contiene tablas que almacenan la información que necesita el servidor MySQL mientras se ejecuta.
performance_schema : una función para monitorizar la ejecución del servidor MySQL a nivel bajo.
sys : contiene un conjunto de objetos que ayuda a los administradores de bases de datos y a los desarrolladores a interpretar los datos recogidos por el esquema de rendimiento.
Para obtener más información sobre las bases de datos de MySQL, consulta la
documentación de MySQL .
Antes de empezar
Para efectuar las tareas indicadas en esta página, debes haber hecho antes lo siguiente:
Has creado una instancia de Cloud SQL. Para obtener más información, consulta Crear instancias .
Si tienes previsto utilizar el cliente mysql para crear o administrar las bases de datos, debes haber hecho antes lo siguiente:
Crear una base de datos en la instancia de Cloud SQL
Nota: La longitud máxima del nombre de la base de datos es de 64 caracteres.
Para obtener más información sobre otros criterios de este nombre, consulta Nombres de objetos de esquema .
Si no especifica un conjunto de caracteres y una ordenación personalizados al crear la base de datos, esta tendrá los siguientes valores predeterminados:
MySQL 5.6 y 5.7: (creadas con la consola de Google Cloud , la API Cloud SQL Admin, la CLI de gcloud , Terraform o el cliente de MySQL)
Conjunto de caracteres: utf8
Ordenación: utf8_general_ci
MySQL 8.0.x y versiones posteriores (creadas con la consola Google Cloud )
Conjunto de caracteres: utf8
Ordenación: utf8_general_ci
MySQL 8.0.x y versiones posteriores (creadas con la API Cloud SQL Admin, la CLI de gcloud , Terraform o el cliente de MySQL)
Conjunto de caracteres: utf8mb4
Ordenación: utf8mb4_0900_ai_ci
Si necesitas modificar la configuración del conjunto de caracteres o de la ordenación de tu base de datos después de crearla, consulta Actualizar el conjunto de caracteres y la ordenación de una base de datos .
Consola
En la Google Cloud consola, ve a la página Instancias de Cloud SQL .
Ir a Instancias de Cloud SQL
Para abrir la página Vista general de una instancia, haz clic en su nombre.
En el menú de navegación de SQL, selecciona Bases de datos .
Haz clic en Crear base de datos .
En el cuadro de diálogo Crear una base de datos , especifica el nombre de la base de datos y, si quieres, el conjunto de caracteres y la recopilación.
Para obtener más información sobre los conjuntos de caracteres y las ordenaciones, consulta Conjuntos de caracteres, ordenaciones y Unicode .
Haz clic en Crear .
Para crear una base de datos, usa un recurso de Terraform .
Aplica los cambios
Para aplicar la configuración de Terraform en un Google Cloud proyecto, sigue los pasos que se indican en las siguientes secciones.
Preparar Cloud Shell
Abre Cloud Shell .
Define el Google Cloud proyecto
predeterminado en el que quieras aplicar tus configuraciones de Terraform.
Solo tienes que ejecutar este comando una vez por proyecto y puedes 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 ).
En Cloud Shell , crea un directorio y un archivo nuevo en él. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, el archivo se denomina main.tf.
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
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.
Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
Guarda los cambios.
Inicializa Terraform. Solo tienes que hacerlo una vez por cada 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
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.
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!".
Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para comprobar que Terraform los ha creado o actualizado.
Nota: Los ejemplos de Terraform suelen presuponer que las APIs necesarias están habilitadas en tu proyecto. Google Cloud
Eliminar los cambios
Para eliminar los cambios, sigue estos pasos:
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"
Aplica la configuración de Terraform actualizada ejecutando el siguiente comando e introduciendo yes en la petición:
terraform apply
Para quitar los recursos que hayas aplicado anteriormente con tu configuración de Terraform, ejecuta el siguiente comando e introduce yes cuando se te pida:
terraform destroy
REST v1
En la siguiente solicitud se usa el método databases:insert para crear una base de datos en la instancia especificada.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
project-id : el ID del proyecto
instance-id : el ID de instancia.
database-name : nombre de una base de datos de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases
Cuerpo JSON de la solicitud:
{
"project": "project-id ",
"instance": "instance-id ",
"name": "database-name "
}
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases"
PowerShell (Windows)
Nota:
El siguiente comando presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando
gcloud init
o
gcloud auth login
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "CREATE_DATABASE",
"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 siguiente solicitud se usa el método databases:insert para crear una base de datos en la instancia especificada.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
project-id : el ID del proyecto
instance-id : el ID de instancia.
database-name : nombre de una base de datos de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases
Cuerpo JSON de la solicitud:
{
"project": "project-id ",
"instance": "instance-id ",
"name": "database-name "
}
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases"
PowerShell (Windows)
Nota:
El siguiente comando presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando
gcloud init
o
gcloud auth login
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "CREATE_DATABASE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
Cliente de MySQL
Para obtener información de referencia, consulta CREATE DATABASE en la documentación de MySQL.
Para obtener más información sobre los conjuntos de caracteres y las ordenaciones, consulta Conjuntos de caracteres, ordenaciones y Unicode .
CREATE DATABASE database_name
[[ CHARACTER SET charset_name ][ COLLATE collation_name ]];
Mostrar tus bases de datos
Para mostrar una lista con todas las bases de datos en una instancia, efectúa los pasos siguientes:
Consola
En la Google Cloud consola, ve a la página Instancias de Cloud SQL .
Ir a Instancias de Cloud SQL
Para abrir la página Vista general de una instancia, haz clic en su nombre.
En el menú de la izquierda, haz clic en Bases de datos . En la página Bases de datos se muestran las bases de datos junto con su tipo de ordenación, su conjunto de caracteres y su tipo.
gcloud
Para obtener información de referencia, consulta gcloud
sql databases list .
gcloud sql databases list \
--instance= INSTANCE_NAME
REST v1
La siguiente solicitud usa el método databases:list para enumerar las bases de datos de una instancia.
Cuando generes la lista de bases de datos mediante la API, verás otras bases de datos de plantilla y una base de datos del sistema que la consola no muestra. No puedes eliminar ni administrar la base de datos del sistema.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
project-id : el ID del proyecto
instance-id : el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Ejecuta el comando siguiente:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases"
PowerShell (Windows)
Nota:
El siguiente comando presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando
gcloud init
o
gcloud auth login
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Ejecuta el comando siguiente:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{
"kind": "sql#database",
"charset": "utf8",
"collation": "utf8_general_ci",
"etag": "etag ",
"name": "sys",
"instance": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases/sys",
"project": "project-id "
}
Nota: La API databases.list solo admite cargas útiles de respuesta que incluyan hasta 4 MB de texto.
Si ejecutas una solicitud de lista de bases de datos en una instancia grande, es posible que recibas un error. Si esto ocurre, te recomendamos que ejecutes la solicitud directamente desde la instancia para obtener la lista de bases de datos.
REST v1beta4
La siguiente solicitud usa el método databases:list para enumerar las bases de datos de una instancia.
Cuando generes la lista de bases de datos mediante la API, verás otras bases de datos de plantilla y una base de datos del sistema que la consola no muestra. No puedes eliminar ni administrar la base de datos del sistema.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
project-id : el ID del proyecto
instance-id : el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Ejecuta el comando siguiente:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases"
PowerShell (Windows)
Nota:
El siguiente comando presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando
gcloud init
o
gcloud auth login
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Ejecuta el comando siguiente:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{
"kind": "sql#database",
"charset": "utf8",
"collation": "utf8_general_ci",
"etag": "etag ",
"name": "sys",
"instance": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases/sys",
"project": "project-id "
}
Nota: La API databases.list solo admite cargas útiles de respuesta que incluyan hasta 4 MB de texto.
Si ejecutas una solicitud de lista de bases de datos en una instancia grande, es posible que recibas un error. Si esto ocurre, te recomendamos que ejecutes la solicitud directamente desde la instancia para obtener la lista de bases de datos.
Cliente mysql
Para obtener información de referencia, consulta SHOW DATABASES en la documentación de MySQL.
SHOW DATABASES ;
Eliminar una base de datos
Para eliminar una base de datos de la instancia de Cloud SQL, efectúa los pasos siguientes:
Consola
En la Google Cloud consola, ve a la página Instancias de Cloud SQL .
Ir a Instancias de Cloud SQL
Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
En el menú de la izquierda, haz clic en Bases de datos .
En la lista de bases de datos, busca la base de datos que quieres eliminar y haz clic en el icono de papelera.
En el cuadro de diálogo Eliminar base de datos , introduce el nombre de la base de datos y, a continuación, haz clic en Eliminar .
Nota: Si eliminas una base de datos, se eliminarán todos los archivos del directorio de la base de datos, incluidos los que no utilice directamente la base de datos. Por ejemplo, los archivos #sql-* creados a partir de operaciones ALTER TABLE interrumpidas en MySQL 5.6 y MySQL 5.7.
gcloud
Para obtener información de referencia, consulta gcloud
sql databases delete .
gcloud sql databases delete DATABASE_NAME \
--instance= INSTANCE_NAME
Nota: Si eliminas una base de datos, se eliminarán todos los archivos del directorio de la base de datos, incluidos los que no utilice directamente la base de datos. Por ejemplo, los archivos #sql-* creados a partir de operaciones ALTER TABLE interrumpidas en MySQL 5.6 y MySQL 5.7.
REST v1
La siguiente solicitud usa el método
databases:delete
para eliminar la base de datos especificada.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
project-id : el ID del proyecto
instance-id : el ID de instancia.
database-name : nombre de una base de datos de la instancia de Cloud SQL
Método HTTP y URL:
DELETE https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases/database-name
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Ejecuta el comando siguiente:
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases/database-name "
PowerShell (Windows)
Nota:
El siguiente comando presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando
gcloud init
o
gcloud auth login
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Ejecuta el comando siguiente:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method DELETE ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases/database-name " | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "DELETE_DATABASE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
REST v1beta4
La siguiente solicitud usa el método
databases:delete
para eliminar la base de datos especificada.
Nota: Si eliminas una base de datos, se eliminarán todos los archivos del directorio de la base de datos,
incluidos los archivos que no utilice directamente la base de datos. Algunos ejemplos de este tipo de archivos son los
#sql-* creados a partir de operaciones ALTER TABLE interrumpidas en
MySQL 5.6 y MySQL 5.7.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
project-id : el ID del proyecto
instance-id : el ID de instancia.
database-name : nombre de una base de datos de la instancia de Cloud SQL
Método HTTP y URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases/database-name
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Ejecuta el comando siguiente:
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases/database-name "
PowerShell (Windows)
Nota:
El siguiente comando presupone que has iniciado sesión en la CLI de gcloud con tu cuenta de usuario ejecutando
gcloud init
o
gcloud auth login
.
Para comprobar la cuenta activa, ejecuta el comando
gcloud auth list .
Ejecuta el comando siguiente:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method DELETE ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases/database-name " | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "DELETE_DATABASE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
Cliente de MySQL
Para obtener información de referencia, consulta DROP DATABASE
en la documentación de MySQL.
DROP DATABASE [ database_name ];
Nota: Si el directorio de la base de datos contiene archivos que no utiliza directamente la base de datos, el comando DROP DATABASE generará errores
que indicarán que no se ha podido eliminar el directorio de la base de datos, como:
Error al eliminar la base de datos (no se puede eliminar el directorio './database_name ', errno: 39)
Error al eliminar la base de datos (no se puede eliminar el directorio './database_name ', errno: 17)
Por ejemplo, los archivos #sql-* creados a partir de operaciones ALTER TABLE interrumpidas en MySQL 5.6 y MySQL 5.7. Para eliminar estos archivos y completar la operación DROP DATABASE, repite la operación con uno de los otros métodos: la consola, el comando gcloud o la llamada a la API REST.
Siguientes pasos