SQLSTATE[28000] [1045] 用户 'elsharkawyazq_climate_app'@'localhost' 的访问被拒绝(使用密码:YES)

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

我的 env 数据库是正确的,但我收到此错误

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

我在服务器 PHP 7.3 上使用 laravel 5.8

我试过其他工作数据库没有工作,所以 env 文件数据是正确的,但我不知道为什么会这样

我的环境

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=elsharkawyazq_climate_app
DB_USERNAME=elsharkawyazq_climate_app
DB_PASSWORD=SomePassword!@##@!

我的数据库

'mysql' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'elsharkawyazq_climate'),
    'username' => env('DB_USERNAME', 'elsharkawyazq_test'),
    'password' => env('DB_PASSWORD', 'SomePassword!@##@!'),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => false,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],

我在本地使用了 Xampp,一切正常

The pound sign acts as a comment。如果井号 (#) 未转义,则不能将其用作 .env 文件中的字符。用引号括起您的密码:

DB_PASSWORD="Your-password-with-###-here"

当我进入 php artisan tinker 环境时,我可以从 .env 加载环境变量,当我在一个值中有井号时,它充当注释。当放在引号内时它不会。

在您的 .env DB_PASSWORD 中不要使用任何 (!) 和 (#) 字符。您可以在密码中使用 (@) 或 (%) 字符。因此,请从 DB_password.

中删除这些字符
DB_PASSWORD="Use only the laravel allowed db password allowed characters"

我认为它应该适用于所有 lavavel 爱好者。