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

Laradock中MySQL容器无法启动及域名解析失败问题求助

解决Laradock中MySQL启动失败及DNS解析错误问题

一、修复MySQL初始化失败问题

1. 修正mysql_native_password认证配置

打开Laradock根目录下的.env文件,确保以下配置正确:

MYSQL_VERSION=8.0 # 或你使用的具体版本
MYSQL_ROOT_PASSWORD=your_custom_root_password # 设置非空密码
MYSQL_ALLOW_EMPTY_PASSWORD=no

编辑docker-compose.yml,找到mysql服务块,添加命令参数指定认证插件:

services:
  mysql:
    ...
    command: --default-authentication-plugin=mysql_native_password
    ...

2. 修复MySQL数据目录权限及清理无效Volume

  • 停止所有Laradock容器:
    docker compose down
    
  • 删除MySQL关联的Docker Volume(注意之前误删的是mssql的volume,现在需操作mysql的):
    docker volume rm laradock_mysql
    
  • 修复本地数据目录权限(Laradock默认数据目录为laradock/data/mysql):
    sudo chown -R 999:999 ./data/mysql
    
    (999是MySQL容器内部运行用户的UID,确保容器能读写该目录)

二、解决DNS解析错误(php_network_getaddresses: getaddrinfo failed)

1. 确保容器在同一网络

检查docker-compose.yml中mysql、adminer、workspace(或你的应用容器)的网络配置,确保它们都加入同一个自定义网络,示例如下:

services:
  mysql:
    networks:
      - default
  adminer:
    networks:
      - default
  workspace:
    networks:
      - default

2. 强制配置Docker Compose使用公共DNS

在.env文件中添加DNS配置:

COMPOSE_DNS=8.8.8.8
COMPOSE_DNS=8.8.4.4

3. 数据库连接使用容器名而非localhost

连接数据库时,主机名填写mysql(即MySQL容器的服务名),而非localhost或127.0.0.1。比如在Adminer中,服务器地址填mysql,用户名填root,密码填你在.env中设置的MYSQL_ROOT_PASSWORD。

三、验证修复结果

  1. 重新启动Laradock服务:
    docker compose up -d mysql adminer
    
  2. 查看MySQL启动日志,确认无错误:
    docker compose logs mysql
    
  3. 访问Adminer,使用mysql作为服务器地址登录,检查是否能正常连接数据库。

内容的提问来源于stack exchange,提问作者Ivan Kachula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:16:06