【问题标题】:SQL Connection refused with LaravelLaravel 拒绝 SQL 连接
【发布时间】:2019-08-09 02:23:46
【问题描述】:

我知道这可能是一个反复出现的问题,但我在网上找到的解决方案似乎都无法解决我的问题。

我有一个 Laravel 5.8 项目,但我无法从控制器访问我的数据库,所有 artisan 命令都可以正常工作(如 php artisan migrate)

但是当尝试一个简单的事情时:

protected function test()
{
   return User::all();
}

我收到SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `users` where `users`.`deleted_at` is null)

我只是试图访问我的本地数据库(来自 OSX) 我的配置:

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=root
DB_PASSWORD=secret
database.php
'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'database'),
    'username' => env('DB_USERNAME', 'database'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
],

我的数据库正在运行(我可以使用 IDE 或其他方式访问它)

感谢您的帮助!

【问题讨论】:

  • 您的 IDE 中是否有不同的连接设置?例如,localhost 而不是 127.0.0.1?
  • 您可以尝试从您的控制器执行插入查询吗?如果它正在工作,则不允许在您的 conf 中名为“数据库”的用户执行 SELECT 查询(但可以执行 INSERT 查询,这可以解释成功的迁移),如果是这种情况,请从您的 mysql 提示符中尝试:GRANT SELECT ON database.* TO 'database'@'localhost';
  • 感谢您的回答@TravisBritz,我的 IDE 中有相同的设置
  • 感谢@MohamedAyoubBENJELLOUN,但插入同样的问题
  • 在你的 database.php 文件中注释包含空字符串值(密码和 unix_socket 定义)的行,你有同样的错误吗?如果是,将主机或端口值更改为错误的值,仍然得到相同的错误?

标签: php mysql database laravel connection


【解决方案1】:

这不是最好的答案,但创建具有所有权限的新数据库用户并使用该用户。

【讨论】:

  • 谢谢,但同样的问题,我不认为这是一个权限问题,我有同样的问题与 root
  • 如果您可以从终端使用您的数据库,但不能从 IDE = .env 文件中数据库的 99.9% 错误凭据。我的 .env 文件看起来像:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=vk3897vk
猜你喜欢
  • 2018-08-14
  • 1970-01-01
  • 2016-01-27
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
  • 2021-04-17
相关资源
最近更新 更多