关于SonarQube docker安装连接不上数据库的坑

工作需要安装SonarQube做代码质量检测,理所当然地使用了比较方便的docker,然后又踩进了坑里。具体情况如下。

按照网上教程,用以下命令启动了docker,但无法运行,查看日志发现连接不上数据库。

docker run --name sonarqube -p 9090:9000 --restart=always \
    --privileged=true \
    -e ALLOW_EMPTY_PASSWORD=yes \
   -e SONARQUBE_DATABASE_USER="sonar" \
    -e SONARQUBE_DATABASE_NAME="sonar" \
    -e SONARQUBE_DATABASE_PASSWORD="234510de" \
    -e SONARQUBE_JDBC_URL="jdbc:mysql://{IP}:3309/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \
    -v /data/docker_data/sonarqube/logs:/opt/sonarqube/logs:z \
    -v /data/docker_data/sonarqube/conf:/opt/sonarqube/conf:z \
    -v /data/docker_data/sonarqube/data:/opt/sonarqube/data \
    -v /data/docker_data/sonarqube/extensions:/opt/sonarqube/extensions\
    -d sonarqube:7.4-community

 

 

 其实错误已经很明显了,Access denied for user 'sonar'@'172.17.0.1' 身份鉴权失败。但愣逼如我,在多次确认自己密码写的都是一样的之后,固执地认为是SonarQube停止支持mysql或者是连接不上mysql的锅……

话不多说直接说结论。这里的数据库sonar密码只能是默认的sonar,不能改!!!

修改如下:

docker run --name sonarqube -p 9090:9000 --restart=always \
    --privileged=true \
    -e ALLOW_EMPTY_PASSWORD=yes \
   -e SONARQUBE_DATABASE_USER="sonar" \
    -e SONARQUBE_DATABASE_NAME="sonar" \
    -e SONARQUBE_DATABASE_PASSWORD="sonar" \
    -e SONARQUBE_JDBC_URL="jdbc:mysql://{IP}:3309/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \
    -v /data/docker_data/sonarqube/logs:/opt/sonarqube/logs:z \
    -v /data/docker_data/sonarqube/conf:/opt/sonarqube/conf:z \
    -v /data/docker_data/sonarqube/data:/opt/sonarqube/data \
    -v /data/docker_data/sonarqube/extensions:/opt/sonarqube/extensions\
    -d sonarqube:7.4-community

之后可以正常运行。

不过数据库密码不能改这个坑可太大了,最好对sonar用户的登录范围做一下限制,这里数据库用户不要用'sonar'@'%',用'sonar'@'172.17.0.1',让他只允许在本机登录就行了。

之后可能要再研究研究数据库密码修改和限制的问题。

折腾了两天,现在肚子很饿人很虚。回家吃饭了。

posted @ 2021-03-16 20:27  猫呢家养乌贼Alkaid  阅读(1095)  评论(0)    收藏  举报