首页 > 解决方案 > “用户访问被拒绝,使用密码:是”Laravel 8 Heroku

问题描述

这是我使用本教程config/database.php修改的文件。它说我需要在上述 php 页面上方附加代码块。(本教程使用的是postgreSQL,而我的系统需要使用MySQL)。$DATABASE_URL=parse_url("mysql://####");

// attached $DATABASE_URL=parse_url("mysql://####") on the topmost part of the page


'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => $DATABASE_URL['host'], // edited this line
            'port' => $DATABASE_URL['port'], // edited this line
            'database' => ltrim($DATABASE_URL['path'], '/'), // edited this line
            'username' => $DATABASE_URL['user'], // edited this line
            'password' => $DATABASE_URL['pass'], // edited this line
            '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'),
            ]) : [],
        ],

下面是原始的mysql代码

        // 'mysql' => [
        //     'driver' => 'mysql',
        //     'url' => env('DATABASE_URL'),
        //     'host' => env('DB_HOST', '127.0.0.1'),
        //     'port' => env('DB_PORT', '3306'),
        //     'database' => env('DB_DATABASE', 'forge'),
        //     'username' => env('DB_USERNAME', 'forge'),
        //     'password' => env('DB_PASSWORD', ''),
        //     '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'),
        //     ]) : [],
        // ],

运行具有上述问题的系统时的错误输出

SQLSTATE[HY000] [1045] 用户 '{{redacted username}}'@'{{redacted ip address}}' 的访问被拒绝(使用密码:YES)(SQL:select * from video_linkswhere home_video= true and video_links. deleted_atis null limit 1 )

我在 Heroku CLI 中运行迁移命令时遇到的另一个问题是:

PHP Warning:  Undefined array key "port" in /app/config/database.php on line 51

似乎$DATABASE_URL=parse_url("mysql://####")没有在其数组中获取端口值。

我应该如何处理这个?

标签: phpmysqllaravelheroku

解决方案


您可以config/database.php保持不变。

并添加一个 ENV var DATABASE_URL

在设置中或通过 CLI:

heroku config:set DATABASE_URL=YOUR_URL


推荐阅读