【问题标题】:How to connect to MySQL database on port 3308 using laravel framework 5.1?如何使用 laravel 框架 5.1 连接到端口 3308 上的 MySQL 数据库?
【发布时间】:2015-10-13 00:18:10
【问题描述】:

我是第一次尝试使用 laravel。我打开了位于 config 目录中的 database.php 文件,然后更新了 mysql 配置。

但每次我尝试执行此命令时 php artisan 迁移:安装

我明白了 [PDO异常] SQLSTATE[HY000] [2002] 无法建立连接,因为目标机 ne主动拒绝了。

我必须让 laravel 以某种方式连接到不同的端口。

我尝试了以下方法,但都没有成功。

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', '10.15.1.5'),
        'port'      => '3308',
        'database'  => env('DB_DATABASE', 'mydb_dev'),
        'username'  => env('DB_USERNAME', 'user'),
        'password'  => env('DB_PASSWORD', 'pass'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

还有这个

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', '10.15.1.5:3308'),
        'database'  => env('DB_DATABASE', 'mydb_dev'),
        'username'  => env('DB_USERNAME', 'user'),
        'password'  => env('DB_PASSWORD', 'pass'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

还有这个

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', '10.15.1.5'),
        'port'      => env('DB_PORT', '3308'),
        'database'  => env('DB_DATABASE', 'mydb_dev'),
        'username'  => env('DB_USERNAME', 'user'),
        'password'  => env('DB_PASSWORD', 'pass'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

最后,我尝试了这个

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => '10.15.1.5:3308',
        'database'  => env('DB_DATABASE', 'mydb_dev'),
        'username'  => env('DB_USERNAME', 'user'),
        'password'  => env('DB_PASSWORD', 'pass'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

这给了我一个不同的错误

Access denied for user 'homestead'@'10.xxxxxx' (using password: YES)

我不确定用户 homestead 来自哪里。

如何让 laravel 连接到 mysql 的 3308 端口?

【问题讨论】:

  • 考虑测试与 PDO 的连接,如this forum post 中所述,以查看连接是否以这种方式工作。如果是这样,请尝试那里最后一个答案的建议(关于指定unix_socket)。

标签: php mysql laravel laravel-5


【解决方案1】:

我知道你想通了,但在你提供的所有尝试中,你给出的答案并不清楚。对于那些展望未来的人来说,这就是您所需要的:

(这是假设 Laravel 5.1 使用 Postgres DB,但应该与 Laravel 的替代版本和不同的 DB 一起使用......另外,不要介意我的 database.php 所具有的替代/不同配置设置,而不是你的,这些是用于高级配置的。)

'port' 部分添加到您的config/database.php,如下所示:

        'pgsql' => [
        'read' => [
            'host' => env('DB_READ', 'localhost')
        ],
        'write' => [
            'host' => env('DB_WRITE', 'localhost')
        ],
        'port'      => env('DB_PORT', '5432'),
        'driver'   => 'pgsql',
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset'  => 'utf8',
        'prefix'   => '',
        'schema'   => env('DB_SCHEMA', 'public'),
        'options'  => array(
            PDO::ATTR_PERSISTENT => env('DB_PERSISTENT', false),
        ),
    ],

然后在您的.env 中,您可以覆盖port 设置,如下所示:

DB_PORT=32769

【讨论】:

    【解决方案2】:

    我发现了这个问题。 文件 .env 需要使用正确的信息进行更新

    【讨论】:

    • 如果你确实在.env 中设置了正确的DB_PORT 但Laravel 拒绝使用该端口并将port 配置设置为tcp://172.17.0.2:3306 怎么办?有人见过这样的吗?
    猜你喜欢
    • 2015-10-11
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多