2015-05-14 106 views
-1

当我运行应用程序我有堆栈跟踪中提到的错误。为什么我会收到“MySQLSyntaxErrorException:Access for denied for user:”错误?

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Accèsrefusépour l'utilisateur:''@'@ localhost'。 Base'db_hajar'

(我正在使用弹簧引导)。 你能帮忙吗?

这里是我使用的数据库类:

package demo.entities; 

import java.io.Serializable; 
import java.util.Collection; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.OneToMany; 

@Entity 
public class Database implements Serializable { 
    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 

    private int id_database; 
    private String database_name; 
    @OneToMany 
    @JoinColumn(name="id_entity") 
    private Collection<entities>entities; 
    public int getId_database() { 
     return id_database; 
    } 
    public void setId_database(int id_database) { 
     this.id_database = id_database; 
    } 
    public String getDatabase_name() { 
     return database_name; 
    } 
    public void setDatabase_name(String database_name) { 
     this.database_name = database_name; 
    } 
    public Database() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 
    public Database(int id_database, String database_name) { 
     super(); 
     this.id_database = id_database; 
     this.database_name = database_name; 
    } 
    @Override 
    public String toString() { 
     return "Database [id_database=" + id_database + ", database_name=" 
       + database_name + "]"; 
    } 




} 

这里是实体类:

package demo.entities; 

import java.io.Serializable; 
import java.util.Collection; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.ManyToOne; 
import javax.persistence.OneToMany; 

@Entity 
public class entities implements Serializable { 
    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 

    private int id_entity; 
    private String entity_name; 
    @ManyToOne 
    @JoinColumn(name="id_database") 
    private Database database; 
    public int getId_entity() { 
     return id_entity; 
    } 
    public void setId_entity(int id_entity) { 
     this.id_entity = id_entity; 
    } 
    public String getEntity_name() { 
     return entity_name; 
    } 
    public void setEntity_name(String entity_name) { 
     this.entity_name = entity_name; 
    } 
    public entities() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 
    public entities(int id_entity, String entity_name) { 
     super(); 
     this.id_entity = id_entity; 
     this.entity_name = entity_name; 
    } 
    @Override 
    public String toString() { 
     return "entities [id_entity=" + id_entity + ", entity_name=" 
       + entity_name + "]"; 
    } 

} 

这里是应用属性设置:

# DataSourcesettings: 

spring.datasource.url= jdbc:mysql://localhost:3306/db_hajar 
spring.datasource.username= root 
spring.datasource.password= 
spring.datasource.driverClassName= com.mysql.jdbc.Driver 

# Specifythe DBMS # 

spring.jpa.database = MYSQL 

# Show or not log for each sqlquery 

spring.jpa.show-sql = true 

# Hibernateddlauto (create, create-drop, update) 
    spring.jpa.hibernate.ddl-auto = update 
    # Naming strategy 
    spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy 
    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 

堆栈跟踪:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Accès refusé pour l'utilisateur: ''@'@localhost'. Base 'db_hajar' 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
     at java.lang.reflect.Constructor.newInstance(Unknown Source) 
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) 
     at com.mysql.jdbc.Util.getInstance(Util.java:360) 
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:978) 
     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887) 
     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823) 
     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:870) 
     at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1659) 
     at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1206) 
     at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234) 
     at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265) 
     at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064) 
     at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790) 
     at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
     at java.lang.reflect.Constructor.newInstance(Unknown Source) 
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) 
     at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395) 
     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325) 
     at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:307) 
     at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:200) 
     at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:699) 
     at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:633) 
     at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:484) 
     at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:142) 
     at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:115) 
     at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:102) 
     at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:126) 
     at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139) 
     at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51) 
     at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:219) 
     at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:203) 
     at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:522) 
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1859) 
     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:852) 
     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:845) 
     at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398) 
     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844) 
     at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) 
     at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343) 
     at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
     at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:956) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:747) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
     at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) 
     at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686) 
     at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) 
     at org.springframework.boot.SpringApplication.run(SpringApplication.java:957) 
     at org.springframework.boot.SpringApplication.run(SpringApplication.java:946) 
     at demo.DemoJpaApplication.main(DemoJpaApplication.java:10) 
+0

我从来没有使用MySql,但它似乎与MySql指令错误。 – Drumnbass

+0

你可以翻译错误吗? – Chaitanya

+0

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Accèsrefusépour l'utilisateur:''@'@ localhost'。 Base'db_hajar' –

回答

1

你的问题是与mySQL排序相关的。您只需要通过Java错误堆栈跟踪。然而,由于我只是最近有一些Java的经验,我已经学会了如何读取一些堆栈跟踪错误。从下往上阅读,最上面的几行是真正的答案。

基础上金块:

顶消息:“com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Accèsrefusé倒L'utilisateur: '' @ '@本地' 基地' db_hajar'“...

翻译法语:”拒绝用户“。你几乎可以得到答案:名为“db_hajar”的数据库或表没有搜索或查询权限。我很确定这不是你的代码是问题,而是MySQL中的数据库或表权限。

您将需要以root用户身份进入mySQL,并授予对特定用户的访问权限。我希望这台机器没有互联网访问权限或防火墙已经就位(阻止端口3306),因为你的mySQL运行时使用根级证书并且代码中没有密码。哎呀!我建议你设置一个root密码(不要用它进行查询),创建一个用户名和密码,并给它几乎完全的访问所涉及的数据库或表的权限,并在Java程序中提供这些凭据。一旦你开始工作,避免在代码中放置静态证书,而是学习如何使用证书或证书管理系统来处理Java,这些证书管理系统可以安全地保存证书,并且可以在需要验证时进行检索。

希望这会有所帮助!

+0

它解决了问题,但现在我没有任何错误,我仍然无法生成数据库的表db_hajar –

+0

看着你的代码,我没有看到任何代码指的是创建一个表或任何类型的表架构信息。我强烈建议参考JDBC文档来提供可以描述表并创建它的代码。请记住,您只需要执行一次操作,因此请确保首先检查表的存在,或者删除并重新创建表,然后插入数据。 – jewettg

+0

我使用的是spring引导,我在官方文档中看到了代码,所有的信息都在application.properties中指定 –

相关问题