【发布时间】:2019-03-08 16:53:10
【问题描述】:
我正在尝试使用 CodeIgniter PHP 框架版本 3 从 Heroku 连接到亚马逊 RDS MySQL。我按照Heroku documentation about Amazon RDS 中列出的所有步骤操作,但不知道我做错了什么?
这是我的 CodeIgniter 数据库设置:
$db['rds'] = array(
'dsn' => '',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE,
'port' => 3306,
'encrypt' => [
'ssl_ca' => APPPATH."../.config/rds-combined-ca-bundle.pem",
'ssl_verify' => TRUE
]
);
$db['rds']['hostname'] = getenv('RDS_DATABASE_HOSTNAME');
$db['rds']['username'] = getenv('RDS_DATABASE_USERNAME');
$db['rds']['password'] = getenv('RDS_DATABASE_PASSWORD');
$db['rds']['database'] = getenv('RDS_DATABASE_DBNAME');
但我不断收到此错误:
mysqli::real_connect(): (HY000/2002): Connection timed out /app/vendor/codeigniter/framework/system/database/drivers/mysqli/mysqli_driver.php 201
这是我检查的内容:
- 我检查了 RDS 安全组和 CIDR/IP - 出站 0.0.0.0/0 在那里
- 我添加了一个单独的 MySQL 用户,具有 GRANT 权限 SELECT、UPDATE、INSERT、DELETE 和 REQUIRE SSL
- 将合并后的证书文件添加到项目根目录
.config/rds-combined-ca-bundle.pem并部署在Heroku上 - 在本地机器上同样的代码可以正常工作
- 已尝试重启 RDS 实例
如果某些设置有误,我应该去哪里查看?
【问题讨论】:
标签: php mysql amazon-web-services codeigniter heroku