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

Docker环境下CodeIgniter连接phpMyAdmin MySQL报错连接拒绝求助

Docker环境下CodeIgniter连接MySQL容器报错(2002/Connection refused)解决方法

核心问题说明

phpMyAdmin只是数据库管理界面,实际提供数据库服务的是MySQL容器,连接拒绝的根源是容器间网络配置错误或数据库地址填写不当。


具体解决步骤

1. 修正数据库地址配置

容器内的localhost/127.0.0.1指向容器自身,宿主机IP(如172.20.0.3)也无法直接用于容器间通信,需改用MySQL容器的容器名/服务名作为hostname:

  • 若用docker-compose部署,直接写docker-compose.yml中MySQL服务的名称(例:mysql)
  • 若单独启动容器,用容器名称(需确保和CodeIgniter容器在同一网络)

修改database.php配置:

$db['default'] = array(
    'dsn'      => '',
    'hostname' => 'mysql',  // 替换为你的MySQL容器名/服务名
    'username' => 'root',       
    'password' => 'testpassword',
    'database' => 'sortdb',     
    'dbdriver' => 'mysqli',   
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt'  => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

2. 确保容器在同一Docker网络

  • 查看容器所属网络:docker inspect <容器名>,查看Networks字段
  • 若不在同一网络,将CodeIgniter容器连接到MySQL容器所在网络:
    docker network connect <MySQL容器所在网络名> <CodeIgniter容器名>
    
  • 用docker-compose部署时,同一compose文件内的服务默认在专属网络,无需额外配置

3. 验证容器间网络连通性

进入CodeIgniter容器,测试与MySQL容器的连通:

# 测试ping连通性
docker exec -it <CodeIgniter容器名> ping mysql

# 测试MySQL连接
docker exec -it <CodeIgniter容器名> mysql -h mysql -u root -p testpassword

若能成功连接,说明网络无问题,再检查CodeIgniter配置细节。

4. 检查MySQL容器状态

  • 查看MySQL容器日志,确认服务正常启动:
    docker logs <MySQL容器名>
    
    日志中需出现ready for connections提示
  • 确认root用户允许远程连接:
    进入MySQL容器执行SQL:
    SELECT user, host FROM mysql.user;
    
    确保root用户的host为%(允许所有主机)或包含CodeIgniter容器的网络段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:02:54