有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

指向本地主机的java JPA EntityManagerFactory

我有以下代码。这段代码负责从远程位置连接到MySQL数据库。但问题是,代码试图连接到本地主机上的MySQL

实际收到的例外情况是: 原因:java。sql。SQLException:拒绝用户“my_user”@“localhost_ip”的访问(使用密码:YES)

我在项目中使用Spring、JPA和hibernate

@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());
}

问候 阿努伊


共 (1) 个答案

  1. # 1 楼答案

    错误消息

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

    并不表示您正在连接本地主机IP地址上的数据库,而是表示您正在连接本地主机IP地址上的数据库

    至于为什么会出现拒绝访问错误:很可能数据库中没有匹配'my_user'@'localhost_ip''my_user'@'%'的用户记录