0

针对我的 SonarQube 4.1 实例在 sonar-example 项目上运行sonar-runner失败。在堆栈跟踪中,我注意到它给出了以下错误:

引起:java.sql.SQLException:用户'sonar'@'172.23.48.129'的访问被拒绝

该ip是我的本地机器IP。我的 SonarQube 服务器在另一个盒子上。

我的 sonar-runner.properties 和 sonar-project.properties 文件在任何地方都没有将 jdbc 设置为该 IP(或解析为该 IP 的主机名)。甚至下面的 INFO 级别日志也可以证明这一点。

奇怪的是,我可以在同一个示例项目上运行 sonar-runner,同时指向 SonarQube 4.5 的测试实例,并且分析成功运行。

它出错并给出以下输出:

sonar-runner -X
SonarQube Runner 2.4
Java 1.7.0_79 Oracle Corporation (64-bit)
Mac OS X 10.10.3 x86_64
INFO: Error stacktraces are turned on.
INFO: Runner configuration file: /Users/senatori/Documents/sonar-runner-2.4/conf/sonar-runner.properties
INFO: Project configuration file: /Users/senatori/Documents/sonar-examples/projects/languages/groovy/groovy-sonar-runner/sonar-project.properties
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Work directory: /Users/senatori/Documents/sonar-examples/projects/languages/groovy/groovy-sonar-runner/./.sonar
INFO: SonarQube Server 4.1.1
18:10:05.102 INFO  - Load batch settings
18:10:05.121 DEBUG - Download: http://sonar.redac.dev/batch_bootstrap/properties?dryRun=false (no proxy)
18:10:05.298 INFO  - User cache: /Users/senatori/.sonar/cache
18:10:05.311 INFO  - Install plugins
18:10:05.311 DEBUG - Download index of plugins
18:10:05.311 DEBUG - Download: http://sonar.redac.dev/deploy/plugins/index.txt (no proxy)
18:10:05.648 INFO  - Install JDBC driver
18:10:05.648 DEBUG - Download index of jdbc-driver
18:10:05.648 DEBUG - Download: http://sonar.redac.dev/deploy/jdbc-driver.txt (no proxy)
18:10:05.699 INFO  - Create JDBC datasource for jdbc:mysql://sonardb001.redac.dev:3306/sonar?useUnicode=true&characterEncoding=utf8
18:10:06.282 DEBUG - To prevent a memory leak, the JDBC Driver [com.mysql.jdbc.Driver] has been forcibly deregistered
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 2.173s
Final Memory: 9M/123M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
at     org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
at java.security.AccessController.doPrivileged(Native Method)
at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
at org.sonar.runner.api.Runner.execute(Runner.java:100)
at org.sonar.runner.Main.executeTask(Main.java:70)
at org.sonar.runner.Main.execute(Main.java:59)
at org.sonar.runner.Main.main(Main.java:53)
Caused by:

为了清楚起见,省略了一些堆栈跟踪

Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'sonar'@'172.23.48.129' (using password: YES))
at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
at org.apache.commons.dbcp.BasicDataSource.getLogWriter(BasicDataSource.java:1098)
at org.apache.commons.dbcp.BasicDataSourceFactory.createDataSource(BasicDataSourceFactory.java:350)
at org.sonar.core.persistence.DefaultDatabase.initDatasource(DefaultDatabase.java:142)
at org.sonar.core.persistence.DefaultDatabase.start(DefaultDatabase.java:75)
... 32 more
Caused by: java.sql.SQLException: Access denied for user 'sonar'@'172.23.48.129' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:927)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1709)

知道为什么要这样做吗?谢谢

4

1 回答 1

1

该消息Access denied for user 'sonar'@'172.23.48.129'告诉您,用户sonar无法从您的机器(IP 地址为 172.23.48.129)连接到 SonarQube 4.1 实例的数据库模式。

请检查此架构的权限,为了顺利操作,您应该具有以下内容:

GRANT USAGE ON `sonar`.<your sonar db> TO 'sonar'@'%' IDENTIFIED BY PASSWORD '*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' 
GRANT ALL PRIVILEGES ON `sonar`.<your sonar db> TO 'sonar'@'%'

...或一些相关的 IP 地址范围,而不是'%'.

于 2015-05-29T07:02:10.237 回答