2017-12-20 30 views
0

Herokuが提案するように、Amazon RDS MySQLインスタンス(5.7.19)の0.0.0.0/0へのアクセスを許可しました。これにより、接続が正常に行われます。 mysql-user(ALTER USER 'user' @ '%' REQUIRE SSL;)にSSLを強制すると、接続が切断されます。私はHerokuのthese instructionsに続きました。Heroku Lumen AppをAmazon RDSに接続するMySQL 5.7.19

私のHerokuのDATABASE_URLの設定変数: のmysql://ユーザー名:?パスワードの@ AMAZONRDSMYSQLURL/DATABASE SSLCA =のconfig /アマゾン-RDS-CA-cert.pemを

証明書は、//configの下に格納されamazon-rds-ca-cert.pem

私のlocalhost端末からは、このコマンドを使用してAmazon RDSインスタンスに(上記と同じ証明書で)SSL経由で接続できます(--ssl-mode = VERIFY_IDENTITY ): mysql -h AMAZONRDSMYSQLURL --ssl-ca =/Users/Documents/amazon-rds-ca-cert.pem

-p --ssl-モード= VERIFY_IDENTITY -u USERNAME内腔に私のデータベース構成(/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, 
     ], 

任意のアイデアここで間違って行くいただきましたか!?ありがとう!

答えて

0

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" 
       ) 
    ], 
+0

おかげ - これは良いヒントでした。私はこれらがPostGreSQL接続のために設定されるオプションだと思いますが.... – Mathias

0

:あなたのフィードバックのための

'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' 
    ) 
], 
関連する問題