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

Laravel 5.4 access denied for user root@localhost on migrate

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

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

我尝试了不同的东西,总是在结束时打破一切并进行悬停(这很正常...)。

我已经尝试了很多安装并且从来没有遇到任何问题

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 时,他们告诉我当它尝试不使用密码连接时会出现此代码。

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

我想避免进行全新 os 安装。

在此先感谢您的帮助,抱歉我的英语不好。

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

php artisan config:cache

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

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

php artisan config:clear

一旦你可以清除缓存,请:

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

希望这对你有用!

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

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

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

非常感谢。

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

1.login 到 mysql 控制台 $ mysql -u root -p

2.create 新用户

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

3.grant 对您的 laravel 数据库的权限

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

或授予所有表的权限

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

4.flush 进行更改的权限

FLUSH PRIVILEGES;

5.exit mysql 控制台

exit

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

7.run 迁移测试

php artisan migrate

如何this article解释,认证是使用auth_socket,所以你必须改变它至 mysql_native_password

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

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

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

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