【发布时间】: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&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 服务器上运行正常。我猜这是以下问题之一:
- MySQL 配置(我是 MySQL 新手)
- Linux 服务器配置(我无法控制的网络配置/管理内容)
- 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