Laravel 报错:SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'

5

我在测试 Laravel 项目时在浏览器中遇到了此错误:

Illuminate\Database\QueryException
SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'
(SQL: select count(*) as aggregate from `users` where `email` = test@test.com)

我在Stack Overflow和其他网站上发现了类似的问题,但是给出的所有解决方案都没有对我起作用。

另一个类似的错误代码涉及MySQL,但我的问题是关于Laravel的,不是MySQL。
我使用Ubuntu 18.04(Bionic Beaver),Laravel 6,LAMP,我的数据库是MySQL,服务器由Apache 2.4提供服务,而不是Homebrew或PHP localhost。

----------(测试项目上下文)

我正在按照教程操作,并成功添加了“登录”和“注册”按钮。现在当我尝试注册新用户时,我遇到了两个权限问题,我用sudo chmod解决了这两个问题,但我已经卡在第三个问题上五个小时了。如果今天无法解决,我将重新安装所有内容。

据我理解,PHP ARTISAN UI:AUTH会处理所有代码,您只需要在创建授权UI后执行PHP ARTISAN MIGRATE即可,而我已经执行了此操作。实际上,我可以在MYSQL终端中看到MIGRATE创建的表格。

----------(/测试项目上下文)

我尝试过的解决方案:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1 or 127.0.0.11 or localhost
DB_PORT=3306 or 33060
DB_DATABASE=test
DB_USERNAME=root or I_created_a_new_user_with_all_privileges
DB_PASSWORD=password

我尝试匹配我的Laravel数据库配置在app\config\database.php文件中。
我已经绝望地执行了sudo chmod 777 /var/www/html/blog
我在终端尝试了许多清除操作。
php artisan config:cache
php artisan config:clear
php artisan cache:clear

这是app\config\database.php文件:

'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),  <--- NEVER TRIED THIS PART THOUGH, idk what to put
            'host' => env('DB_HOST', '127.0.0.1'), <---- tried all
            'port' => env('DB_PORT', '3306'),      <---- tried 33060
            'database' => env('DB_DATABASE', 'forge'), <--- tried 'test' as my DB
            'username' => env('DB_USERNAME', 'forge'), <--- tried 'root' or 'nico'
            'password' => env('DB_PASSWORD', ''), <--- 'password'
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',      <--- tried 'utf8'
            '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'),
            ]) : [],
        ],

我已经检查了文件和程序的所有者。它可以是rootwww-data,并确保Apache2由rootwww-data运行。我使用了ps aux | grep apache命令。

我在Windows 10 WAMP堆栈中从未遇到过这个问题。我已经无计可施。

我已经从头开始重新创建了项目,但仍然遇到同样的错误。

这篇文章解决了问题:#1698 - Access denied for user 'root'@'localhost' mysql -5.7 and ubuntu-16.04

Step 1. `sudo mysql -u root -p`

Step 2. `USE mysql;`

Step 3. `ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';`

Here 'admin' is your new password, but you can change it.

Step 4. Exit Thanks. You are done.
5个回答

2

尝试这个解决方案!

    sudo mysql -u root -p
    > use mysql;
    > select user,host,plugin from mysql.user;
    > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    > flush privileges;

解释一下,我很好奇。 - undefined

1
也许你应该更改文件 .env。
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

在config/database.php中的值如下:


可能还是肯定? - Adam Mackler

0

尝试用双引号括起你的密码("password")。有时候会奏效。


0

我在我的密码中使用双引号,对我起作用。


0
我找到的解决方法是安装XAMPP并从中使用Mariadb,对我来说完美地解决了问题。
使用翻译器写上面的话。

目前您的回答不太清楚。请编辑以添加更多详细信息,以帮助其他人了解如何回答问题。您可以在帮助中心找到有关撰写良好答案的更多信息。 - Community
请用英语回答,因为Stack Overflow是一个仅限英语的网站 - cursorrux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接