【发布时间】:2020-03-19 15:22:46
【问题描述】:
我是一个不规则的 Laravel 用户,正在尝试连接到远程 SQL 数据库。
我已经获得了用于创建迁移的工匠命令,并且我可以从命令行成功连接到数据库。但是,当我尝试加载应用程序时,连接失败。
Could not connect to the database. Please check your configuration. error:PDOException: SQLSTATE[HY000] [1045] Access denied for user 'myuser'@'222.222.222.222' (using password: YES) in ... {file location}
artisan 和实际的应用程序框架有何不同之处在于这种连接会在两者之间做出不同的响应?
这里是database.php文件中的mysql连接:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '123.123.123.123'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'mydb'),
'username' => env('DB_USERNAME', 'myuser'),
'password' => env('DB_PASSWORD', 'mypass'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '','strict' => true,
'engine' => null,
'sslmode' => 'require',
'options' => array(
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
PDO::MYSQL_ATTR_SSL_KEY => 'certs/client-key.pem',
PDO::MYSQL_ATTR_SSL_CERT => 'certs/client-cert.pem',
PDO::MYSQL_ATTR_SSL_CA => 'certs/server-ca.pem',
),
这是本地环境文件:
DB_CONNECTION=mysql
DB_HOST=123.123.123.123
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=myuser
DB_PASSWORD=mypass
我在本地运行应用程序,但 MySQl 服务器是远程的。
【问题讨论】:
-
您的远程数据库身份验证是基于隧道的吗?如果是,那么您必须创建隧道,并且您需要打开它才能在应用程序中使用数据库连接。
-
原来根本原因是PDO不喜欢Google Cloud SQL生成的证书。
-
glade 现在解决了。
-
你现在可以回答你自己的问题了。