php连接Docker中的mysql报错(HY000/2002): Connection refused

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php连接Docker中的mysql报错(HY000/2002): Connection refused相关的知识,希望对你有一定的参考价值。

参考技术A 在docker-compose.yml中加入links

php中连接的 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 * from tablename 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]

docker 启动MySQL