Laravel 拒绝访问连接数据库

Laravel acces denied for connecting db

我最近开始 laravel,但出现错误

SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) (SQL: select count(*) as aggregate from `users` where `email` = ***)

当我尝试使用默认身份验证系统注册时,在一个干净的新项目上。 php artisan migrate 运行良好,我可以使用与 .env 文件中相同的凭据通过 mysql workbrench 连接到数据库。

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=udemy-cms
    DB_USERNAME=root
    DB_PASSWORD=

我正在使用带 laravel 和 mysql workbrench 的宅基地。我尝试了 php artisan config:clear 但确实如此 没用。

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', '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'),
            ]) : [],

在此先感谢您的帮助。

确保您更新了 .env 文件中的以下值

DB_CONNECTION = mysql

DB_HOST = "127.0.0.1" //ip or localhost

DB_PORT = "3306" //make sure its true one

DB_DATABASE = "your_database_name"

DB_USERNAME = "root" //is as default if you didnt create a new

DB_PASSWORD = "password" //or empty

更新 .env 文件和 运行 命令后 php artisan config:cache 然后重新启动项目的服务器并使用 php artisan serve 命令再次为项目提供服务

首先,我建议检查您是否真的可以使用您当前的凭据连接到您的 mysql。您应该能够像这样在命令行中连接到它:

mysql -uroot -p

这基本上是尝试使用 root 用户连接到 mysql,没有密码。如果这不起作用,则您的用户不存在或您的密码错误。

如果有效,您应该 运行 按照以下步骤查看您的数据库 udemy-cms 是否实际存在:

show databases;

如果它没有显示您的数据库,您需要创建它。

CREATE DATABASE udemy-cms;

也有可能是您的用户没有足够的权限,这种情况下您需要给当前用户足够的权限。