创建并连接到 MySQL 数据库实例 - Amazon Relational Database Service

创建并连接到 MySQL 数据库实例

本教程创建一个 EC2 实例和一个 RDS for MySQL 数据库实例。本教程向您展示如何使用标准 MySQL 客户端从 EC2 实例访问数据库实例。作为最佳实践,本教程在虚拟私有云(VPC)中创建了私有数据库实例。在大多数情况下,同一 VPC 中的其他资源(例如 EC2 实例)可以访问数据库实例,但 VPC 之外的资源无法访问该实例。

完成本教程后,VPC 的每个可用区中都有一个公有和私有子网。在一个可用区中,EC2 实例在公有子网中,数据库实例在私有子网中。

重要

创建 AWS 账户并不会收费;但是,在完成本教程过程中使用 AWS 资源可能会产生费用。完成本教程后,如果不再需要这些资源,可以将其删除。

下图显示了教程完成时的配置。

EC2 实例和 MySQL 数据库实例。

本教程可帮助您通过以下方法之一创建资源:

  1. 使用 AWS Management Console ‑ 步骤 2:创建 MySQL 数据库实例步骤 1:创建 EC2 实例

  2. 使用 AWS CloudFormation 创建数据库实例和 EC2 实例 - (可选)使用 AWS CloudFormation 创建 VPC、EC2 实例和 MySQL 实例

第一种方法使用轻松创建,通过 AWS Management Console 创建私有 MySQL 数据库实例。您可以仅指定数据库引擎类型、数据库实例大小和数据库实例标识符。轻松创建为其他配置选项使用默认设置。

如果改用标准创建,则在创建数据库实例时可以指定更多配置选项。这些选项包括可用性、安全性、备份和维护设置。要创建公有数据库实例,必须使用标准创建。有关信息,请参阅创建 Amazon RDS 数据库实例

先决条件

在开始之前,请完成以下各节中的步骤:

步骤 1:创建 EC2 实例

创建将用于连接到数据库的 Amazon EC2 实例。

创建 EC2 实例
  1. 登录到 AWS Management Console 并打开 Amazon EC2 控制台(https://console.aws.amazon.com/ec2/)。

  2. 在 AWS Management Console的右上角,选择要在其中创建 EC2 实例的 AWS 区域。

  3. 选择 EC2 控制面板,然后选择启动实例,如下图所示。

    EC2 控制面板。

    启动实例页面打开。

  4. 启动实例页面上选择以下设置。

    1. Name and tags(名称和标签)下,对于 Name(名称),输入 ec2-database-connect

    2. 应用程序和操作系统映像(Amazon 机器映像)下,选择 Amazon Linux,然后选择 Amazon Linux 2023 AMI。对于其他选项,保留默认选择。

      选择 Amazon 机器映像。
    3. Instance type(实例类型)下,选择 t2.micro

    4. Key pair (login) [密钥对(登录)] 下,选择 Key pair name(密钥对名称)以使用现有密钥对。要为 Amazon EC2 实例创建新的密钥对,请选择 Create new key pair(创建新的密钥对),然后使用 Create key pair(创建密钥对)窗口来创建它。

      有关创建新的密钥对的更多信息,请参阅《Amazon EC2 用户指南》中的创建密钥对

    5. 对于网络设置中的允许 SSH 流量,选择 EC2 实例的 SSH 连接来源。

      如果显示的 IP 地址对于 SSH 连接是正确的,您可以选择 My IP(我的 IP)。否则,您可以确定要用来通过 Secure Shell(SSH)连接到 VPC 中的 EC2 实例的 IP 地址。要确定您的公有 IP 地址,请在新的浏览器窗口或标签页中,使用 https://checkip.amazonaws.com 上的服务。IP 地址的示例为 192.0.2.1/32。

      在许多情况下,您可能通过互联网服务提供商(ISP)进行连接,或者在不使用静态 IP 地址的情况下从防火墙之后进行连接。如果是这样,请确保确定客户端计算机使用的 IP 地址范围。

      警告

      如果您使用 0.0.0.0/0 进行 SSH 访问,则所有 IP 地址可能能够使用 SSH 访问您的公有 EC2 实例。在测试环境下短时间内,此方法尚可接受,但它对于生产环境并不安全。在生产环境中,将仅向特定 IP 地址或地址范围授权使用 SSH 访问您的 EC2 实例。

      下图显示了网络设置部分的示例。

      EC2 实例的网络设置。
    6. 对于其余部分保留默认值。

    7. 查看摘要面板中您的 EC2 实例配置的摘要,当您准备好后,选择启动实例

  5. 启动状态页面上,记下新 EC2 实例的标识符,例如:i-1234567890abcdef0

    启动状态页面上的 EC2 实例标识符。
  6. 选择 EC2 实例标识符以打开 EC2 实例列表,然后选择您的 EC2 实例。

  7. 详细信息选项卡中,记下使用 SSH 进行连接时所需的以下值:

    1. 实例摘要中,记下公有 IPv4 DNS 的值。

      “实例”页面的“详细信息”选项卡上的 EC2 公有 DNS 名称。
    2. 实例详细信息中,记下密钥对名称的值。

      “实例”页面的“详细信息”选项卡上的 EC2 密钥对名称。
  8. 等待 EC2 实例的实例状态变为正在运行,然后继续。

步骤 2:创建 MySQL 数据库实例

Amazon RDS 的基本构建基块是数据库实例。这是您将要在其中运行 MySQL 数据库的环境。

在该示例中,您使用轻松创建创建一个数据库实例,它运行带有 db.t3.micro 数据库实例类的 MySQL 数据库引擎。

在启用“Easy create (轻松创建)”的情况下创建 MySQL 数据库实例
  1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在 Amazon RDS 控制台的右上角,选择以前用于 EC2 实例的 AWS 区域。

  3. 在导航窗格中,选择 Databases (数据库)

  4. 选择 Create database (创建数据库),并确保已选择 Easy create (轻松创建)

    “轻松创建”选项。
  5. 配置中,选择 MySQL

  6. 对于数据库实例大小,选择免费套餐

  7. 对于 DB instance identifier(数据库实例标识符),输入 database-test1

  8. 对于主用户名,输入主用户的名称,或者保留原定设置名称。

    创建数据库页面应类似于以下图像。

    “创建数据库”页面。
  9. 要为数据库实例使用自动生成的主密码,请选择自动生成密码

    要输入主密码,请确保清除自动生成密码,然后在主密码确认密码中输入相同的密码。

  10. 要设置与您之前创建的 EC2 实例的连接,请打开设置 EC2 连接 - 可选

    选择连接到 EC2 计算资源。选择您之前创建的 EC2 实例。

    设置 EC2 连接选项。
  11. (可选)打开查看轻松创建的默认设置

    轻松创建默认设置。

    您可以检查在启用 Easy create (轻松创建) 时使用的默认设置。可在创建数据库后编辑列显示在创建数据库后可以更改的选项。

    • 如果该列中的某个设置为,而您想要不同的设置,则可以使用标准创建来创建数据库实例。

    • 如果某个设置在该列中为,您可以使用标准创建来创建数据库实例,也可以在创建后修改数据库实例以更改该设置。

  12. 选择创建数据库

    要查看数据库实例的主用户名和密码,请选择查看凭证详细信息

    您可以使用显示的用户名和密码,以主用户身份连接到数据库实例。

    重要

    您无法再次查看主用户密码。如果您不记录它,您可能需要更改它。

    如果需要在数据库实例可用后更改主用户密码,则可以修改数据库实例以执行此操作。有关修改 数据库实例的更多信息,请参阅 修改 Amazon RDS 数据库实例

  13. 数据库列表中,选择新的 MySQL 数据库实例的名称以显示其详细信息。

    数据库实例具有正在创建状态,直到此实例就绪可供使用。

    数据库实例详细信息。

    当状态变为 Available(可用)时,您便可以连接到该数据库实例。根据数据库实例类和存储量,新实例可能需要等待 20 分钟时间才可用。

(可选)使用 AWS CloudFormation 创建 VPC、EC2 实例和 MySQL 实例

您可以使用 AWS CloudFormation 通过将基础设施视为代码来配置 AWS 资源,而无需使用控制台创建 VPC、EC2 实例和 MySQL 实例。为了帮助您将 AWS 资源组织成更小、更易于管理的单元,您可以使用 AWS CloudFormation 嵌套堆栈功能。有关更多信息,请参阅在 AWS CloudFormation 控制台上创建堆栈使用嵌套堆栈

重要

AWS CloudFormation 是免费的,但 CloudFormation 创建的资源是实时的。您需要为这些资源支付标准使用费,直到您终止使用它们为止。总费用将应该最少的。有关如何最大限度降低费用的信息,请转至 AWS Free Tier

要使用 AWS CloudFormation 控制台创建资源,请执行以下步骤:

  • 步骤 1:下载 CloudFormation 模板

  • 步骤 2:使用 CloudFormation 配置资源

下载 CloudFormation 模板

CloudFormation 模板是一个 JSON 或 YAML 文本文件,其中包含有关您希望在堆栈中创建的资源的配置信息。此模板还为您创建 VPC 和堡垒主机以及 RDS 实例。

要下载模板文件,请打开以下链接 MySQL CloudFormation 模板

在 Github 页面中,单击 Download raw file 按钮以保存模板 YAML 文件。

使用 CloudFormation 配置资源

注意

在开始此过程之前,请确保您的 AWS 账户中具有 EC2 实例密钥对。有关更多信息,请参阅 Amazon EC2 密钥对和 Linux 实例

使用 AWS CloudFormation 模板时,必须选择正确的参数以确保正确创建资源。按以下步骤操作:

  1. 登录到 AWS Management Console 并打开 AWS CloudFormation 控制台 https://console.aws.amazon.com/cloudformation

  2. 选择创建堆栈

  3. 在“指定模板”部分,选择从您的计算机上传模板文件,然后选择下一步

  4. 指定堆栈详细信息页面上,设置以下参数:

    1. 堆栈名称设置为 MySQLTestStack

    2. 参数下,通过选择三个可用区来设置可用区

    3. Linux 堡垒主机配置下,在密钥名称中,选择用于登录您的 EC2 实例的密钥对。

    4. Linux 堡垒主机配置设置中,将允许的 IP 范围设置为您的 IP 地址。要使用 Secure Shell(SSH)连接到 VPC 中的 EC2 实例,请通过 https://checkip.amazonaws.com 上的服务确定您的公有 IP 地址。IP 地址的示例为 192.0.2.1/32。

      警告

      如果您使用 0.0.0.0/0 进行 SSH 访问,则所有 IP 地址可能能够使用 SSH 访问您的公有 EC2 实例。在测试环境下短时间内,此方法尚可接受,但它对于生产环境并不安全。在生产环境中,将仅向特定 IP 地址或地址范围授权使用 SSH 访问您的 EC2 实例。

    5. 数据库常规配置下,将数据库实例类设置为 db.t3.micro

    6. 数据库名称设置为 database-test1

    7. 数据库主用户名中,输入主用户的名称。

    8. 在本教程中,将使用 Secrets Manager 管理数据库主用户密码设置为 false

    9. 数据库密码中,设置所选密码。请记住此密码以便在教程中的后续步骤中使用。

    10. 数据库存储配置下,将数据库存储类型设置为 gp2

    11. 数据库监控配置下,将启用 RDS 性能详情设置为 false。

    12. 将所有其他设置保留为默认值。单击下一步继续。

  5. 配置堆栈选项页面中,保留所有默认选项。单击下一步继续。

  6. 查看堆栈页面中,在检查数据库和 Linux 堡垒主机选项后,选择提交

堆栈创建过程完成后,查看名为 BastionStackRDSNS 的堆栈,记下连接到数据库所需的信息。有关更多信息,请参阅在 AWS Management Console 上查看 AWS CloudFormation 堆栈数据和资源

步骤 3:连接到 MySQL 数据库实例

您可以使用任何标准 SQL 客户端应用程序连接到数据库实例。在该示例中,您使用 mysql 命令行客户端连接到 MySQL 数据库实例。

连接到 MySQL 数据库实例
  1. 找到您的数据库实例的端点(DNS 名称)和端口号。

    1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

    2. 在 Amazon RDS 控制台的右上角,选择数据库实例的 AWS 区域。

    3. 在导航窗格中,选择 Databases(数据库)。

    4. 选择 MySQL 数据库实例名称以显示其详细信息。

    5. 连接和安全性选项卡上,复制端点。另请注意端口号。您需要端点和端口号才能连接到数据库实例。

      连接到 MySQL 数据库实例。
  2. 按照《Amazon EC2 用户指南》中的连接到 Linux 实例中的步骤操作,连接到您之前创建的 EC2 实例。

    我们建议您使用 SSH 连接到 EC2 实例。如果 SSH 客户端实用程序安装在 Windows、Linux 或 Mac 上,则可以使用以下命令格式连接到该实例:

    ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name

    例如,假设在 Linux 上 ec2-database-connect-key-pair.pem 存储在 /dir1 中,而 EC2 实例的公有 IPv4 DNS 为 ec2-12-345-678-90.compute-1.amazonaws.com。SSH 命令将如下所示:

    ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
  3. 通过更新 EC2 实例上的软件,获取最新的错误修复和安全更新。要执行此操作,请使用以下命令。

    注意

    -y 选项安装更新时不提示确认。要在安装前检查更新,请忽略该选项。

    sudo dnf update -y
  4. 要在 Amazon Linux 2023 上安装 MariaDB 中的 mysql 命令行客户端,请运行以下命令:

    sudo dnf install mariadb105
  5. 连接到 MySQL 数据库实例。例如,输入以下命令。此操作可让您使用 MySQL 客户端连接到 MySQL 数据库实例。

    endpoint 替换为数据库实例端点(DNS 名称),并替换用于 admin 的主用户名。提示输入密码时,提供所使用的主密码。

    mysql -h endpoint -P 3306 -u admin -p

    在输入用户的密码后,您应该会看到类似于以下内容的输出。

    Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 3082 Server version: 8.0.28 Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>

    有关连接到数据库实例的更多信息,请参阅连接到运行 MySQL 数据库引擎的数据库实例。如果您无法连接到数据库实例,请参阅 无法连接到 Amazon RDS 数据库实例

    出于安全考虑,最佳做法是使用加密连接。仅当客户端和服务器位于同一 VPC 中,并且网络受信任时,才会使用未加密的 MySQL 连接。有关使用加密连接的信息,请参阅 从 MySQL 命令行客户端使用 SSL/TLS(加密)进行连接

  6. 运行 SQL 命令。

    例如,以下 SQL 命令显示了当前日期和时间:

    SELECT CURRENT_TIMESTAMP;

步骤 4:删除 EC2 实例和数据库实例

在连接到并浏览您创建的示例 EC2 实例和数据库实例之后,删除它们,以便不再为其付费。

如果您使用 AWS CloudFormation 创建了资源,请跳过此步骤,转至下一步。

删除 EC2 实例
  1. 登录到 AWS Management Console 并打开 Amazon EC2 控制台(https://console.aws.amazon.com/ec2/)。

  2. 在导航窗格中,选择实例

  3. 选择 EC2 实例,然后依次选择实例状态、终止实例

  4. 当系统提示您确认时,选择终止

有关删除 EC2 实例的更多信息,请参阅《Amazon EC2 用户指南》中的终止实例

删除无最终数据库快照的数据库实例
  1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

  3. 选择要删除的数据库实例。

  4. 对于 Actions,选择 Delete

  5. 清除是否创建最终快照?保留自动备份

  6. 完成确认并选择删除

(可选)删除使用 CloudFormation 创建的 EC2 实例和数据库实例

如果您使用 AWS CloudFormation 创建了资源,请在连接并浏览 EC2 实例和数据库实例示例之后,删除 CloudFormation 堆栈,以便不再为其付费。

删除 CloudFormation 资源
  1. 打开 AWS CloudFormation 控制台。

  2. 在 CloudFormationconsole 的堆栈页面上,选择根堆栈(名称不是 VPCStack、BastionStack 或 RDSNS 的堆栈)。

  3. 选择删除

  4. 提示进行确认时,选择删除堆栈

有关如何删除 CloudFormation 中堆栈的信息,请参阅《AWS CloudFormation 用户指南》中的在 AWS CloudFormation 控制台上删除堆栈

(可选)将您的数据库实例连接到 Lambda 函数

您也可以将您的 RDS for MySQL 数据库实例连接到 Lambda 无服务器计算资源。Lambda 函数支持在不预调配或管理基础设施的情况下运行代码。Lambda 函数还支持自动响应任何规模的代码执行请求,从每天十几个事件到每秒数百个事件。有关更多信息,请参阅 自动连接 Lambda 函数和数据库实例