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_USER
和 MASTER_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 模式并使用 mysql
或 msyql -u root
打开 mysql(数据库不需要密码)
- 现在使用此命令更改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<your-new-password>';
- 完成
我有一个 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_USER
和 MASTER_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 模式并使用mysql
或msyql -u root
打开 mysql(数据库不需要密码) - 现在使用此命令更改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<your-new-password>';
- 完成