【发布时间】:2020-04-11 20:25:27
【问题描述】:
我正在努力将 Laravel 应用程序与 MYSQL 数据库连接起来。我可以通过 MySQL Workbench 和 PDO 连接自定义字符串连接到数据库,但使用 Laravel 我不能。不知道出了什么问题。
自定义连接字符串:它的工作文件在 laravel 应用程序内。我把这个只是为了检查
$conn = mysqli_init();
mysqli_ssl_set($conn,NULL,NULL, "BaltimoreCyberTrustRoot.crt.pem", NULL, NULL) ;
mysqli_real_connect($conn, 'sever.host', 'server-username', 'server-password', 'database', 3306, MYSQLI_CLIENT_SSL);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
else{
echo "Connected";
}
然后我在 .env 文件中添加了以下内容,除了定义用户名密码主机和数据库名称。 BaltimoreCyberTrustRoot.crt.pem 文件与 .env 文件位于同一路径
MYSQL_SSL_KEY=BaltimoreCyberTrustRoot.crt.pem
MYSQL_SSL_CERT=BaltimoreCyberTrustRoot.crt.pem
MYSQL_SSL_CA=BaltimoreCyberTrustRoot.crt.pem
MYSQL_SSL_CIPHER=BaltimoreCyberTrustRoot.crt.pem
MYSQL_SSL=true
在 config/database.php 中是这样的
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
'options' => (env('MYSQL_SSL')) ? [
PDO::MYSQL_ATTR_SSL_KEY => env('MYSQL_SSL_KEY'), // /path/to/key.pem
PDO::MYSQL_ATTR_SSL_CERT => env('MYSQL_SSL_CERT'), // /path/to/cert.pem
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_SSL_CA'), // /path/to/ca.pem
PDO::MYSQL_ATTR_SSL_CIPHER => env('MYSQL_SSL_CIPHER')
] : [],
不知道哪里出了问题,有什么想法吗?
我收到以下错误:
"error":"SQLSTATE[HY000] [2002] 试图以访问权限禁止的方式访问套接字。
[{"file":"D:\home\site\wwwroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php","line":624,"function":"runQueryCallback","class" :"Illuminate\Database\Connection","type":"->","args":["select * from backend_token limit 1",[],{}]},
【问题讨论】:
-
嗯,会发生什么?你有错误吗?
-
@ceejayoz 我用错误更新了问题。
-
这有助于提及您使用的是哪个版本的 Laravel。原始
config/database.php文件中有什么内容?