mysql - 无法在docker中使用mysql连接到数据库sonarqube

标签 mysql docker sonarqube

我尝试在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;

```

  • 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 服务器启动失败 java.lang.IllegalStateException:无法连接到数据库。请检查连接和设置(请参阅前缀为“sonar.jdbc”的属性。)。 在 org.sonar.db.DefaultDatabase.checkConnection(DefaultDatabase.java:108) 在 org.sonar.db.DefaultDatabase.start(DefaultDatabase.java:75) 在 sun.reflect.NativeMethodAccessorImpl.invoke0( native 方法) ...

    最佳答案

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

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

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

    PS - 本地主机意味着容器本身,而不是 mysql 容器。

    更新

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

    引用 - MySQL root access from all hosts
    Allow all remote connections, MySQL

    关于mysql - 无法在docker中使用mysql连接到数据库sonarqube,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51787274/

    相关文章:

    php - 为什么我的嵌套 IF 条件不起作用?

    azure - 为什么 docker login 将我的密码存储在未加密的文件夹中,我应该对此采取措施吗?

    java - 如何将包含在 if-then-else 中的 boolean 文字简化为单个调用以符合 sonarqube。谢谢

    sonarqube - Sonar-cxx 找不到 bug 等

    linux - Sonarqube-4.0 在 Linux 机器 (linux-x86-32) 中设置时出现问题

    mysql - Windows Azure : MySQL database working with Symfony2

    mysql select 多个组多个where

    java - 在 JOOQ 的 ON DUPLICATE KEY 中返回 id

    docker - 用于Confluent的Docker镜像-添加Confluent Hub连接器

    docker - 如何在 docker swarm 模式下记录容器