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

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

我在实时共享主机上使用 laravel,尽管使用了正确的数据库连接凭据,但我仍收到上述错误。 我编辑了 .env 和 database.php 文件并添加了必要的凭据。我的问题是相同的凭据在我编写用于测试但不在 laravel 上的原始 php 文件上工作。 laravel 项目在 localhost

上运行正常

这里是 .env 文件代码的示例

      DB_CONNECTION=mysql
      DB_HOST=127.0.0.1
      DB_PORT=3306
      DB_DATABASE=wymtav_food
      DB_USERNAME=wymtav_admin
      DB_PASSWORD=PasswordNce
      BROADCAST_DRIVER=log
      CACHE_DRIVER=file
      QUEUE_CONNECTION=sync
      SESSION_DRIVER=file
      SESSION_LIFETIME=120

这里是编辑后的 ​​database.php 文件的片段

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

注意,在本地环境中,数据库端口是3309,我已经根据生产环境端口更改为3306。 我可能做错了什么?

'host' => env('DB_HOST', '127.0.0.1'),

这不是您数据库的正确 IP 地址。您应该检查您的主机并获取您的数据库的 IP。

您不需要在 .envdatabase.php 文件中更新数据库连接。您可以在 .env 文件或 database.php 文件中执行。

建议在 .env 文件中执行如下操作:-

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=wymtav_food
DB_USERNAME=wymtav_admin
DB_PASSWORD=PasswordNce

有些托管服务器提供 localhost 作为 DB_HOST,但有些提供自己的主机 url,因此您需要检查您的托管帐户。

原来我的主机将数据库密码和用户名设置为与访问 cpanel 的密码和用户名相同。除非登录到 phpmyadmin,否则创建的其他用户不能直接读取或写入数据库。因此,任何遇到此问题的人,尤其是在 directadmin 中,都可以尝试将凭据更改为用于登录 directadmin

的凭据