一、使用hibernate无法连接数据库的问题:
ERROR: HHH000231: Schema export unsuccessful
(Access denied for user ‘root‘@‘192.168.1.109‘ (using password: NO))
at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
配置如下
@Bean
public DataSource dataSource(){
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/shopping");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUsername("root");
dataSource.setPassword("");
return dataSource;
}
也就是说hiberate将localhost解析成了192.168.1.109也就是电脑上面的ip,mysql会认为是远程的访问,但是mysql并没有配置这样的host;实际上mysql的配置中已经配置了localhost和127.0.0.1这样两种匹配方式。
那么为什么hibernate没有将localhost解析成127.0.0.1呢?
解决方案有很多种:
1. 修改hibernate配置为
jdbc:mysql://127.0.0.1:3306/shopping
2. 修改mysql
添加一个 192.168.1.109的ip权限
3. 如何通过修改mysql一次,之后hibernate使用localhost一直可以访问mysql, 我觉得可以建立一个中间层,用来匹配当前电脑的ip只要匹配,就可以登录
配置host为dongfusong.local,只要dongfusong.local可以动态的匹配电脑的ip就可以了。
原文:http://www.cnblogs.com/Learn-by-doing/p/4656739.html