【问题标题】:Connecting Heroku Lumen App to Amazon RDS MySQL 5.7.19将 Heroku Lumen 应用程序连接到 Amazon RDS MySQL 5.7.19
【发布时间】:2018-06-03 11:14:57
【问题描述】:

按照 Heroku 的建议,我已授予对 0.0.0.0/0 的 Amazon RDS MySQL 实例 (5.7.19) 的访问权限。这使得连接成功。当我为 mysql-user (ALTER USER 'user'@'%' REQUIRE SSL;) 强制使用 SSL 时,连接中断。我从 Heroku 关注了these instructions

我的 Heroku DATABASE_URL 配置变量: mysql://username:password@AMAZONRDSMYSQLURL/DATABASE?sslca=config/amazon-rds-ca-cert.pem

证书存储在 /config/amazon-rds-ca-cert.pem 下

从我的 localhost 终端,我可以使用以下命令通过 SSL 连接到 Amazon RDS 实例(使用与上面相同的证书)(在没有 --ssl-mode=VERIFY_IDENTITY 的情况下也可以使用): mysql -h AMAZONRDSMYSQLURL --ssl-ca=/Users/Documents/amazon-rds-ca-cert.pem --ssl-mode=VERIFY_IDENTITY -u USERNAME -p

我在 Lumen 中的数据库配置(/config/database.php):

<?php

$url = parse_url(getenv("DATABASE_URL"));
$host = $url["host"];
$username = $url["user"];
$password = $url["pass"];
$database = substr($url["path"], 1);

return [

    'default' => 'mysql',

    'connections' => [

        'mysql' => [
            'driver' => 'mysql',
            'port' => '3306',
            'host'      => $host,
            'database'  => $database,
            'username'  => $username,
            'password'  => $password,
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

知道这里出了什么问题吗?谢谢!

【问题讨论】:

    标签: mysql laravel heroku amazon-rds lumen


    【解决方案1】:

    您还没有告诉您的数据库文件使用 SSL。

    <?php
    
    $url = parse_url(getenv("DATABASE_URL"));
    $host = $url["host"];
    $username = $url["user"];
    $password = $url["pass"];
    $database = substr($url["path"], 1);
    
    return [
    
    'default' => 'mysql',
    
    'connections' => [
    
        'mysql' => [
            'driver' => 'mysql',
            'port' => '3306',
            'host'      => $host,
            'database'  => $database,
            'username'  => $username,
            'password'  => $password,
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
            'options'  => array(
                        "sslmode" => "require",
                        "sslrootcert" => "config/amazon-rds-ca-cert.pem"
                    )
        ],
    

    【讨论】:

    • 感谢您的反馈 - 这是一个很好的提示。虽然我猜这些是为 PostGreSQL 连接设置的选项....
    【解决方案2】:

    我终于让它工作了:

    'connections' => [
    
    'sqlite' => [
        'driver' => 'sqlite',
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
    ],
    
    'mysql' => [
        'driver' => 'mysql',
        'port' => '3306',
        'host'      => $host,
        'database'  => $database,
        'username'  => $username,
        'password'  => $password,
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
        'options'  => array(
            PDO::MYSQL_ATTR_SSL_CA => '../config/amazon-rds-ca-cert.pem'
        )
    ],
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 2015-05-16
      相关资源
      最近更新 更多