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。
您不需要在 .env
和 database.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
的凭据
我在实时共享主机上使用 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。
您不需要在 .env
和 database.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
的凭据