Laravel-迁移工作正常,但是发布请求抛出“用户'root'@'localhost'的访问被拒绝”

时间:2019-01-28 12:29:42

标签: php mysql laravel

我正在尝试将一个项目投入生产。运行对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登录并运行查询)

4 个答案:

答案 0 :(得分:0)

如果数据库密码为空,请不要输入空字符串,而应将其保留为空白,如此进行更改:

DB_PASSWORD=''

收件人

DB_PASSWORD=

否则,它将这些引号作为密码传递。

编辑#1

如果您确实有密码,请在引用时取消引用。

答案 1 :(得分:0)

只需设置正确的数据库凭据:

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=        // Your Database Name
DB_USERNAME=       // Yout Database Username
DB_PASSWORD=      // Your Database Password

如果未在数据库上设置密码,请清除密码DB_PASSWORD,还必须删除空白空间

完成.env编辑后,可以使用以下artisan命令清除配置缓存:php artisan config:cache

您还需要在更改.env文件值后重新启动服务器。

答案 2 :(得分:0)

首先,在生产环境中使用带有空密码的root是危险的。您需要使用具有强密码的单独用户,或者至少对根用户使用强密码。

并清除生产中的缓存

php artisan cache:clear
php artisan config:clear

答案 3 :(得分:0)

原来这与以下内容有关:SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'. Tried everything

由于某种原因,不能使用mysql根用户。为了解决这个问题,您需要创建一个新用户。以下是创建新用户并授予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以匹配新的用户凭据。为了安全起见,您可以重新启动服务器。