我在测试 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'),
]) : [],
],
我已经检查了文件和程序的所有者。它可以是root或www-data,并确保Apache2由root或www-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.