Archive
创建和管理数据库

创建和管理数据库

2024-11-26 本页面介绍了如何在 Cloud SQL 实例上创建、列出和删除 MySQL 数据库。 新创建的实例具有四个系统数据库: 如需详细了解 MySQL 数据库,请参阅 MySQL 文档。 准备工作 在完成本页面上的任务之前,必须先执行以下操作: 创建一个 Clou

Related articles

QR code for blynk-cloud.com not accepted in private server login? Cloud Retainer New Unified Operations Management Experience with VMware Aria Operations What Is a Site-to-Site VPN?

本页面介绍了如何在 Cloud SQL 实例上创建、列出和删除 MySQL 数据库。

新创建的实例具有四个系统数据库:

如需详细了解 MySQL 数据库,请参阅

MySQL 文档

准备工作

在完成本页面上的任务之前,必须先执行以下操作:

  • 创建一个 Cloud SQL 实例。如需了解详情,请参阅创建实例。

如果您计划使用 mysql 客户端创建或管理数据库,必须先执行以下操作:

  • 配置访问权限并通过 mysql 客户端连接到该实例。
    如需详细了解连接方案,请参阅外部应用连接方案。

在 Cloud SQL 实例上创建数据库

注意:数据库名称的长度上限为 64 个字符。如需详细了解此名称的其他条件,请参阅架构对象名称。

如果您在创建数据库时未指定自定义字符集和排序规则,则数据库将具有以下默认值:

  • MySQL 5.6、5.7:(使用 Google Cloud 控制台、Cloud SQL Admin API、gcloud CLI、Terraform 或 mysql 客户端创建)
    • 字符集:utf8
    • 排序规则:utf8_general_ci
  • MySQL 8.0.x 及更高版本(使用 Google Cloud 控制台创建)
    • 字符集:utf8
    • 排序规则:utf8_general_ci
  • MySQL 8.0.x 及更高版本(使用 Cloud SQL Admin API、gcloud CLI、Terraform 或 mysql 客户端创建)
    • 字符集:utf8mb4
    • 排序规则:utf8mb4_0900_ai_ci

如果您需要在创建数据库后修改其字符集或排序规则配置,请参阅更新数据库的字符集和排序规则。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 从 SQL 导航菜单中选择数据库
  4. 点击创建数据库
  5. 创建数据库对话框中,指定数据库的名称,并且可以选择性地指定字符集和排序规则。

    如需详细了解字符集和排序规则,请参阅字符集、排序规则、Unicode。

  6. 点击创建

Terraform

如需创建数据库,请使用 Terraform 资源。

应用更改

如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。

准备 Cloud Shell

  1. 启动 Cloud Shell。
  2. 设置要在其中应用 Terraform 配置的默认 Google Cloud 项目。

    您只需为每个项目运行一次以下命令,即可在任何目录中运行它。

    export GOOGLE_CLOUD_PROJECT=

    如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。

准备目录

每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。

  1. 在 Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有 .tf 扩展名,例如 main.tf。在本教程中,该文件称为 main.tf

    mkdir  && cd  && touch main.tf

  2. 如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。

    将示例代码复制到新创建的 main.tf 中。

    (可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。

  3. 查看和修改要应用到您的环境的示例参数。
  4. 保存更改。
  5. 初始化 Terraform。您只需为每个目录执行一次此操作。

    terraform init

    (可选)如需使用最新的 Google 提供程序版本,请添加 -upgrade 选项:

    terraform init -upgrade

应用更改

  1. 查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:

    terraform plan

    根据需要更正配置。

  2. 通过运行以下命令并在提示符处输入 yes 来应用 Terraform 配置:

    terraform apply

    等待 Terraform 显示“应用完成!”消息。

  3. 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。

注意:Terraform 示例通常假定您的 Google Cloud 项目中启用了所需的 API。

删除更改

如需删除更改,请执行以下操作:

  1. 如需停用删除防护,请在 Terraform 配置文件中将 deletion_protection 参数设置为 false

    deletion_protection =  "false"

  2. 运行以下命令并在提示符处输入 yes,以应用更新后的 Terraform 配置:

    terraform apply

  1. 运行以下命令并在提示符处输入 yes,以移除之前使用 Terraform 配置应用的资源:

    terraform destroy

REST v1

以下请求使用 databases:insert 方法在指定的实例上创建新数据库。

在使用任何请求数据之前,请先进行以下替换:

  • :项目 ID
  • :实例 ID
  • :Cloud SQL 实例中数据库的名称

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/v1/projects//instances//databases

请求 JSON 正文:

{
  "project": "",
  "instance": "",
  "name": ""
}

如需发送您的请求,请展开以下选项之一:

curl(Linux、macOS 或 Cloud Shell)

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

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//instances//databases"

PowerShell (Windows)

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$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//instances//databases" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:

响应

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects//instances/",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "CREATE_DATABASE",
  "name": "",
  "targetId": "",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects//operations/",
  "targetProject": ""
}

REST v1beta4

以下请求使用 databases:insert 方法在指定的实例上创建新数据库。

在使用任何请求数据之前,请先进行以下替换:

  • :项目 ID
  • :实例 ID
  • :Cloud SQL 实例中数据库的名称

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects//instances//databases

请求 JSON 正文:

{
  "project": "",
  "instance": "",
  "name": ""
}

如需发送您的请求,请展开以下选项之一:

curl(Linux、macOS 或 Cloud Shell)

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

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//instances//databases"

PowerShell (Windows)

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$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//instances//databases" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:

响应

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects//instances/",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "CREATE_DATABASE",
  "name": "",
  "targetId": "",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects//operations/",
  "targetProject": ""
}

mysql 客户端

如需了解参考信息,请参阅 MySQL 文档中的创建数据库。

如需详细了解字符集和排序规则,请参阅字符集、排序规则、Unicode。

CREATE DATABASE 
  [[CHARACTER SET charset_name][COLLATE collation_name]];

列出数据库

要列出实例上的所有数据库,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 点击左侧菜单中的数据库数据库页面列出了数据库及其排序规则类型、字符集和数据库类型。

REST v1

以下请求使用 databases:list 方法列出实例的数据库。

使用此 API 列出数据库时,您将看到控制台未显示的其他模板数据库和一个系统数据库。您不能删除或管理此系统数据库。

在使用任何请求数据之前,请先进行以下替换:

  • :项目 ID
  • :实例 ID

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/v1/projects//instances//databases

如需发送您的请求,请展开以下选项之一:

curl(Linux、macOS 或 Cloud Shell)

执行以下命令:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects//instances//databases"

PowerShell (Windows)

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects//instances//databases" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:

响应

{
  "kind": "sql#database",
  "charset": "utf8",
  "collation": "utf8_general_ci",
  "etag": "",
  "name": "sys",
  "instance": "",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects//instances//databases/sys",
  "project": ""
}

REST v1beta4

以下请求使用 databases:list 方法列出实例的数据库。

使用此 API 列出数据库时,您将看到控制台未显示的其他模板数据库和一个系统数据库。您不能删除或管理此系统数据库。

在使用任何请求数据之前,请先进行以下替换:

  • :项目 ID
  • :实例 ID

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects//instances//databases

如需发送您的请求,请展开以下选项之一:

curl(Linux、macOS 或 Cloud Shell)

执行以下命令:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects//instances//databases"

PowerShell (Windows)

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects//instances//databases" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:

响应

{
  "kind": "sql#database",
  "charset": "utf8",
  "collation": "utf8_general_ci",
  "etag": "",
  "name": "sys",
  "instance": "",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects//instances//databases/sys",
  "project": ""
}

mysql 客户端

如需了解参考信息,请参阅 MySQL 文档中的显示数据库。

SHOW DATABASES;

删除数据库

要删除 Cloud SQL 实例上的数据库,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 点击左侧菜单中的数据库
  4. 在数据库列表中,找到您要删除的数据库并点击回收站图标。
  5. 删除数据库对话框中,输入数据库的名称,然后点击删除

注意:删除数据库会移除数据库目录中的所有文件,包括数据库没有直接使用的所有文件。此类文件的示例包括 MySQL 5.6 和 MySQL 5.7 中中断的 ALTER TABLE 操作创建的 #sql-* 文件。

gcloud

如需了解参考信息,请参阅 gcloud
sql databases delete

gcloud sql databases delete  \
--instance=

注意:删除数据库会移除数据库目录中的所有文件,包括数据库没有直接使用的所有文件。此类文件的示例包括 MySQL 5.6 和 MySQL 5.7 中中断的 ALTER TABLE 操作创建的 #sql-* 文件。

REST v1

以下请求使用 databases:delete 方法删除指定数据库。

在使用任何请求数据之前,请先进行以下替换:

  • :项目 ID
  • :实例 ID
  • :Cloud SQL 实例中数据库的名称

HTTP 方法和网址:

DELETE https://sqladmin.googleapis.com/v1/projects//instances//databases/

如需发送您的请求,请展开以下选项之一:

curl(Linux、macOS 或 Cloud Shell)

执行以下命令:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects//instances//databases/"

PowerShell (Windows)

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects//instances//databases/" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:

响应

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects//instances/",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "DELETE_DATABASE",
  "name": "",
  "targetId": "",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects//operations/",
  "targetProject": ""
}

REST v1beta4

以下请求使用 databases:delete 方法删除指定数据库。

注意:删除数据库会移除数据库目录中的所有文件,包括数据库没有直接使用的所有文件。此类文件的示例包括 MySQL 5.6 和 MySQL 5.7 中中断的 ALTER TABLE 操作创建的 #sql-* 文件。

在使用任何请求数据之前,请先进行以下替换:

  • :项目 ID
  • :实例 ID
  • :Cloud SQL 实例中数据库的名称

HTTP 方法和网址:

DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects//instances//databases/

如需发送您的请求,请展开以下选项之一:

curl(Linux、macOS 或 Cloud Shell)

执行以下命令:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects//instances//databases/"

PowerShell (Windows)

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects//instances//databases/" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:

响应

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects//instances/",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "DELETE_DATABASE",
  "name": "",
  "targetId": "",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects//operations/",
  "targetProject": ""
}

mysql 客户端

如需了解参考信息,请参阅 MySQL 文档中的删除数据库。

DROP DATABASE [database_name];

注意:如果数据库的目录包含数据库没有直接使用的任何文件,则 DROP DATABASE 命令会生成错误,表明数据库目录无法删除,例如:

  • 删除数据库时出错(无法部署 ‘./database_name‘,errno:39)
  • 删除数据库时出错(无法转换 ‘./database_name‘,errno:17)

此类文件的示例包括 MySQL 5.6 和 MySQL 5.7 中中断的 ALTER TABLE 操作创建的 #sql-* 文件。如需删除这些文件并完成 DROP DATABASE 操作,请使用以下任一方法重复此操作:控制台、gcloud 命令或 REST API。

后续步骤


自行试用

如果您是 Google Cloud 新手,请创建一个账号来评估 Cloud SQL 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费试用 Cloud SQL