SQLSTATE[HY000] [2002] Connection refused报错 PHP连接docker容器中的mysql
Laradock 是基于 Docker 提供的完整 PHP 本地开发环境
在框架中连接 MySQL 时 报错
SQLSTATE[HY000] [2002] Connection refused
主要还是是对 Docker 容器的隔离机制理解不够,每个容器之间都是隔离的,如果有相互依赖的服务,则需要进行显示的关联,比如使用选项
--link。
同理,使用docker-compose时候,容器之间进行关联是采用类似如下的方式:
# docker-compose.xml 缩减版
version: '2'
services:
...
php:
build: ./php
...
links:
- "mysql"
mysql:
build: ./mysql
ports:
- "3306:3306"
environment:
MYSQL_PASSWORD: root
注意,关键地方来了:测试连接 MySQL 的代码其实是运行在 PHP 对应的容器里,而 MySQL 服务是在它自己对应的容器里,当我们的 host 填写 127.0.0.1 时候,其实对应的是 PHP 容器里面,所以不可能找到对应的服务,从而引起上面拒绝连接的错误。
那么,怎么进行连接呢?
其实容器之间关联之后,可以通过容器名进行连接。
在上面的 docker-compose.xml 文件中,MySQL 服务对应的容器名是 mysql,PHP 容器与它关联的名字也是 mysql ,所以把 127.0.0.1 改成 mysql 再进行连接即可。
# thinkphp项目 修改database.php文件
'hostname' => 'mysql',
# Laravel 项目修改 .env 文件
DB_HOST=mysql
SQLSTATE[HY000] [2002] Connection refused报错 PHP连接docker容器中的mysql的更多相关文章
- 【踩坑经历】SQLSTATE[HY000] [2002] Connection refused
使用docker搭建lnmp环境,使用的是分容器的搭建方案 框架使用thinkphp,想要连接数据MySQL,一直显示"SQLSTATE[HY000] [2002] Connection r ...
- SQLSTATE[HY000] [2002] Connection refused
//域名绑定到模块 '__domain__' => [ 'admin' => 'admin', 'post' => 'api', 'user' => 'index', 'www ...
- Navicat 远程连接Docker容器中的mysql 报错:1251 - Client does not support authentication protocol 解决办法。
出现这个问题 首先进入 1.docker exec -it mysql02 bash //mysql02是mysql容器的别名 2.mysql -uroot -p 3.输入密码 4.进入my ...
- 客户端远程连接docker容器中的mysql 报1251错误
1.启动容器: [root@localhost ~]# docker run -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql2.进入容器: [r ...
- MySQL 连接超时:报错SQLSTATE[HY000] [2002] Connection timed out解决
当你的代码部署到服务器里的时候,你的mysql 的host 值 应该为 127.0.0.1 而不是 你的服务器ip 不然就会报错. 其实当你的代码进入到服务器里的时候,mysql和代码是相当于在同一个 ...
- MySQL 连接超时:报错SQLSTATE[HY000] [2002] Connection timed out
在网上找了一堆,结果全部是错的 后来,我明白了其实是设置问题. 当你的代码部署到服务器里的时候,你的mysql 的host 值 应该为 127.0.0.1 而不是 你的服务器ip 不然就会报错. 其实 ...
- php连接docker启动的mysql容器报错:(HY000/2002): Connection refused的解决办法
vim libraries/config.default.php 查找到localhost/127.0.0.1字符[一般来说默认都是localhost] :/localhost 替换成容器名,例如我定 ...
- php连接docker运行的mysql,显示(HY000/2002): Connection refused的解决办法
php要连接docker中运行的mysql是不能用localhost, 127.0.0.1来连接的,因为每个docker运行容器的localhost 127.0.0.1都是自己容器本身,不是mysql ...
- PHP连接MySQL报错:SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket 'MySQL' (2)
如下所示,PHP连接MySQL报错: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket 'MySQL' ...
- TP连接数据库报错:SQLSTATE[HY000] [2002] No such file or directory
连接数据库报错:“SQLSTATE[HY000] [2002] No such file or directory”. 出现这个问题的原因是PDO无法找到mysql.sock或者mysqld.soc ...
随机推荐
- Qt编写安防视频监控系统60-子模块4云台控制
一.前言 云台控制是一个很老很基础的模块了,视频监控系统中必备的特殊模块之一,可以对选中的通道的摄像机(ONVIF协议),进行云台控制,可以控制球机的上下左右等各个方位的移动,还可以调节变倍步长,至于 ...
- spark (一) 入门 & 安装
目录 基本概念 spark 核心模块 spark core (核心) spark sql (结构化数据操作) spark streaming (流式数据操作) 部署模式 local(本地模式) sta ...
- Yano 的 2024 观影总结
前言 2024 年马上就要过去了,总结下自己在 2024 年看过的影视作品. PS:我是用 Cursor 写的,所有有一些文字可能是 Cursor 自动补全的,不是我写的 0_o 电影 <怪物& ...
- Solution -「LOCAL」Minimal DFA
\(\mathscr{Description}\) Private link. 令 \(\Sigma=\{\texttt a,\texttt b\}\),对于所有形式语言 \(L\subset ...
- 国家和地区代码列表,ISO 3166-1:2006
本文根据ISO 3166-1:2006(International Standard Norme Internationale) 英文版(含2007年补充说明)整理.与ISO 3166-1:1997相 ...
- 让 LLM 来评判 | 选择 LLM 评估模型
基础概念 这是 让 LLM 来评判 系列文章的第一篇,敬请关注系列文章: 基础概念 选择 LLM 评估模型 设计你自己的评估 prompt 评估你的评估结果 奖励模型相关内容 技巧与提示 什么是评估模 ...
- Angular-教程
https://www.runoob.com/angularjs/angularjs-tutorial.html https://www.runoob.com/angularjs2/angularjs ...
- ElasticSearch入门 第二篇
集群配置----------------------------- ElasticSearch共有两个配置文件,都位于config目录下,分别是elasticsearch.yml和logging.ym ...
- RocketMQ原理—3.源码设计简单分析下
大纲 1.Producer作为生产者是如何创建出来的 2.Producer启动时是如何准备好相关资源的 3.Producer是如何从拉取Topic元数据的 4.Producer是如何选择Message ...
- 对比使用DeepSeek与文新一言,了解DeepSeek的关键技术论文
DeepSeek是国内大模型技术的新秀,最近也在业界和媒体界火爆出圈,所以想学习一下其技术. 大模型时代,学习知识,当然首先想到利用大模型,由于在过去一年,对DeepSeek使用不多,所以想和文新一言 ...