关于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',让他只允许在本机登录就行了。
之后可能要再研究研究数据库密码修改和限制的问题。
折腾了两天,现在肚子很饿人很虚。回家吃饭了。
猫肚肚是乌贼和人类心灵永远的家园。 —— 原创文章,转载请注明出处