。env文件中的MySQL密码不起作用,但在database.php中工作正常

问题描述 投票:0回答:2

使用.env文件时出现SQLSTATE[HY000] [1045] Access denied for user错误。

我已经确认凭据可以正常工作-我可以使用MySQL Workbench进行连接。

我在Windows和Laravel 6.2上使用XAMPP。使用php artisan serve运行站点时,我遇到相同的问题。

我已经在MySQL Workbench中测试了凭据。我什至通过注释掉config / database.php中的密码行并对密码进行硬编码来测试凭据。

问题似乎是我如何在.env文件中声明DB_PASSWORD(DB_DATABASE和DB_USERNAME可以正常工作。)我已经尝试了单引号和双引号(与.env文件中的其他示例一样),这两个选项都不起作用。我尝试使用没有密码的root用户,但这也不起作用。

这是我尝试使用.env文件作为凭据时遇到的错误:

SQLSTATE[HY000] [1045] Access denied for user 'dba'@'localhost' (using password: YES)

如果我将密码输入config / database.php,效果很好。我究竟做错了什么?我尝试过在XAMPP中停止Apache服务,然后为Laravel运行以下命令:

php artisan cache:clear
php artisan config:clear
php artisan config:cache

但没有骰子。

这是我的.env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_test
DB_USERNAME=dba
DB_PASSWORD="simplepass1000"

这里是config / database.php(使用硬编码的密码,不适用于从env加载的密码):

        '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', ''),
            'password' => 'simplepass1000',
            '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'),
            ]) : [],
        ],
laravel xampp
2个回答
0
投票

解决方案是将您的.env文件设置为:

DB_DATABASE = laravel_test

DB_USERNAME = dba

DB_PASSWORD = simplepass1000

DB_PASSWORD变量没有引号


0
投票

如果您在本地服务器中,请不要忘记重启本地服务器。

要重新启动,您只需在服务器终端中单击^C,然后重新执行php artisan serve

© www.soinside.com 2019 - 2024. All rights reserved.