mysql - SQLSTATE[HY000] [2002] 连接被拒绝。使用 WSL2 Ubuntu 18.04 托管在 Docker 上的 Laravel API

标签 mysql laravel docker ubuntu windows-subsystem-for-linux

我正在尝试通过 postman 为我在 docker 中运行的 laravel 应用程序创建一个新项目。 docker 容器是通过提供开发环境的 ddev 自动生成的,并使用 WSL2 Ubuntu 18.04 运行。所以这里有一个问题,我可以很好地“php artisan migrate”我什至可以“php artisan tinker”并创建一个很好但是当从我的主机通过 postman 发送请求时我收到这个错误。

Illuminate\Database\QueryException: SQLSTATE[HY000] [2002] Connection refused (SQL: select count(*) as aggregate from users where id = 1) in file /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 671

我昨天用这个 https://www.craigforrester.com/posts/windows-subsystem-for-linux-disable-ipv6-for-apt/ 解决了这个问题但是当我今天再次遇到这个错误时试了一下,但运气不好。

我尝试过的事情:

我的想法: 我 99% 确定这不是凭据问题,更确切地说是路由问题,因为就像我在第一段中所说的那样,我可以从 WSL Ubuntu 迁移和创建。我认为路由问题要么是从我的主机到 WSL,要么是从 WSL 到 mysql。但是话又说回来,我的请求似乎正在通过,否则我会遇到某种 PHP 连接错误,而不是 MySQL 连接错误

最佳答案

不久前我遇到了这个问题,结果我必须将 DB_HOST 设置为 docker mysql 容器的名称:-

docker-compose.yml:-

version: '3.1'

services:
    php:
        build:
            context: .
            dockerfile: .docker/Dockerfile
        image: larastock
        ports:
            - 8000:80
        restart: always
        volumes:
            - .:/var/www/html
        networks:
            - larastock
    mysql:
        image: mysql:8.0
        volumes:
            - db_data:/var/lib/mysql
        restart: always
        ports:
            - 3306:3306
        environment:
            MYSQL_DATABASE: larastock
            MYSQL_USER: root
            MYSQL_PASSWORD: password
            MYSQL_ROOT_PASSWORD: password
        networks:
            - larastock
    phpmyadmin:
        depends_on:
            - mysql
        image: phpmyadmin/phpmyadmin
        restart: always
        ports:
            - 8001:80
        environment:
            PMA_HOST: mysql
            MYSQL_ROOT_PASSWORD: password 
        networks:
            - larastock
networks:
    larastock:
volumes:
    db_data:

.env:-

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=larastock
DB_USERNAME=root
DB_PASSWORD=password

关于mysql - SQLSTATE[HY000] [2002] 连接被拒绝。使用 WSL2 Ubuntu 18.04 托管在 Docker 上的 Laravel API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63044191/

相关文章:

mysql - 如何在Mysql中获取客户端当前日期时间

php - 比通常的 phpagi 运行时间更长

php - Laravel使用 Eloquent 关系选择链接表的最后一行

java - 读取 Dockerfile 命令 : Is it possible to cd into a jar file? 时遇到问题,tar -cf 有何作用?

php - 从 PHP 变量到 MySQL 的 NULL 日期值

php - 多表删除查询不起作用

laravel - Lumen PHP Artisan配置:cache not found

php - array_key_exists() 错误/编辑供应商文件

docker - 无法在Hyperledger Fabric网络V 0.19上启动网络。错误:REQUEST_TIMEOUT命令失败

Openshift 中的 PostgreSQL 不会执行入口点并且无法启动数据库