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

同一RHEL6.9机器部署SonarQube5.6.7实例遇H2数据库连接错误

排查SonarQube 5.6.7 H2数据库连接错误的思路与解决办法

我来帮你一步步梳理这个问题——你在同一台RHEL 6.9机器上部署SonarQube 5.6.7,用H2做测试库,改了端口但启动时遇到数据库连接问题。从你给出的日志来看,进程启动到H2数据库初始化那一步就没后续了,大概率是端口、权限或者配置细节出了问题,咱们逐个排查:

1. 先确认9093端口是否被占用

虽然你配置了sonar.embeddedDatabase.port=9093,但保不齐这个端口已经被其他进程占用。在机器上执行以下命令检查:

netstat -tulpn | grep 9093
# 或者用更现代的ss命令
ss -tulpn | grep 9093

如果输出里有其他进程占用9093,要么杀掉那个进程,要么把sonar.embeddedDatabase.port改成其他未被占用的端口(比如9094),然后重启SonarQube。

2. 检查SonarQube数据目录的权限

SonarQube运行的用户需要对/datos/sonarqube-5.6.7/data目录有读写权限,H2的数据库文件就存在这个目录下。假设你用sonar用户运行SonarQube,执行以下命令修复权限:

chown -R sonar:sonar /datos/sonarqube-5.6.7/data
chmod -R 755 /datos/sonarqube-5.6.7/data

改完权限后重启SonarQube试试。

3. 补全H2数据库的JDBC URL配置

从日志里看到H2的连接URL是jdbc:h2:tcp://localhost:9093/,这里缺了数据库名称!SonarQube默认的嵌入式H2数据库名是sonar,你需要在sonar.properties里手动指定完整的连接信息:

sonar.jdbc.url=jdbc:h2:tcp://localhost:9093/sonar
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

添加这几行后,重启SonarQube,应该能正确识别并连接到H2数据库。

4. 排查SELinux和防火墙的限制

RHEL 6.9的SELinux可能会阻止SonarQube绑定9093端口,或者阻止本地的TCP连接。可以先临时关闭SELinux测试:

setenforce 0

如果重启SonarQube后正常了,说明是SELinux的问题,需要添加规则允许SonarQube使用这个端口:

semanage port -a -t http_port_t -p tcp 9093

另外,检查iptables防火墙是否允许本地连接9093端口:

iptables -L INPUT -n | grep 9093

如果没有相关规则,添加允许本地回环接口的连接:

iptables -A INPUT -i lo -p tcp --dport 9093 -j ACCEPT
service iptables save

5. 查看完整的Web日志定位细节

你提供的日志只到H2启动的步骤,可能后面还有具体的错误信息(比如连接超时、权限不足)。可以查看完整的web日志:

tail -f /datos/sonarqube-5.6.7/logs/web.log

根据日志里的具体错误提示,能更快定位问题根源。

内容的提问来源于stack exchange,提问作者Adrián Álvarez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:24:25