php连接Docker中的mysql报错(HY000/2002): Connection refused
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php连接Docker中的mysql报错(HY000/2002): Connection refused相关的知识,希望对你有一定的参考价值。
参考技术A 在docker-compose.yml中加入linksphp中连接的 mysql host填写mysql 不用 localhost 或127.0.0.1
redis相同
PHP + MYSQL + Laravel - “SQLSTATE [HY000] [2002] 连接被拒绝” [重复]
【中文标题】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连接Docker中的mysql报错(HY000/2002): Connection refused的主要内容,如果未能解决你的问题,请参考以下文章
PHP连接MySQL的时候报错SQLSTATE[HY000] [2002] No such file or directory
TP连接数据库报错:SQLSTATE[HY000] [2002] No such file or directory
连接数据报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql
MySQL每隔一小会不操作报错ERROR 2013 (HY000) Lost connection to MySQL server during query问题
我无法在我的 docker compose 中进行 mysql php artisan 迁移。错误 SQLSTATE[HY000] [2002]