【发布时间】:2019-09-28 19:56:20
【问题描述】:
我正在尝试使用 AWS Elastic Beanstalk 和断开连接的 RDS 数据库(不是 ELB 实例的一部分,以防我想将多个站点连接到数据库)通过大致遵循本指南来设置一个简单的 Wordpress 站点: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/php-hawordpress-tutorial.html.
但是,在加载 Wordpress 安装时出现以下错误:
Error establishing a database connection
到目前为止,我已尝试通过以下方式解决问题:
- 验证 RDS 和 EC2 是否在同一个 VPC 上,并附加了具有正确入站规则的相同安全组:
- 我已验证 RDS 可用,如下所示:
nrb$ nc -zv <***masked-connection-string***> 3306
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif en0
src 192.168.20.149 port 58825
dst 3.215.127.182 port 3306
rank info not available
TCP aux info available
Connection to <***masked-connection-string***> port 3306 [tcp/mysql] succeeded!
我已验证我的 EC2 可以通过 SSH 连接到 RDS 并使用
mysql命令并复制/粘贴我的 env 变量以确保没有 @littleforest 推荐的拼写错误,这已成功连接到数据库。我已更新 AWS 附带的示例 PHP 应用程序以输出我的 env 变量,以确保服务器正在读取它们。他们按照他们应该的方式输出。
我的 wp_config.php 文件看起来像教程推荐的那样:
<?php
define('DB_NAME', $_SERVER['RDS_DB_NAME']);
define('DB_USER', $_SERVER['RDS_USERNAME']);
define('DB_PASSWORD', $_SERVER['RDS_PASSWORD']);
define('DB_HOST', $_SERVER['RDS_HOSTNAME'] . ':' . $_SERVER['RDS_PORT']);
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
define('AUTH_KEY', $_SERVER['AUTH_KEY']);
define('SECURE_AUTH_KEY', $_SERVER['SECURE_AUTH_KEY']);
define('LOGGED_IN_KEY', $_SERVER['LOGGED_IN_KEY']);
define('NONCE_KEY', $_SERVER['NONCE_KEY']);
define('AUTH_SALT', $_SERVER['AUTH_SALT']);
define('SECURE_AUTH_SALT', $_SERVER['SECURE_AUTH_SALT']);
define('LOGGED_IN_SALT', $_SERVER['LOGGED_IN_SALT']);
define('NONCE_SALT', $_SERVER['NONCE_SALT']);
$table_prefix = 'wp_';
define('WP_DEBUG', false);
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
在我的 Elastic Beanstalk 的配置 > 软件中,我已经验证了这些变量:
- RDS_DB_NAME
- RDS_HOSTNAME
- RDS_PASSWORD
- RDS_PORT
- RDS_USERNAME
我知道 AWS 专家会立即发现我遗漏了一些愚蠢的东西,但这让我发疯了。
【问题讨论】:
-
您是否已通过 ssh 连接到您的 EB 服务器,并尝试通过命令行连接以确保您使用正确的 RDS_DB_NAME、RDS_USERNAME 等值?
mysql -u my_username -h my_rds_instance.cba123x.us-east-1.rds.amazonaws.com -p -
另外,我认为您可能还需要在安全组中设置正确的入站规则,允许安全组自己访问端口 3306。虽然不是 100% 确定这一点,因为我总是为我的服务器和数据库使用单独的安全组。
-
我刚刚用这些方法更新了问题。
mysql命令能够连接到 RDS,并且我验证了安全组已正确设置。
标签: php wordpress amazon-rds amazon-elastic-beanstalk