【问题标题】:SonarQube analysis via Maven fails with database access denied to MySQL通过 Maven 进行 SonarQube 分析失败,MySQL 拒绝数据库访问
【发布时间】:2015-03-01 00:26:31
【问题描述】:

我的 MySQL、SonarQube 和 TeamCity 实例都在 相同 Linux 主机上运行。所有都是非常普通的安装(开箱即用/不安全/本地/在公司防火墙后面)。

这些是我的 Maven 设置...其中 ${fullyQualifiedDomainName} 类似于 build.company.com

<profile>
  <id>env-dev</id>

  <properties>
    <downloadSources>true</downloadSources>
    <downloadJavadocs>false</downloadJavadocs>
    <sonar.jdbc.url>jdbc:mysql://${fullyQualifiedDomainName}:3306/sonar?useUnicode=true&amp;characterEncoding=utf8</sonar.jdbc.url>
    <sonar.jdbc.username>sonar</sonar.jdbc.username>
    <sonar.jdbc.password>sonar</sonar.jdbc.password>
    <sonar.host.url>http://${fullyQualifiedDomainName}:9000</sonar.host.url>
  </properties>

  <activation>
    <activeByDefault>true</activeByDefault>
  </activation>
</profile>

我运行命令 mvn sonar:sonar 来执行和上传 SonarQube 分析。

上面的 Maven 设置在我的 Windows PC 上运行正常。但是,如果我通过 TeamCity 从 Linux 服务器运行,我会看到这个错误:(giant Java stacktrace + ...):

[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) on project IMQuant: 
Fail to connect to database:
Cannot create PoolableConnectionFactory
(Access denied for user 'sonar'@'${fullyQualifiedDomainName}'
(using password: YES)) -> [Help 1]

如果我在 Maven 设置中切换为使用 localhost,它在 Linux 服务器上运行正常。我猜这是以下问题之一:

  1. MySQL 配置(我是 MySQL 新手)
  2. Linux 服务器配置(我无法控制的网络配置/管理内容)
  3. MySQL JDBC 驱动程序错误(localhost != fqdn from localhost)

现在我在我的 TeamCity / Linux 设置中使用第二个 Maven 配置文件localhost

这个问题有解决方案吗?有人看过这个问题吗?

更新

以下是为 SonarQube 创建 MySQL 数据库的命令。正如@Mithfindel 所指出的,这可能是根本原因。

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;

参考:https://github.com/SonarSource/sonar-examples/blob/master/scripts/database/mysql/create_database.sql

【问题讨论】:

    标签: mysql maven teamcity sonarqube


    【解决方案1】:

    这看起来像是 MySQL 配置问题:对于 MySQL,localhost 上的 GRANT 与 localhost FQDN 上的 GRANT 不同。您可能需要检查授予用户 'sonar'@'localhost''sonar'@'fqdn-of-localhost''sonar'@'%' 的权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-24
      • 2016-07-05
      • 2012-09-08
      • 2012-12-13
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 2015-12-26
      相关资源
      最近更新 更多