MySQLSyntaxErrorException:用户''@'localhost'拒绝访问数据库'demo'

Posted

技术标签:

【中文标题】MySQLSyntaxErrorException:用户\'\'@\'localhost\'拒绝访问数据库\'demo\'【英文标题】:MySQLSyntaxErrorException: Access denied for user ''@'localhost' to database 'demo'MySQLSyntaxErrorException:用户''@'localhost'拒绝访问数据库'demo' 【发布时间】:2015-05-28 04:39:29 【问题描述】:

我正在尝试使用我的休眠应用程序连接到数据库。 但是除了Test之外,我无法连接其他数据库。

这很奇怪,因为如果我要创建任何数据库,除了在 phpMyAdmin 中预定义的测试数据库之外,它不允许我通过 hibernate 访问它。

我尝试了很多方法,但都没有成功。

1.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITH     GRANT OPTION;

2.

    mysql -u root -p

3.

     mysqladmin -u root password 'root password goes here'
    我已经重新安装了我的 wamp 服务器。

这是我的 hibernate.cfg.xml:

   <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
   <hibernate-configuration>
   <session-factory>
    <property name="show_sql">true</property>
    <property  name="connection.driver_class">com.mysql.jdbc.Driver</property> 
   <property name="connection.url">jdbc:mysql://localhost:3306/demo</property> 
   <property name="username">root</property> 
   <property name="password" /> 
   <property name="connection.pool_size">1</property>  
   <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
   <property name="hbm2ddl.auto">update</property>
  <!-- disabled 2nd level catche
   <property   name="catche.provider_class">org.hibernate.catche.NoCatcheProvider</property>-->
    <!-- enabled 2nd level catche -->
  <property name="catche.use_second_level_catche">true</property>
  <property name="catche.use_query_catche">true</property>

  <property name="catche.provider_class">org.hibernate.catche.EhCatcheProvider</property>   
   <mapping class="org.hibernet.src.userDetails" ></mapping>
   <mapping class="org.hibernet.src.Address" ></mapping>
   <mapping class="org.hibernet.src.Vehicle" ></mapping>    
 </session-factory>
 </hibernate-configuration>

如果这是一个语法问题,它不应该与测试数据库一起使用,但它应该与它一起使用。 我该怎么办?

【问题讨论】:

首先你可能不应该使用root,而是创建另一个用户..你试过GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;以便你可以使用root用户从任何地方连接吗? IDENTIFIED BY 'root' 。所以密码也是root,然后在xml配置文件中使用&lt;property name="username"&gt;root&lt;/property&gt; &lt;property name="password" &gt;root&lt;/property&gt; 是的,它允许我创建连接,因为我可以访问测试数据库所以我认为不需要密码 【参考方案1】:

我终于完成了新用户。 只需创建另一个用户并为其授予所有权限:

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

【讨论】:

以上是关于MySQLSyntaxErrorException:用户''@'localhost'拒绝访问数据库'demo'的主要内容,如果未能解决你的问题,请参考以下文章

executeUpdate() 抛出 MySQLSyntaxErrorException

MySQLSyntaxErrorException:用户访问被拒绝

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

MySQLSyntaxErrorException:未知数据库 - JDBC - Java EE

如何解决 JDBC PreparedStatement 中的 MySQLSyntaxErrorException [重复]

MySQLSyntaxErrorException