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

Docker部署Jira连接宿主机MySQL 5.6.44时连接被拒绝求助

解决Jira Docker容器连接本地MySQL失败的问题

我来帮你排查这个连接失败的问题,核心原因其实是Docker容器的网络隔离特性——你在Jira配置里填的localhost指向的是Jira容器本身,而不是你的CentOS宿主机上的MySQL服务。咱们一步步来解决:

1. 修正数据库连接的主机地址

首先把Jira配置里的主机名从localhost改成你的CentOS虚拟机的实际内网IP地址(比如192.168.1.100这类),而不是用localhost或者0.0.0.0。

原因很简单:Docker容器默认运行在独立的网络空间里,容器内的localhost只代表容器自己,根本访问不到宿主机的MySQL服务。

2. 检查MySQL的绑定地址配置

打开你的MySQL配置文件(通常是/etc/my.cnf或/etc/mysql/my.cnf),找到bind-address参数:

  • 如果它的值是127.0.0.1,那MySQL只会监听本地回环地址,容器根本连不上
  • 把它改成0.0.0.0(允许所有地址访问)或者你的宿主机内网IP,保存后重启MySQL服务:
    systemctl restart mysqld
    

3. 验证容器到宿主机的连通性

进入Jira容器内部,测试能不能访问到宿主机的MySQL端口:

docker exec -it jira bash
telnet 你的宿主机IP 3306

如果telnet失败,检查宿主机的防火墙是否开放了3306端口:

firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

4. 确认MySQL用户权限(可选,但保险)

你创建的jiradbuser@'%'已经允许从任何地址连接,但可以再验证一下:

SELECT user, host FROM mysql.user WHERE user='jiradbuser';

确保host列的值是%,或者包含你的Docker容器所在的网段(从日志看你的容器IP是172.18.0.3,对应的网段可能是172.18.0.0/16)。

5. 检查JDBC驱动的放置位置

你把驱动放到了/var/atlassian/jira/lib,但这个目录挂载到容器的/var/atlassian/jira(这是Jira的数据目录),而Jira的应用lib目录通常是/opt/atlassian/jira/lib。如果前面的网络问题解决后还是报错,你可以:

  • 直接把驱动复制到容器内的lib目录:
    docker cp /var/atlassian/jira/lib/mysql-connector-java-5.1.38.jar jira:/opt/atlassian/jira/lib/
    
  • 或者修改docker-compose.yml,添加一个volume挂载应用lib目录:
    jira:
      image: 'cptactionhank/atlassian-jira-software:latest'
      container_name: jira
      restart: unless-stopped
      healthcheck:
        disable: true
      volumes:
        - '/var/atlassian/jira:/var/atlassian/jira'
        - '/var/atlassian/jira/lib:/opt/atlassian/jira/lib'
    

修改后记得重启容器。

按这个顺序排查,最可能的问题就是网络地址配置错误,先解决这个应该就能连上了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:18:52