迁移时用户root @ localhost拒绝Laravel 5.4访问

时间:2017-08-02 21:44:13

标签: laravel mariadb credentials

我和Laravel有一个关系。我有一个习惯,就是使用laravel项目在虚拟盒子上创建项目进行测试。 (debian最后稳定目前为9.1,nginx,php7.1,MariaDB)。

在你告诉我去某地阅读另一篇文章之前,请阅读所有内容,我已经错过了帖子但我尝试了很多我尝试了大部分可能对其他人有效的解决方案,但他们不在我的案件(谢谢)。

我尝试了不同的东西,总是打破一切并做悬停(这是正常的......)。

我已经尝试过多次安装,但从来没有遇到任何问题

php artisan migrate

直到今天。我准备了我的迁移文件并尝试了迁移,我收到了这条消息:

[Illuminate\Database\QueryException]
  SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost' (SQL: sele
  ct * from information_schema.tables where table_schema = test and table_nam
  e = migrations)

这一个:

[PDOException]
  SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'

我一如既往地做了所有事情,检查了.env文件中的凭据并对其进行了测试。没问题。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=Password2

数据库确实存在,这个名称不能错:

SHOW DATABASEs;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+

在MariaDB中查找代码错误1698时,他们告诉我这个代码在没有密码时尝试连接时出现。

所以我的问题是它为什么这样做?我尝试了一个新项目,只是安装并完成了工匠命令行,它什么都没改变。

我想避免进行新的操作系统安装。

先谢谢你的帮助,对不起我的英语不好。

7 个答案:

答案 0 :(得分:2)

对我来说,“ root”用户无法连接。解决方法如下:

1。登录mysql控制台$ mysql -u root -p

2。创建新用户

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

3。将特权授予您的laravel数据库

GRANT ALL PRIVILEGES ON database.* TO 'user'@'localhost';

或授予所有表特权

GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';

4。刷新特权以进行更改

FLUSH PRIVILEGES;

5。退出mysql控制台

exit

6.edit .env文件,更新您的MASTER_DB_USERMASTER_DB_PASS以匹配您的新用户

7。运行迁移以进行测试

php artisan migrate

答案 1 :(得分:1)

请稍后清除缓存:

php artisan config:cache
php artisan config:clear
php artisan cache:clear

希望这对你有用!

答案 2 :(得分:1)

所以我解决了我的问题......似乎我需要创建一个新的数据库帐户来写入数据库而不能使用root ...

我用另一台虚拟机测试了它,如果我创建了一个新帐户,它就可以正常工作......

似乎问题出在MariaDB上......即使在mysql_secure_installation命令之后,我也可以使用或不使用密码连接到root ...我将继续处理...

非常感谢。

答案 3 :(得分:0)

您可以尝试运行以下artisan命令:

php artisan config:cache

答案 4 :(得分:0)

您是否在第一次尝试运行php artisan时更新了密码?

可以像清除配置缓存一样简单

php artisan config:clear

答案 5 :(得分:0)

this article 怎么解释,认证是使用auth_socket,所以你必须把它改成mysql_native_password

用root用户运行这个sql到mysql中:

ALTER USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 
FLUSH PRIVILEGES;

答案 6 :(得分:0)

我也遇到了同样的情况。我做了以下步骤来更改 root 用户的密码。

  • 使用 sudo su 进入 Sudo 模式并使用 mysqlmsyql -u root 打开 mysql(数据库不需要密码)
  • 现在使用此命令更改密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<your-new-password>';
  • 完成