2017-08-08 47 views
0

我有以下代碼。此代碼負責從遠程位置連接到MySQL數據庫。但問題是,代碼試圖連接到本地主機上的MySQL。JPA - 指向本地主機的EntityManagerFactory

收到

實際的例外是:值java.sql.SQLException: 致訪問被拒絕的用戶 'my_user' @ 'LOCALHOST_IP'(使用密碼:YES)

我使用Spring,JPA和休眠我項目。

@Configuration("persistenceContext") 
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", 
        transactionManagerRef = "jpaTransactionManager", 
        basePackages = {"my.repository"}) 
@EnableTransactionManagement 
public class PersistenceContext { 

@Autowired 
private DataSourcePropertyConfig dataSourcePropertyConfig; 

public BasicDataSource datasource() { 
    final BasicDataSource dataSource = new BasicDataSource(); 

    dataSource.setDriverClassName(dataSourcePropertyConfig.getMySqlDriverClassName()); 
    dataSource.setUsername(dataSourcePropertyConfig.getMySqlDBUsername()); 
    dataSource.setPassword(dataSourcePropertyConfig.getMySqlDBPassword()); 
    dataSource.setUrl("jdbc:mysql://<host>:<port>/<database>"); 

    dataSource.setMaxActive(10); 
    dataSource.setMaxIdle(5); 
    dataSource.setInitialSize(5); 
    dataSource.setValidationQuery("SELECT 1"); 

    return dataSource; 
} 

public JpaVendorAdapter jpaVendorAdapter() { 
    final HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter(); 
    hibernateJpaVendorAdapter.setShowSql(true); 
    hibernateJpaVendorAdapter.setGenerateDdl(false); 
    hibernateJpaVendorAdapter.setDatabase(Database.MYSQL); 
    return hibernateJpaVendorAdapter; 
} 


@Bean(name = "entityManagerFactory") 
public EntityManagerFactory entityManagerFactory() { 
    final LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); 
    entityManagerFactoryBean.setDataSource(this.datasource()); 
    entityManagerFactoryBean.setJpaVendorAdapter(this.jpaVendorAdapter()); 
    entityManagerFactoryBean.setPackagesToScan("my.entity"); 
    entityManagerFactoryBean.afterPropertiesSet(); 
    return entityManagerFactoryBean.getObject(); 
} 


@Bean(name = "jpaTransactionManager") 
@Primary 
public PlatformTransactionManager jpaTransactionManager() { 
    return new JpaTransactionManager(entityManagerFactory()); 
} 

問候 Anuj

+0

你是否試過用硬編碼的用戶名和密碼來知道它是否在第一級工作..然後我們將看看是什麼概率 –

+0

是的,我嘗試了硬編碼的用戶名和密碼。但是得到相同的錯誤。 \t \t無法打開JPA EntityManager進行事務處理;嵌套異常是javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:無法打開連接 –

+0

問題在於數據庫用戶。最初我創建了一個像userrname @ server_ip_address這樣的用戶。現在,我只以'用戶名'的身份創建了一個新用戶。現在可以連接數據庫了。感謝指針。 –

回答

0

錯誤消息

Access denied for user 'my_user'@'localhost_ip' (using password: YES)

並不表明你連接到本地主機的IP地址數據庫,它表明你連接您的本地主機的IP地址。

至於爲什麼你會得到訪問被拒絕的錯誤:很可能你的數據庫中沒有用戶記錄匹配'my_user'@'localhost_ip''my_user'@'%'

+0

我創建了一個用戶:adv_user @ devAMX-AERAA004例外說:拒絕用戶'adv_user @ de'@'my_ip'(使用密碼:YES)) –

+0

問題在於數據庫用戶。最初我創建了一個像userrname @ server_ip_address這樣的用戶。現在,我只以'用戶名'的身份創建了一個新用戶。現在可以連接數據庫了。感謝指針。 –