SonarQube启动后5秒自动停止,数据库连接被拒绝求助
嘿,从你给出的日志片段里的Cannot create PoolableConnectionFactory (Connection refused)能直接看出来,SonarQube启动失败的核心原因是无法连接到PostgreSQL数据库,这也是它刚启动就闪退的根源。下面是一步步的排查和修复步骤:
先确认PostgreSQL服务是否在运行
首先得确保你的PostgreSQL数据库本身是正常启动的。如果是Linux系统,用这个命令检查状态:systemctl status postgresql
如果显示服务没在运行,先启动它:systemctl start postgresql
要是你用的是其他初始化系统,比如sysvinit,就用service postgresql status和service postgresql start来操作。检查PostgreSQL是否允许TCP/IP连接
默认情况下,PostgreSQL可能只允许本地套接字连接,不接受TCP请求。你需要修改它的配置文件:
找到postgresql.conf(通常路径是/etc/postgresql/<你的PostgreSQL版本>/main/或者/var/lib/postgresql/<版本>/main/),找到listen_addresses这一行,把它改成:listen_addresses = '*'
这样就允许所有IP的TCP连接了,如果你只想让SonarQube所在服务器访问,也可以换成对应的IP地址。修改完记得重启PostgreSQL服务生效。核对SonarQube的数据库连接配置
打开SonarQube目录下的conf/sonar.properties文件,找到sonar.jdbc.url这一项,确保里面的主机地址、端口号和数据库名都是正确的。举个正确的配置例子:sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube
这里要注意:localhost如果是远程数据库,要换成数据库服务器的IP- 端口
5432是PostgreSQL默认端口,如果你改了端口号要对应上 sonarqube这个数据库名必须是已经提前创建好的
验证数据库用户的权限和密码
同样在sonar.properties里,检查sonar.jdbc.username和sonar.jdbc.password是否正确。你可以用psql命令手动测试连接:psql -U <配置里的用户名> -d sonarqube -h <数据库主机>
如果输入密码后连不上,要么是密码错了,要么是这个用户没有访问sonarqube数据库的权限,你需要给用户赋权或者重置密码。排查防火墙/安全组限制
如果SonarQube和PostgreSQL不在同一台服务器,一定要检查两者之间的防火墙或者云服务商的安全组,有没有开放PostgreSQL的默认端口5432,允许SonarQube服务器的IP地址访问。
内容的提问来源于stack exchange,提问作者Surmeet

