首页 > 解决方案 > Laravel - 迁移工作但发布请求抛出“用户'root'@'localhost'的访问被拒绝”

问题描述

我正在尝试将项目投入生产。向 Laravel API 运行 Axios 发布请求时出现访问错误。(我在本地机器上没有收到此错误)

[2019-01-28 12:18:04] local.ERROR: SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost' (SQL: select * from `oauth_clients` where `id` = 2 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1698): SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost' (SQL: select * from `oauth_clients` where `id` = 2 limit 1) at /var/www/html/RemApp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664, PDOException(code: 1698): SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost' at /var/www/html/RemApp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68)

运行迁移时我没有收到错误。下面是我的 .env 文件。(我没有更改 config/database.php)

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=AppName
DB_USERNAME=root
DB_PASSWORD=mypasswordhere
  1. 尝试清除缓存:

    php artisan cache:clear
    php artisan config:clear
    
  2. 从 DB_PASSWORD 中删除了引号

  3. 凭据是正确的。(可以使用 mysql -u -p 登录和运行查询)

标签: phpmysqllaravel

解决方案


原来这与:SQLSTATE[HY000] [1698] 用户'root'@'localhost'的访问被拒绝。尝试了一切

由于某种原因,不能使用 mysql root 用户。要解决此问题,您需要创建一个新用户。以下是创建新用户和授予 root 权限的命令。

mysql -u root -p
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
exit
service mysql restart

现在编辑您的 .env 以匹配新的用户凭据。为了安全起见,您可以重新启动服务器。


推荐阅读