【问题标题】:Can not connect to database sonarqube with mysql in docker无法在 docker 中使用 mysql 连接到数据库 sonarqube
【发布时间】:2019-01-18 02:45:05
【问题描述】:

我尝试在 docker 中使用 mysql 安装 sonarqube。

  1. Mysql

```

$ docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql mysql
$ docker exec -it mysql bash
# mysql -uroot -proot
mysql> CREATE DATABASE sonar CHARACTER SET utf8;
mysql> CREATE USER 'sonar'@'localhost' IDENTIFIED BY 'sonar' PASSWORD EXPIRE NEVER;
mysql> GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost';
mysql> FLUSH PRIVILEGES;

```

  1. SonarQube

```

$ docker run -d --name SonarQube --link mysql:mysql -p 9000:9000 -p 9092:9092 \
-e SONARQUBE_JDBC_USERNAME=sonar \
-e SONARQUBE_JDBC_PASSWORD=sonar \
-e "SONARQUBE_JDBC_URL=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true" \
  sonarqube

```

这是我的错误日志。 给我一个解决方案。 谢谢你

2018.08.10 12:53:37 ERROR web[][o.s.s.p.Platform] Web server startup failed java.lang.IllegalStateException: Can not connect to database. Please check connectivity and settings (see the properties prefixed by 'sonar.jdbc.'). at org.sonar.db.DefaultDatabase.checkConnection(DefaultDatabase.java:108) at org.sonar.db.DefaultDatabase.start(DefaultDatabase.java:75) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ...

【问题讨论】:

    标签: mysql docker sonarqube


    【解决方案1】:

    将 JDBC URL 环境变量中的主机更改为以下,即将 localhost 替换为 mysql -

    -e SONARQUBE_JDBC_URL=jdbc:mysql://mysql:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true"
    

    原因是您创建了一个指向容器 mysql 的链接,其 DNS 名称为 mysql,这意味着它将在 sonarqube 容器中放置 mysql 容器 IP 的主机条目。您可以通过在 sonarqube 容器中执行 docker execcat /etc/hosts 来验证它。这就是在后台使用 docker 进行链接的方式。

    PS - 本地主机是指容器本身而不是 mysql 容器。

    更新

    您的第二个问题是,您正在授予 @'localhost' 的权限,这意味着来自 sonarqube 容器的访问将被拒绝,您可以将其更改为 @'%' 以允许从任何地方。

    参考 - MySQL root access from all hosts
    Allow all remote connections, MySQL

    【讨论】:

    • 谢谢您的回答。但我仍然得到同样的错误。
    • 销毁所有容器并重新开始。它应该可以工作。如果链接后没有在您的问题中发布/etc/hosts 内容。
    • root@9b5ddc2ee125:/# cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02:: 1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.3 9b5ddc2ee125
    • 它没有 mysql 容器的条目。我已经尝试过了,它对我有用。参考 - --link="" : Add link to another container (<name or id>:alias or <name or id>) 文档 - docs.docker.com/samples/library/mysql/…
    • 我在这里没有看到任何其他问题。我在我的环境中从头开始构建它,它对我有用。
    猜你喜欢
    • 2017-11-18
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2020-03-12
    • 2018-10-29
    • 1970-01-01
    • 2015-03-09
    相关资源
    最近更新 更多