在Laravel中,与套接字的DB连接被拒绝

时间:2015-02-02 14:14:28

标签: php mysql laravel laravel-5

我知道SO和Google上有很多关于这个问题的点击,但我似乎仍有一个独特的问题。

错误讯息: SQLSTATE [HY000] [2002]拒绝连接

配置

    'mysql' => array(
        'driver'    => 'mysql',
        "host"      => "localhost:/var/run/mysqld4.sock",
        'port'      => '3304',
        "username"  => "admin",
        "password"  => "admin",
        "database"  => "frontend_generic",
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => 'pre_',
    ),

我确认我的数据库在端口3304上运行,我的前缀是正确的,用户,数据库和密码都是正确的。

对于主持人,我试过" localhost"," 127.0.0.1"," http://127.0.0.1"甚至是服务器的实际IP地址。

尽管如此,没有运气或改变。我尝试在本地database.php文件中使用完全相同的配置,但正如预期的那样,没有任何变化。

出于选择,我在这里缺少什么?

更新

这是来自与此配置一起使用的其他应用的代码。这是Kohana,而不是Laravel,但它确实有效。

 "general" => array
        (
            "type"       => "mysql",
            "connection" => array
            (
                "hostname"   => "localhost:/var/run/mysqld4.sock",
                "username"   => "admin",
                "password"   => "admin",
                "persistent" => FALSE,
                "database"   => "frontend_generic",
            ),
            "table_prefix" => "pre_",
            "charset"      => "utf8",
            "caching"      => FALSE,
            "profiling"    => TRUE,
        ),

3 个答案:

答案 0 :(得分:5)

使用laravel 5的套接字时,请使用unix_socket配置,而不是hostport

虽然更改为IP地址确实有效,但当数据库服务器位于同一台计算机上时,使用套接字会有好处。

更正最初发布的配置:

    'mysql' => array(
        'driver'           => 'mysql',
        "unix_socket"      => "/var/run/mysqld4.sock",
        "username"         => "admin",
        "password"         => "admin",
        "database"         => "frontend_generic",
        'charset'          => 'utf8',
        'collation'        => 'utf8_unicode_ci',
        'prefix'           => 'pre_',
    ),

答案 1 :(得分:0)

这是Laravel 5中数组的样子:

'mysql' => [
    'driver'    => 'mysql',
    'host'      => env('DB_HOST', 'localhost'),
    'database'  => env('DB_DATABASE', 'forge'),
    'username'  => env('DB_USERNAME', 'forge'),
    'password'  => env('DB_PASSWORD', ''),
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
    'strict'    => false,
],

在位于项目根目录中的.env文件中,请更改您需要调整的设置,然后再次尝试。很难说什么可能导致这个问题,所以试试吧。

示例.env文件

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file

使用您的凭据创建文件后,如我所评论的那样,请调用文件.env并将其放在项目的根目录中。另外,请务必查看今天的Laravel日志,该日志位于storage / logs / laravel-todays_date.txt,并在此处报告任何错误。

答案 2 :(得分:0)

您应该将“host”更改为实际的服务器IP地址,而不是其他任何内容。所以,摆脱套接字的东西。