MySQL拒绝只访问laravel

时间:2018-01-26 22:33:22

标签: php mysql laravel-5 pdo

出于某种原因,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,但我看不出有任何理由会产生影响。

我做过的事情:

  • Composer和NPM都安装了他们的软件包。
  • 我尝试了127.0.0.1localhost
  • 我确保凭据有效(就像我说的,我可以从CLI和Sequel Pro获得idontwork_db
  • 我在google上找到的所有东西似乎都认为我的连接不畅,但事实并非如此。

此时我合理地不知道什么是破坏或如何解决它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题似乎来自nginx和Laravel由于某种原因共享ENV变量。在工作webapp中,我使用PHP变量来保存信息。在Laravel webapp中,我正在使用.env。由于各种不适用的原因,我的nginx文件中有一行说:

fastcgi_param   DB_PASSWORD           nottherightpassword;

这正是.env文件命名变量的内容。

我不确定为什么nginx param优先,但确实如此。我所要做的就是更改var名称(或使其使用我想要的密码)并开始工作。

因此,如果mysql可以通过webapp / site连接所有人,请务必检查您的Web服务器并确保您没有与任何内容冲突。