我正在尝试将一个项目投入生产。运行对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
尝试使用以下方法清除缓存:
php artisan cache:clear
php artisan config:clear
从DB_PASSWORD中删除了引号
答案 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以匹配新的用户凭据。为了安全起见,您可以重新启动服务器。