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的更多相关文章

  1. 【踩坑经历】SQLSTATE[HY000] [2002] Connection refused

    使用docker搭建lnmp环境,使用的是分容器的搭建方案 框架使用thinkphp,想要连接数据MySQL,一直显示"SQLSTATE[HY000] [2002] Connection r ...

  2. SQLSTATE[HY000] [2002] Connection refused

    //域名绑定到模块 '__domain__' => [ 'admin' => 'admin', 'post' => 'api', 'user' => 'index', 'www ...

  3. 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 ...

  4. 客户端远程连接docker容器中的mysql 报1251错误

    1.启动容器: [root@localhost ~]# docker run -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql2.进入容器: [r ...

  5. MySQL 连接超时:报错SQLSTATE[HY000] [2002] Connection timed out解决

    当你的代码部署到服务器里的时候,你的mysql 的host 值 应该为 127.0.0.1 而不是 你的服务器ip 不然就会报错. 其实当你的代码进入到服务器里的时候,mysql和代码是相当于在同一个 ...

  6. MySQL 连接超时:报错SQLSTATE[HY000] [2002] Connection timed out

    在网上找了一堆,结果全部是错的 后来,我明白了其实是设置问题. 当你的代码部署到服务器里的时候,你的mysql 的host 值 应该为 127.0.0.1 而不是 你的服务器ip 不然就会报错. 其实 ...

  7. php连接docker启动的mysql容器报错:(HY000/2002): Connection refused的解决办法

    vim libraries/config.default.php 查找到localhost/127.0.0.1字符[一般来说默认都是localhost] :/localhost 替换成容器名,例如我定 ...

  8. php连接docker运行的mysql,显示(HY000/2002): Connection refused的解决办法

    php要连接docker中运行的mysql是不能用localhost, 127.0.0.1来连接的,因为每个docker运行容器的localhost 127.0.0.1都是自己容器本身,不是mysql ...

  9. 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' ...

  10. TP连接数据库报错:SQLSTATE[HY000] [2002] No such file or directory

     连接数据库报错:“SQLSTATE[HY000] [2002] No such file or directory”. 出现这个问题的原因是PDO无法找到mysql.sock或者mysqld.soc ...

随机推荐

  1. Qt音视频开发43-采集屏幕桌面并推流(支持分辨率/矩形区域/帧率等设置/实时性极高)

    一.前言 采集电脑屏幕桌面并推流一般是用来做共享桌面.远程协助.投屏之类的应用,最简单入门的做法可能会采用开个定时器或者线程抓图,将整个屏幕截图下来,然后将图片传出去,这种方式很简单但是性能要低不少, ...

  2. SHA256 64 位加密

    /// <summary> /// SHA256 64位加密 /// </summary> /// <param name="input">&l ...

  3. 【OpenGL ES】GLSL基础语法

    1 前言 ​ 本文将介绍 GLSL 中数据类型.数组.结构体.宏.运算符.向量运算.矩阵运算.函数.流程控制.精度限定符.变量限定符(in.out.inout).函数参数限定符等内容,另外提供了一个 ...

  4. IM扫码登录技术专题(四):你真的了解二维码吗?刨根问底、一文掌握!

    本文引用了ELab团队.腾讯大讲堂两个公众号分享的文章内容,引用内容见文末参考资料,感谢原作者的无私分享. 1.引言 对于市面上主流的IM来说,跟二维码有关的功能,比如扫码加好友.扫码登陆.扫码加群等 ...

  5. 使用pytorch从零开始实现一个简单的gpt

    使用pytorch从零开始实现一个简单的gpt 本文由prompt引导ChatGPT生成简易版gpt模型,根据比较关心的问题,使用了以下的prompt进行内容和代码的生成: prompt:->如 ...

  6. springboot+springsecurity项目

    https://blog.csdn.net/qq_36748248/article/details/120932954 https://blog.csdn.net/weixin_41207479/ar ...

  7. w3cschool-微信小程序开发文档-指南

    https://www.w3cschool.cn/weixinapp/9wou1q8j.html https://www.w3cschool.cn/miniappbook/ 微信小程序 小程序简介 小 ...

  8. Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)

    题目链接:Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2) 总结:Bwa两发,C读假题.发挥很一般,补题感觉到E都是能做的,红温. A. ...

  9. Palworld幻兽帕鲁世界参数修改最佳实践(Ubuntu)

    本文为您介绍对Palworld游戏世界参数进行修改的最佳实践. 操作场景 本文以Ubuntu操作系统为例,为您介绍通过Palworld专有镜像一键部署Palworld服务器后对游戏世界参数进行修改的具 ...

  10. SQL注入之布尔盲注

    SQL注入之布尔盲注 一.布尔盲注原理 布尔盲注是一种基于布尔逻辑的SQL注入攻击技术,其核心原理是通过构造特定的SQL查询语句,利用应用程序对查询结果的不同响应(通常是真或假)来逐步推断数据库中的信 ...