使用 Amazon RDS 部署 Drupal

教程

模块 3:配置 RDS 数据库

配置 RDS 数据库以允许访问特定实体

概览

到目前为止,您已创建 RDS 数据库和 EC2 实例。在此模块中,我们将配置 RDS 数据库以允许访问特定实体。

数据库安全方法

有几种方法可以保护您的数据库免遭未经授权的访问。您将在本模块中学习到其中两种方法。它们是:

  • 网络安全性:通过拒绝来自未经授权的 IP 地址的流量,实现对数据库实例的访问限制。
  • 密码验证和授权:通过要求用户名和密码来实现对数据库的访问限制。

以下步骤将引导您配置这两种方法。

 所需时间

15 分钟

 使用的服务

实施

第 1 步:允许您的 EC2 实例访问 RDS 数据库

在上一个模块中,您创建了安全组规则,允许 HTTP 和 HTTPS 流量访问您的 Drupal EC2 实例。此处适用同样的原则。但是这一次您希望允许某些流量从 EC2 实例访问 RDS 数据库。

 

首先,您需要修改 RDS 数据库的安全组,允许从 EC2 实例进行网络访问。

要进行配置,请转到 AWS 管理控制台中的 RDS 数据库。单击您在本实验先前的模块中创建的 RDS 数据库。

找到连接性和安全性选项卡,然后单击 VPC 安全组中列出的安全组。

您会在控制台中转到为数据库配置的安全组。单击入站选项卡,然后单击编辑按钮更改安全组规则。

默认安全组设有一个规则,该规则允许来自默认安全组中其他实例的所有入站流量。但是,由于您的 Drupal EC2 实例不在该安全组中,因此它无权访问 RDS 数据库。

如果选择 MySQL 数据库引擎,请将类型属性更改为 MYSQL/Aurora;如果选择 PostgreSQL 数据库引擎,请将其更改为 PostgreSQL。更改类型,会将协议和端口范围更新为适当的值。

然后,删除为规则配置的当前安全组值,然后键入“drupal”。控制台将显示已配置的可用安全组。

单击您用于 EC2 实例的“Drupal EC2 SG”安全组。

单击后,系统会自动填写安全组 ID。该规则将允许数据库访问所有已配置该安全组的 EC2 实例。

注意:右侧所有图示内容适用于 PostgreSQL 配置。如果您选择 MySQL 作为数据库引擎,您将在安全组规则中看到不同的端口范围和类型。默认设置是正确的,请勿更改这些设置。

完成后,单击蓝色的保存按钮保存您的更改。

第 2 步:连接到您的 EC2 实例

现在您的 EC2 实例可以访问 RDS 数据库,您将使用 AWS 会话管理器访问 EC2 实例并运行一些配置命令。

在 AWS 管理控制台中,转到 EC2 实例页面。您应该会看到自己为安装 Drupal 创建的 EC2 实例。选择实例,并从右上角的 “操作” 菜单中选择 “连接”。

在接下来的 “连接至实例” 屏幕中选择 “会话管理器”,然后单击 “连接” 按钮。

当您在新的浏览器选项卡中看到以下终端时,表明您已成功连接:

第 3 步:创建数据库用户 (PostgreSQL)

您应会看到一个连接到您的 EC2 实例的活动会话管理器会话。接下来,您将连接到 PostgreSQL 数据库并为 Drupal 应用程序创建一个用户。

如果您选择 MySQL 作为数据库引擎,请跳至第 4 步,了解如何在 MySQL 中创建数据库用户。

首先,在终端中运行以下命令来安装 PostgreSQL 客户端以便与数据库进行交互。

sudo dnf install -y postgresql15

接下来,在 RDS 控制台中找到 PostgreSQL 数据库的主机名。在 RDS 数据库的详细信息中,主机名在连接性和安全性部分中显示为端点。

在终端中输入以下命令,为 PostgreSQL 主机设置环境变量。请确保将“<your-endpoint>”替换为您的 RDS 实例的主机名。

export PGHOST=<your-endpoint>

接下来,在终端中运行以下命令以连接到 PostgreSQL 数据库。将“<user>”替换为您在创建 RDS 数据库时配置的主用户名。

psql --user=<user> --password drupal

输入命令后,psql 客户端会提示您输入密码。请输入您在创建数据库时配置的主密码。

如果连接成功,终端应显示已连接到 PostgreSQL 数据库,如下图所示。

最后,为您的 Drupal 应用程序创建一个数据库用户,并授予其访问“drupal”数据库的权限。

在终端中运行以下命令:

CREATE USER drupaluser WITH ENCRYPTED PASSWORD 'drupalpass';

GRANT ALL PRIVILEGES ON DATABASE drupal TO drupaluser;

GRANT CREATE ON SCHEMA public TO drupaluser;

ALTER DATABASE "drupal" SET bytea_output = 'escape';

\q

请使用强度更高的密码来保护数据库,不要使用“drupalpass”这样的简单密码。

请记下您配置的用户名和密码,在下一个模块中设置 Drupal 安装时将需要这些信息。

在本模块中,您学习了如何为 RDS 数据库配置网络和密码安全性。现在,您的 EC2 实例可以通过网络访问 RDS 数据库。此外,您创建了一个数据库用户,供您的 Drupal 应用程序使用。

在下一个模块中,您将了解如何配置 EC2 实例以运行 Drupal 应用程序。

第 4 步:创建数据库用户 (MySQL)

您应会看到一个连接到您的 EC2 实例的活动会话管理器会话。接下来,您将连接到 MySQL 数据库并为 Drupal 应用程序创建一个用户。

如果您选择 PostgreSQL 作为数据库引擎,则可以跳过此步骤。您应该已在第 3 步为 PostgreSQL 数据库创建了一个用户。

首先,在终端中运行以下命令来安装 MySQL 客户端以便与数据库进行交互。

sudo dnf install -y mariadb105

接下来,请在 AWS 管理控制台中找到 RDS 数据库的主机名。在 RDS 数据库的详细信息中,主机名在连接性和安全性部分中显示为端点。

在终端中输入以下命令,为 MySQL 主机设置环境变量。请确保将“<your-endpoint>”替换为您的 RDS 实例的主机名。

export MYSQL_HOST=<your-endpoint>

接下来,在终端中运行以下命令以连接到 MySQL 数据库。将“<user>”和“<password>”替换为您在创建 RDS 数据库时配置的主用户名和密码。

mysql --user=<user> --password drupal

如果连接成功,终端应显示已连接到 MySQL 数据库,如下图所示。

最后,为您的 Drupal 应用程序创建一个数据库用户,并授予其访问“drupal”数据库的权限。

在终端中运行以下命令:

CREATE USER 'drupal' IDENTIFIED BY 'drupal-pass';
GRANT ALL PRIVILEGES ON drupal.* TO drupal;FLUSH PRIVILEGES;
Exit

请使用强度更高的密码来保护数据库,不要使用“drupal-pass”这样的简单密码。

请记下您配置的用户名和密码,在下一个模块中设置 Drupal 安装时将需要这些信息。

在本模块中,您学习了如何为 RDS 数据库配置网络和密码安全性。现在,您的 EC2 实例可以通过网络访问 RDS 数据库。此外,您创建了一个数据库用户,供您的 Drupal 应用程序使用。

在下一个模块中,您将了解如何配置 EC2 实例以运行 Drupal 应用程序。

此页内容对您是否有帮助?

在 EC2 上配置 Drupal