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

Docker链接phpMyAdmin与MySQL容器遇连接拒绝问题求助

解决phpMyAdmin连接MySQL容器时的"Connection refused"错误(无需docker-compose)

我来帮你搞定这个头疼的问题!你遇到的mysqli_real_connect(): (HY000/2002): Connection refused报错,大多是由几个常见原因导致的,咱们一步步排查解决:

1. 先确认MySQL容器是否完全启动就绪

MySQL容器启动后需要一点时间初始化数据库和服务,如果你紧接着就启动phpMyAdmin,很可能MySQL还没准备好接受连接。

  • 先查看MySQL容器的日志,确认它已经就绪:

    docker logs mysql
    

    你要找日志里类似这样的内容:mysqld: ready for connections.,出现这句话才说明MySQL可以正常接受连接了。

  • 如果还没就绪,耐心等1-2分钟再尝试登录;或者先停掉并删除phpMyAdmin容器,等MySQL就绪后再重新启动它:

    docker stop myadmin && docker rm myadmin
    docker run --name myadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin
    

2. 显式指定phpMyAdmin的连接配置(避免默认值出错)

虽然用了--link mysql:db,但有时候需要明确告诉phpMyAdmin要连接的主机和端口,启动时加上这两个环境变量更稳妥:

docker run --name myadmin -d --link mysql:db -p 8080:80 \
  -e PMA_HOST=db \
  -e PMA_PORT=3306 \
  phpmyadmin/phpmyadmin

这里PMA_HOST=db对应你--link里设置的别名db,MySQL默认端口是3306,这样能确保phpMyAdmin不会用错连接地址。

3. 检查MySQL容器的绑定地址设置

有时候MySQL默认只绑定127.0.0.1,导致容器之间无法互通。启动MySQL容器时加上--bind-address=0.0.0.0,让它监听所有网络地址:

docker stop mysql && docker rm mysql
docker run --name mysql -e MYSQL_ROOT_PASSWORD=admin -d --bind-address=0.0.0.0 mysql

之后再重新启动phpMyAdmin容器,尝试连接。

4. 改用Docker自定义网络(替代老旧的--link,更稳定)

虽然你不想用docker-compose,但--link其实是Docker比较旧的特性,现在更推荐用自定义网络来实现容器间通信,这种方式更稳定,容器之间还能直接用容器名互相访问:

  • 先创建一个自定义网络:

    docker network create mysql-network
    
  • 启动MySQL容器并加入这个网络:

    docker run --name mysql -e MYSQL_ROOT_PASSWORD=admin -d --network mysql-network mysql
    
  • 启动phpMyAdmin容器并加入同一个网络,直接用容器名mysql作为连接主机:

    docker run --name myadmin -d -p 8080:80 \
      -e PMA_HOST=mysql \
      --network mysql-network \
      phpmyadmin/phpmyadmin
    

最后登录的小提醒

登录phpMyAdmin时,用户名填root,密码填你设置的admin,主机名不用手动修改(会自动用我们配置的db或mysql),直接提交就能正常连接了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:47:40