如何使用Laravel 5.3通过SSL连接到MySQL数据库
我一直在搜索整个互联网,并没有取得任何成功。如何使用Laravel 5.3通过SSL连接到MySQL数据库
如:https://laravel.io/forum/06-18-2014-connecting-mysql-over-ssl?page=1 https://laracasts.com/discuss/channels/lumen/connecting-to-mysql-via-ssl-from-lumen
我试图通过SSL从我laravel应用程序连接到蔚蓝色的MySQL数据库。
我确认我可以连接到数据库,如果我打开ssl。所以设置是正确的。什么让我起来,我能找到什么没有文档是如何通过SSL连接。我有一个sslkey - 我已经确认可以用它来连接到我的数据库管理程序之一的数据库 - 所以这些部分就在那里。
然而,Laravel似乎失败了。
这里是我的数据库驱动程序:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
'sslmode' => env('DB_SSLMODE', 'prefer'),
'options' => array(
PDO::MYSQL_ATTR_SSL_KEY => '\ssl\DatabaseCACert.pem'),
],
我缺少什么?数据库目前只是拒绝连接。 SQLSTATE[HY000] [2002]
所以它很接近。
您需要提供文件的完整路径。如果他们在您的laravel应用程序文件夹中,那么您可以使用base_path
方法生成完整的版本。您可能还需要定义证书和CA.
'options' => [
PDO::MYSQL_ATTR_SSL_KEY => base_path('ssl/client-key.pem'),
PDO::MYSQL_ATTR_SSL_CERT => base_path('ssl/client-cert.pem'),
PDO::MYSQL_ATTR_SSL_CA => base_path('ssl/ca-cert.pem')
]
好的。解决了这个问题。跳上与微软在手机上,发现日志的错误之一是:
PDO::__construct(): Peer certificate CN=`resourceregion-a.control.database.windows.net' did not match expected CN=`db.mysql.database.azure.com'
这@alexejenko指出文档中该行后,该位:
“如果你需要使用” --ssl-mode = VERIFY_IDENTITY“,那么你可以ping你的服务器名称来解析区域服务器名称,比如westeurope1-a.control.database.windows.net,并在连接中使用该区域服务器名称,直到此问题出现我们计划在未来取消这一限制。“
原来这是发生了什么事。数据库连接路由到区域数据库,而不是我的。所以你不完成的产品。
将我的DB_HOST更改为该区域后,它已成功连接(请注意:确保您已将您的ips列入白名单)。
base_path备注有帮助,但它不能解决问题。所有的Microsoft Azure文档都只指定了一个用于连接到azure的.pem文件。但会尝试生成其他人并查看您的解决方案是否有效。 – Mugluck