【问题标题】:I cannot access my second database in Laravel (.env & database.php edited !)我无法访问我在 Laravel 中的第二个数据库(.env 和 database.php 已编辑!)
【发布时间】:2020-11-04 15:33:05
【问题描述】:

我有一个使用 TablePlus 创建的在本地运行的数据库。我可以毫无问题地访问它。我用 Insomnia 进行了测试,我可以得到我需要的信息。我搜索如何连接到第二个实时数据库。我更改了.env 文件和database.php 以创建对第二个数据库的另一个访问权限。但我有一条错误消息:

SQLSTATE[HY000][1045] Access denied for user 'root'@'host' (using passowrd: YES)

host 是我在 PHP MyAdmin 的变量选项卡中找到的名称。

如何访问第二个数据库?我究竟做错了什么 ? database.php中的第二个连接是否需要更改env('DATABASE_URL')

.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=first_db
DB_USERNAME=root
DB_PASSWORD=root

DB_SECOND_CONNECTION=mysql2
DB_SECOND_HOST=host //(again, PHP MyAdmin -> variables tab)
DB_SECOND_PORT=3306
DB_SECOND_DATABASE=second_db
DB_SECOND_USERNAME=*username*
DB_SECOND_PASSWORD=*password*

database.php

'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
    'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'first_db'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', 'root'),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],
    'mysql2' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_SECOND_HOST', 'host'), //(again, PHP MyAdmin -> variables tab)
        'port' => env('DB_SECOND_PORT', '3306'),
        'database' => env('DB_SECOND_DATABASE', 'secondd_db'),
        'username' => env('DB_SECOND_USERNAME', 'username'),
        'password' => env('DB_SECOND_PASSWORD', 'password'),
        'unix_socket' => env('DB_SECOND_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],
],

【问题讨论】:

  • 您在 database.php 中为 mysql2 连接使用相同的环境变量
  • 对不起,我的代码是正确的...我编辑了问题!
  • php artisan config:clear ?
  • 清除配置并不能解决问题...

标签: php mysql database laravel phpmyadmin


【解决方案1】:

正如上面@Collin 所建议的,我使用的root 用户没有权限。在 PHP MyAdmin 中创建一个具有所有权限的新用户解决了这个问题。

【讨论】:

    【解决方案2】:

    如果您想检查数据库连接是否实际可访问,您可以尝试以下操作。

    首先使用以下命令清除您的配置:

    php artisan config:clear
    

    然后使用以下代码检查连接是否可访问:

    try {
        DB::connection('mysql2')->getPdo();
    } catch (\Exception $e) {
        die("Could not connect to the database.  Please check your configuration. error:" . $e );
    }
    

    如果这不起作用,请检查用户是否具有正确的权限。

    【讨论】:

    • 我有同样的错误信息PDOException SQLSTATE[HY000][1045] Access denied for user 'root'@'host' (using passowrd: YES)
    • 很高兴听到您找到了解决方案,如果此 awnser 帮助您将其标记为良好,以便其他人可以更轻松地找到解决方案。
    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2016-04-14
    • 2016-09-20
    • 1970-01-01
    相关资源
    最近更新 更多