2011-08-30 88 views
2

我想添加聲納到我的持續集成構建系統。我正在使用ANT作爲我的構建腳本,並且我正在使用sonar-ant-task-1.1.jar生成聲納,以根據我在SVN中的源代碼生成報告。無法訪問聲納MySQL數據庫導致:java.sql.SQLException:訪問被拒絕用戶'sonar'@glassfishdev.ccs.local'(使用密碼:是)

問題 當編譯運行,並擊中聲納螞蟻任務,我得到異常如下:

Caused by: java.sql.SQLException: Access denied for user 'sonar'@'glassfishdev.ccs.local' (using password: YES) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919) 
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4004) 
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1284) 
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312) 
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122) 
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774) 
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375) 
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289) 
at org.sonar.jpa.session.DriverProxy.connect(DriverDatabaseConnector.java:160) 
at java.sql.DriverManager.getConnection(DriverManager.java:582) 
at java.sql.DriverManager.getConnection(DriverManager.java:185) 
at org.sonar.jpa.session.DriverDatabaseConnector.getConnection(DriverDatabaseConnector.java:95) 
at org.sonar.jpa.session.AbstractDatabaseConnector.testConnection(AbstractDatabaseConnector.java:185) 
... 40 more 

我做了什麼

安裝MySQL數據庫。

2.通過使用聲納安裝提供的腳本創建數據庫聲納,聲納用戶,並授予權限

**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;** 

添加了following到我的構建腳本

4.在Jenkins Freestyle構建項目中添加了以下外部變量

sonar.jdbc.url=jdbc:mysql://10.120.21.12:3306/sonar?useUnicode=true&characterEncoding=utf8 
    sonar.jdbc.driverClassName=com.mysql.jdbc.Driver 
    sonar.jdbc.username=sonar 
    sonar.jdbc.password=sonar 
    sonar.host.url=http://10.120.21.12:9000/ 

5.我也可以通過我的sql客戶端工具連接到數據庫,以驗證數據庫,用戶和權限語句是否正確執行。

但是,當Jenkins運行構建它似乎不知道如何連接到MySQL數據庫。

有什麼想法?

+0

我運行了以下命令並解決了問題: GRANT ALL ON *。* TO'sonar'@'%'; – Viriato

回答

5

的解決方案是運行下面的命令:

GRANT ALL ON * * TO '聲納' @ '%';

+0

嗨Viriato,授予\ *。\ *上的所有內容都不是一個好習慣,因爲這樣可以讓用戶有權限將所有內容都做到數據庫中。只需授予所有聲納。*正在工作。我嘗試使用SonarQube 4.5.1版。 –

1

正確的解決方案是這樣的:

GRANT ALL PRIVILEGES ON `sonar`.* TO 'sonar'@'localhost'; 

如所解釋的here,連接成在UNIX域套接字本地主機發生。您可能會以匿名用戶身份登錄到本地主機(例如「@localhost」)。

0

我剛剛嘗試過聲納4.5.2,它只在聲吶上有補助。*而且它絕對不行。

它看起來像sonarqube需要額外的權限來工作,personnaly我還沒有確定哪些,而且我仍然在數據庫上使用全部授權。

相關問題