在 sonarqube- SELECT 命令拒绝用户 'sonar_user'@'localhost' for table 'session_variables

in sonarqube- SELECT command denied to user 'sonar_user'@'localhost' for table 'session_variables

Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (SELECT command denied to user 'sonar_user'@'localhost' for table 'session_variables') at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) ~[commons-dbcp-1.4.jar:1.4] at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) ~[commons-dbcp-1.4.jar:1.4] at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) ~[commons-dbcp-1.4.jar:1.4] at org.sonar.core.persistence.DefaultDatabase.checkConnection(DefaultDatabase.java:113) ~[sonar-core-4.5.5.jar:na] ... 27 common frames omitted Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SELECT command denied to user 'sonar_user'@'localhost' for table 'session_variables' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_60] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_60] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_60] at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_60] at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) ~[mysql-connector-java-5.1.27.jar:na] at com.mysql.jdbc.Util.getInstance(Util.java:386) ~[mysql-connector-java-5.1.27.jar:na] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) ~[mysql-connector-java-5.1.27.jar:na] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237) ~[mysql-connector-java-5.1.27.jar:na] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169) ~[mysql-connector-java-5.1.27.jar:na] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2617) ~[mysql-connector-java-5.1.27.jar:na]

您的 SonarQube 服务器连接到数据库的用户 ('sonar_user'@'localhost') 没有足够的权限(根据错误消息,它无法在数据库中发出 SELECT 命令)。

您需要在 MySQL 数据库中向该用户授予此权限(此处 helpful tutorial 介绍了如何实现)。

要访问 GLOBAL|SESSION VARIABLES,请尝试使用 MYSQL 中的命令:

$ GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';

$ GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';

如果它不起作用,那么您应该尝试(它只向 'sonar' 用户提供所有数据库的 SELECT 权限):

$ GRANT SELECT ON . TO 'sonar'@'%' IDENTIFIED BY 'sonar';

$ GRANT SELECT ON . TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';

它为声纳用户提供访问所有数据库的权限 SELECT、INSERT、UPDATE、DELETE(数据库上所有可能的移动)。

$ GRANT ALL ON . TO 'sonar'@'%' IDENTIFIED BY 'sonar';

$ GRANT ALL ON . TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';