PHP + MYSQL + Laravel - “SQLSTATE [HY000] [2002] 连接被拒绝” [重复]
Posted
技术标签:
【中文标题】PHP + MYSQL + Laravel - “SQLSTATE [HY000] [2002] 连接被拒绝” [重复]【英文标题】:PHP + MYSQL + Laravel - "SQLSTATE[HY000] [2002] Connection refused " [duplicate] 【发布时间】:2021-05-11 05:24:54 【问题描述】:从后端的 php laravel 项目仪表板获取以下数据库连接问题,
"SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `sample` where `column_name` = 92ac89e3-91d1-4aee-a046-8b4e6c79e99a limit 1)"
来自文件:
/var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Connection.php
我的 docker-compose.yml 配置有:
services:
mysql:
image: mysql:latest
volumes:
- "./data/db:/var/lib/mysql"
ports:
- "8880:8880"
restart: always
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=test
- MYSQL_USER=root
- MYSQL_PASSWORD=password
.env 文件有以下配置: 数据库
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8880
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=password
关于缺少什么的任何想法。
尝试(编辑): 设置 DB_HOST=mysql 后,错误改变如下,
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (2054)
PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] (0)
显示用户,
mysql> select user,plugin,host from mysql.user;
+------------------+-----------------------+-----------+
| user | plugin | host |
+------------------+-----------------------+-----------+
| root | caching_sha2_password | % |
| root | mysql_native_password | 127.0.0.1 |
| mysql.infoschema | caching_sha2_password | localhost |
| mysql.session | caching_sha2_password | localhost |
| mysql.sys | caching_sha2_password | localhost |
| root | mysql_native_password | localhost |
| root | mysql_native_password | mysql |
+------------------+-----------------------+-----------+
也低于建议的步骤,但没有运气,
mysql> alter USER 'root'@'mysql' IDENTIFIED WITH mysql_native_password BY 'password';
Query OK, 0 rows affected (0.01 sec)
mysql> alter USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Query OK, 0 rows affected (0.01 sec)
有什么想法吗?
【问题讨论】:
您使用的是什么 PHP 版本?以下错误似乎相关:***.com/questions/50026939/… 【参考方案1】:这意味着您在 env 中的数据不正确, 尝试将主机从 127.0.0.1 更改为 mysql。 它对我有用 像这样:-
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=8880
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=password
【讨论】:
感谢@Mohamed 现在它显示以下错误,“SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法(SQL:select * fromtablename
where uuid
= ** * 限制 1) ◀"
默认情况下,由于某种原因,mysql 8 默认插件是 auth_socket。应用程序大多数时候都希望使用密码登录到您的数据库,因此您应该运行以下命令:- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your password';
在清理用户并使用相同的命令进行更改后就可以解决问题了。以上是关于PHP + MYSQL + Laravel - “SQLSTATE [HY000] [2002] 连接被拒绝” [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Ubuntu (laravel) 中使用 XAMPP 运行 PHP 和 MySQL
PHP 7.0 上的 Laravel 5.4:PDO 异常 - 找不到驱动程序 (MySQL)
PHP如何使用laravel 5将数据从数组保存到mysql
如何使用 laravel 或仅使用本机 php 更新来自 mysql 数据库的 JSON 数据?