我有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上正常工作。但是,如果我通过TeamCity从Linux服务器运行,我会看到以下错误:(巨型+.):
[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上运行正常。我猜想这是以下问题之一:
localhost != fqdn )现在,我正在为TeamCity / Linux和localhost设置第二个Maven配置文件。
这个问题有解决办法吗?有人看过这个问题吗?
更新
下面是为MySQL创建SonarQube数据库的命令。正如@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;参考文献:database.sql
发布于 2015-02-28 14:57:45
它看起来像是一个MySQL配置问题:对于MySQL,localhost上的GRANT与localhost的FQDN上的GRANT不同。您可能需要检查授予用户'sonar'@'localhost'和'sonar'@'fqdn-of-localhost'或'sonar'@'%'的权限。
https://stackoverflow.com/questions/28782900
复制相似问题