mysql Laravel SQLSTATE[HY 000] [1698]用户“root”@“localhost”的访问被拒绝

dhxwm5r4  于 2023-01-08  发布在  Mysql
关注(0)|答案(5)|浏览(222)

我在我的测试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(仿生海狸),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 * 文件中匹配我的数据库配置。
我已经绝望了。
我在候机厅试了好几次。

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

我已经检查了文件和程序的所有者。它是 * root * 或 * www-data ,并确保Apache2是由 * root * 或 * www-data * 运行的。我使用了ps aux | grep apache
我从来没有在Windows 10 WAMP堆栈中遇到过这个问题。我已经无计可施了。
我从头开始重新创建了项目,但仍然得到相同的错误。
这篇文章解决了它:
一个月一次 *

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.
kr98yfug

kr98yfug1#

也许你应该更改文件.env

DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

其值与config/database.php中的值相同

6kkfgxo0

6kkfgxo02#

试着用双引号把你的密码(“password”)括起来,有时候会有用。

rjzwgtxy

rjzwgtxy3#

我用双引号在我的密码和它为我工作。

nxowjjhe

nxowjjhe4#

试试这个溶液!

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;
nhaq1z21

nhaq1z215#

我找到的解决方案是安装xampp并从那里使用mariadb,它非常适合我。
使用el traductor帕拉描述lo de arriba xd

相关问题