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

nig*_*old 4 credentials mariadb laravel

我有一个与 Laravel 的 stange 。我有一个坏习惯,就是用 laravel 项目在 virtual box 上创建项目进行测试。(debian last stable 目前是 9.1、nginx、php7.1、MariaDB)。

在你告诉我去某个地方阅读另一篇文章之前,请阅读所有内容,我可能错过了这篇文章,但我尝试了很多我尝试了大部分可能对其他人有用的解决方案,但在我的情况下却没有(谢谢)。

我尝试了不同的事情,但总是以打破一切并悬停(这是正常的......)而告终。

我已经尝试了许多安装,但从未遇到任何问题

php artisan migrate
Run Code Online (Sandbox Code Playgroud)

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

[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)
Run Code Online (Sandbox Code Playgroud)

和这个:

[PDOException]
  SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'
Run Code Online (Sandbox Code Playgroud)

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

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=Password2
Run Code Online (Sandbox Code Playgroud)

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

SHOW DATABASEs;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
Run Code Online (Sandbox Code Playgroud)

在 MariaDB 中查找代码错误 1698 时,他们告诉我该代码在尝试不使用密码连接时出现。

所以我的问题是为什么要这样做?我尝试了一个新项目,刚刚安装并执行了 artisan 命令行,它没有任何改变。

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

预先感谢您的帮助,并为我糟糕的英语感到抱歉。

mat*_*zdz 13

对我来说,'root' 用户无法连接。以下是解决方法:

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

2.创建新用户

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)

3.grant privilages 给你的 Laravel 数据库

GRANT ALL PRIVILEGES ON database.* TO 'user'@'localhost';
Run Code Online (Sandbox Code Playgroud)

或授予所有表的特权

GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
Run Code Online (Sandbox Code Playgroud)

4.flush 特权以进行更改

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

5.退出mysql控制台

exit
Run Code Online (Sandbox Code Playgroud)

6.编辑.env文件,更新你的MASTER_DB_USERMASTER_DB_PASS匹配你的新用户

7. 运行迁移来测试

php artisan migrate
Run Code Online (Sandbox Code Playgroud)


nig*_*old 1

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

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

似乎问题出在 MariaDB 上...即使在 mysql_secure_installation 命令之后,我也可以使用或不使用密码连接到 root...我会解决这个问题...

多谢。