mysql - Laravel SQLSTATE[HY000] [1698] 用户 'root' @'localhost' 的访问被拒绝

标签 mysql ubuntu-18.04 php-7.2 laravel-6

我在测试 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处理所有代码,您只需要 PHP ARTISAN MIGRATE在创建我已经完成的授权用户界面之后。我实际上可以看到表格 MIGRATE在 MYSQL 终端的数据库中创建。

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

我尝试过的解决方案:

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.

最佳答案

也许你应该更改文件 .env

DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

使用 config/database.php 中的值

关于mysql - Laravel SQLSTATE[HY000] [1698] 用户 'root' @'localhost' 的访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58833825/

相关文章:

MySQL 插入 select 的结果

curl - Ubuntu 18、VPN 和 DNS : curl wont resolve VPN-host, 但 nslookup 和 dig 可以

mysql - Cloud SQL 比本地主机服务器稍慢

mysql - 每次使用触发器插入 MySQL 5.6 中的目标表后,尝试将上次更新的 row_id 从源表拉到另一个表

php - mysql 中的 n*n 表与 (n^2)*3 表

php - Doctrine2 不可变实体和仅附加数据结构

ubuntu - 无法在 Ubuntu 18.04 LTS 上安装 Parallels Tools

r - 在 Ubuntu 18.04 & R 4.0.2 上安装 tidyr 时出错

ubuntu - 由于未满足的依赖关系,无法在 Ubuntu 18 上安装 PHP7.2-dev

nginx - 使用 Docker、nginx、PHP7-FPM 和 Xdebug 进行 IDE 调试