当前位置: 首页 > 知识库问答 >
问题:

docker compose MySQL容器[2002]连接被拒绝

姚淳
2023-03-14

我试图为Nginx+PHP(Laravel)+MySQL构建docker组合容器,但我不断收到连接拒绝错误

Docker-compose.yml

version: "3"
services:

    nginx:
        image: nginx:latest
        ports:
            - '8080:80'
        volumes:
            - ./nginx:/etc/nginx/conf.d
            - ./logs/nginx:/var/logs/nginx
            - ./apps:/var/www/html
        depends_on:
            - php
        restart: always

    php:
        image: laradock/php-fpm:2.2-7.2
        volumes:
            - ./apps:/var/www/html
        restart: always
    mysql:
        image: mariadb
        ports:
            - '33060:3306'
        volumes:
            - ./db:/var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=root
        restart: always

./apps中,我有一个全新的Laravel应用程序,它具有基本的SQL设置

所有容器都运行时没有错误,我可以使用以下方法连接到MySQL容器

mysql -u 127.0.0.1 -P 33060 -u root -p

但当我试图从浏览器访问或将ssh直接导入php容器时,我总是得到错误2002。

我有nginx和mysql运行在服务器上,所以我使用8080和33060端口,不确定这是不是问题所在。

.env

DB_CONNECTION=mysql
DB_HOST=127.0.0
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=secret

谢谢你的帮助。

共有1个答案

方光华
2023-03-14

从这次Github事件中得到一些启示

我的第一个猜测是,当它需要通过非本地主机连接进行连接时,它正在努力查找mysql unix套接字文件。如果您正在使用compose文件启动它们,那么您可以连接到docker提供的dns名称(即,links:docker-mysql,将dns名称设置为docker-mysql)。所以你必须改变你的连接线:

-php-r“新PDO('mysql:host=localhost;port=3306;charset=utf8','root','123123');”

+php-r“新建PDO('mysql:host=docker-mysql;port=3306;charset=utf8','root','123123');”

通过将db_host更改为.env文件中的docker容器名称来解决此问题

DB_HOST=docker_mysql_1
 类似资料:
  • 所以我想部署我现有的laravel porject到我的digitalOcean vps我用户这个啧啧,我上传我的网站成功 我的环境文件也是 但问题是 我使用mysql创建并运行了,得到了这些错误,问题出在哪里 [Illumb\Database\QueryException]SQLSTATE[HY000][2002]连接被拒绝(SQL:select*from information\s chema

  • 问题内容: 我正在尝试使用PHP连接来连接phpmyadmin上的MySQL数据库。只是尝试查看连接是否成功,对连接没有什么幻想。我正在使用MAMP托管数据库,我尝试使用的连接是这样的: 我一直在使用邮递员进行测试,以查看连接是否正常工作,但是我一直收到以下错误消息: 连接失败:SQLSTATE [HY000] [2002]连接被拒绝 在收到以下错误消息之前: 连接失败:SQLSTATE [HY0

  • 我对Laravel还是个新手,但过去曾使用过几个框架。我正在使用一个Linux开发主机,并根据文档创建了一个docker容器,使用: 在此之后,我使用以下方法对其进行了改进: 我已经使用迁移创建了一个post表,它工作得很好,并使用tinker添加了一些示例条目。而且,这没有任何问题。但是当我试图使用该模型读取控制器中的所有表条目时,我得到一个MySQL连接拒绝错误。 经过相当多的研究,我一直没能

  • 问题内容: 我正在使用PHP 5.5和MAMP(从此处下载): 我有一个像这样的基本脚本: 当我运行此脚本时,出现以下错误: 我需要在MAMP或PHP中设置一些配置问题吗? 问题答案: 万一其他人遇到此问题,则MAMP上mysql的默认端口是,但php希望用于mysql的端口是。因此,您需要打开MAMP,转到首选项,并将MAMP的mysql端口更改为,然后 重新启动mysql服务器 。现在,使用h

  • 试图在localhost中建立从app容器到mysql容器的连接,出现连接拒绝异常 我们正在采取一种docker的方法来调用rest api服务来采用微服务的方法。我们正在建立应用程序容器和mysql容器之间的连接,同时我们编写了一个docker-compose文件,创建了mysql容器和应用程序容器,为这两个容器公开了端口。下面是运行docker-compose文件docker-compose

  • 我正在运行2个spring boot应用程序:一个客户端和rest-api。客户机与rest-api通信,rest-API与mongodb数据库通信。所有3层都在docker容器中运行。 我启动容器,通常指定docker文件中公开的端口,并将它们映射到主机上的端口,例如:-p 7070:7070,其中7070是docker文件中公开的端口。 当我通过< code > Java-jar[applic