出于某种原因,MySQL不会连接一个特定的webapp。它将从CLI,Sequel Pro(如Mysql Workbench)连接,甚至是在兄弟目录(~/projects/iwork/
,~/projects/idontwork
)中托管的webapp。
我能看到的唯一区别是破碎的一个是laravel实例。
我的.env
:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=idontwork_db
DB_USERNAME=dev
DB_PASSWORD=password
错误:
SQLSTATE[HY000] [1045] Access denied for user 'dev'@'localhost' (using password: YES) (SQL: select * from `instances` limit 1)
我的config/database.php
(这与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,
],
按要求转储config('database.connections.mysql')
:
array:11 [▼
"driver" => "mysql"
"host" => "localhost"
"port" => "3306"
"database" => "idontwork_db"
"username" => "dev"
"password" => "nottherightpassword"
"charset" => "utf8"
"collation" => "utf8_unicode_ci"
"prefix" => ""
"strict" => false
"engine" => null
]
有效的兄弟webapp:
$DB_HOST = 'localhost';
$DB_NAME = 'iwork_db';
$DB_USER = 'dev';
$DB_PASS = 'password';
$dbc = new PDO('mysql:host=' . $DB_HOST . ';dbname=' . $DB_NAME, $DB_USER, $DB_PASS);
$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
显然有人试图通过Laravel连接而另一个是本机PDO,但我看不出有任何理由会产生影响。
我做过的事情:
127.0.0.1
和localhost
。 idontwork_db
)此时我合理地不知道什么是破坏或如何解决它。任何帮助将不胜感激。
答案 0 :(得分:0)
问题似乎来自nginx和Laravel由于某种原因共享ENV变量。在工作webapp中,我使用PHP变量来保存信息。在Laravel webapp中,我正在使用.env
。由于各种不适用的原因,我的nginx文件中有一行说:
fastcgi_param DB_PASSWORD nottherightpassword;
这正是.env
文件命名变量的内容。
我不确定为什么nginx param优先,但确实如此。我所要做的就是更改var名称(或使其使用我想要的密码)并开始工作。
因此,如果mysql可以通过webapp / site连接所有人,请务必检查您的Web服务器并确保您没有与任何内容冲突。