【问题标题】:Why the SonarQube analyser doesn't manage to establish a connection with Mysql, permission issue?为什么 SonarQube 分析器无法与 Mysql 建立连接,权限问题?
【发布时间】:2015-09-16 23:55:21
【问题描述】:

MySQL 版本:5.6.25(64 位 Linux)。蚂蚁版本:1.9.5。声纳库版本:5.1.1。 当我运行我的 ant 脚本时,我遇到了权限问题。比如:

org.sonar.runner.impl.RunnerException:无法执行声纳 ... .. 由 java.lang.IllegalStateException 引起:连接数据库失败.... ...由 org.apache.dbcp.SQLNestedException 引起:无法创建 PoolableConnectionFactory(用户 'sonarqube'@'localhost' 的访问被拒绝(使用密码:YES))

在昨天下午花了谷歌搜索并尝试以 root 身份登录 MySQL 并为我的 sonarqube 用户调用 GRANT ALL 等等等等之后,我完全不知道下一步该尝试什么。我偶然发现了这个帖子: http://sonarqube.15.x6.nabble.com/com-mysql-jdbc-Driver-is-not-found-td5012081.html,特别是这个位:

"Sonar 使用其内置驱动程序,位于 /home/jenkins/sonar-3.5.1/extensions/jdbc-driver/mysql/ 文件 mysql-connector-java-5.1.18.jar 存在,可读并包含 Driver.class 文件。”

我在这个位置没有连接器 jar 文件(实际上我在扩展目录中的唯一文件夹是“oracle”)。我应该有一个吗?就 sonarqube 文档而言,我不必配置 MySQL 以使用其他地方的任何额外驱动程序。

提前非常感谢。如果需要,我可以粘贴部分 Ant 脚本,但这看起来更像是数据库权限问题。 干杯, 汤姆

【问题讨论】:

  • 编辑:我刚刚在异常堆栈跟踪中的“无法连接到数据库”下注意到:“在 org.sonar.core.persistence.DefaultDatabase.start(DefaultDatabase.java:77 )”。这是否意味着它仍在尝试使用默认 H2 DB 的某些部分?我已经从我的 sonar.properties 文件中删除了所有对此的引用,所以现在我更加困惑了 :)
  • 您可以在 export "ANT_LIB=/path-till-ant/apache-ant-1.9.4/lib" 之类的导出后尝试
  • 感谢您的回复。我已经为ant设置了一个环境变量。不过谢谢你:)

标签: mysql ant sonarqube


【解决方案1】:

配置你的 MySQL,默认只启用 localhost 连接。

GRANT ALL PRIVILEGES ON *.* TO 'user'@'YOUR_IP_ADDRESS'

【讨论】:

  • 感谢您的回复,但正如我所说,我已经为我的(唯一)用户尝试了“授予所有”命令。我做了一个“显示授权”,确认我的用户在本地主机上的数据库上拥有所有权限(这是我的数据库所在的位置)。我还运行了“从 mysql.user 中选择用户、主机、Grant_priv、Super_priv;”它在两个特权列中都带有“Y”。所以从mysql的角度来看,我的用户有特权,但我的声纳给了我“(用户'sonarqube'@'localhost'的访问被拒绝(使用密码:YES))”消息。我很困惑:)
【解决方案2】:

第一件事。

您正在使用 ANT 触发 SonarQube。更多详情可以查看here

因此,根据错误日志,您的项目似乎存在权限问题。 Sonar 无法连接到您的数据库。

假设您的数据库是 Sonar

username = sonar
password = sonar

在这种情况下,您必须授予数据库连接权限。 要提供权限,您必须运行以下命令。

GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'DOMAIN-NAME' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'127.0.0.1' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'CURRENT-IP-ADDRESS' IDENTIFIED BY 'sonar';

更多详情请查看here

【讨论】:

  • 感谢您的回复。第一个链接是我用来修改我的 ant 脚本的确切网站,正如我所说,恐怕我已经尝试了所有的“GRANT ALL”命令。不过再次感谢。
  • 登录 mysql 并输入命令 select * from mysql.user 并在可能的情况下注释输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-27
  • 2020-04-06
  • 2012-06-13
  • 2015-05-31
  • 2014-10-17
  • 2016-09-01
相关资源
最近更新 更多