错误:MySQLSyntaxErrorException - 拒绝用户选择命令

Posted

技术标签:

【中文标题】错误:MySQLSyntaxErrorException - 拒绝用户选择命令【英文标题】:Error: MySQLSyntaxErrorException - select command denied to user 【发布时间】:2015-04-08 11:27:23 【问题描述】:

我正在使用 hibernate 和 spring 框架从我的 web 应用程序连接到远程 mysql 数据库

当我尝试从数据库中获取元素时,由于缺乏权限,它不起作用。

 public Medecin getMedecinByLoginPassword(String login, String password) 
    System.out.println(login);
    System.out.println(password);
    List list;
    list = getSessionFactory().getCurrentSession()
       .createQuery("from Medecin where login= :login and password= :password")
       .setString("login", login).setString("password", password).list();
    return (Medecin) list.get(0);

只有 Native sql 可以从远程数据库中获取数据,否则我会收到此错误

错误

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SELECT command denied to user 'tunisie_tunisie'@'196.203.218.102' for table 'medecin'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1885)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
... 83 more

【问题讨论】:

【参考方案1】:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SELECT command denied to user 'tunisie_tunisie'@'196.203.218.102' for table 'medecin'

这清楚地表明,您尝试使用主机 ip 196.203.218.102 上的用户名 tunisie_tunisie 连接的数据库无权使用此表。检查您是否具有访问此数据库的正确权限。

【讨论】:

我已经与网络主机管理员讨论过,但他确认问题出在我的代码中,我可以从其他 java 应用程序与数据库建立连接并获取数据,但从这个应用程序它没有工作 确保您是否能够使用数据库详细信息进行连接。您可以使用此代码测试link。如果您能够通过此代码连接到数据库,那么您需要检查您的代码。 BUt 首先检查您是否能够使用此代码连接数据库。 连接建立成功我认为是spring-security框架的权限问题

以上是关于错误:MySQLSyntaxErrorException - 拒绝用户选择命令的主要内容,如果未能解决你的问题,请参考以下文章

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误

网页打开显示错误500是啥意思

PHP错误处理

PHP的错误处理