You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10下Laravel Sail环境PHPMyAdmin无法连接MariaDB排查

Laravel Sail环境下PHPMyAdmin无法连接MariaDB的排查方案

问题场景

Windows10系统的Laravel Sail Docker环境中,PHPMyAdmin无法连接MariaDB数据库,报错截图如下:
连接报错截图

提供的docker-compose.yml配置如下:

services:
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.1
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.1/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
            - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
            IGNITION_LOCAL_SITES_PATH: '${PWD}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mariadb
            # - redis
            - mailpit
            - phpmyadmin
    mariadb:
        image: 'mariadb:10'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: '%'
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - 'sail-mariadb:/var/lib/mysql'
            - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
        networks:
            - sail
        healthcheck:
            test:
                - CMD
                - mysqladmin
                - ping
                - '-p${DB_PASSWORD}'
            retries: 3
            timeout: 5s
    # redis:
    #     image: 'redis:alpine'
    #     ports:
    #         - '${FORWARD_REDIS_PORT:-6379}:6379'
    #     volumes:
    #         - 'sail-redis:/data'
    #     networks:
    #         - sail
    #     healthcheck:
    #         test:
    #             - CMD
    #             - redis-cli
    #             - ping
    #         retries: 3
    #         timeout: 5s
    mailpit:
        image: 'axllent/mailpit:latest'
        ports:
            - '${FORWARD_MAILPIT_PORT:-1025}:1025'
            - '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025'
        networks:
            - sail
    phpmyadmin:
        image: 'phpmyadmin:latest'
        ports:
            - 8080:80
        networks:
            - sail
        environment:
            - PMA_ARBITRARY=1
networks:
    sail:
        driver: bridge
volumes:
    sail-mariadb:
        driver: local
    # sail-redis:
    #     driver: local

排查与修复方案

1. 补充PHPMyAdmin的数据库连接配置

当前PHPMyAdmin服务未指定目标数据库的连接信息,在Docker内部网络中,服务间可通过服务名直接访问。修改phpmyadmin服务的环境变量:

phpmyadmin:
    image: 'phpmyadmin:latest'
    ports:
        - 8080:80
    networks:
        - sail
    environment:
        - PMA_ARBITRARY=1
        - PMA_HOST=mariadb  # 使用MariaDB服务名作为主机地址
        - PMA_PORT=3306     # MariaDB容器内部端口
        - PMA_USER=root     # 数据库用户名,可替换为你的DB_USERNAME
        - PMA_PASSWORD=${DB_PASSWORD}  # 对应.env中的数据库密码
    depends_on:
        - mariadb  # 确保MariaDB先启动

2. 调整服务启动依赖

原配置中laravel.test依赖phpmyadmin,这是不必要的,且可能导致启动顺序混乱。修改laravel.test的depends_on,移除phpmyadmin:

laravel.test:
    # ... 其他配置
    depends_on:
        - mariadb
        # - redis
        - mailpit

3. 连接PHPMyAdmin时的正确参数

访问http://localhost:8080后,填写以下连接信息:

  • 主机名/地址:mariadb(不是localhost或127.0.0.1,因为PHPMyAdmin在容器内,需要访问Docker网络中的MariaDB服务)
  • 用户名:root或你在.env中设置的DB_USERNAME
  • 密码:.env文件中的DB_PASSWORD

4. 验证数据库服务状态

如果仍无法连接,可通过以下命令检查MariaDB是否正常运行:

  • 进入MariaDB容器,登录数据库:
    sail exec mariadb mysql -u root -p
    
  • 查看容器日志,排查启动错误:
    sail logs mariadb
    sail logs phpmyadmin
    

内容的提问来源于stack exchange,提问作者Ryan H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:45:00