Hibernate 获取不到数据库链接

问题描述:

    分配了一台新的linux服务器,准备往上面部署RAP( Rigel Automation Platform),结果呢,就一直出现如下错误,部分错误代码:

Could not open Hibernate Session for transation;nested exception is org.hibernate.exception.GenericJDBCException:Cannot open connection...



 哎,真的是各种查,首先肯定看我的数据源的配置,没有错的,下面是我的配置,

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/rap_db?useUnicode\=true&characterEncoding\=utf8&zeroDateTimeBehavior\=convertToNull&noAccessToProcedureBodies\=true
jdbc.username=root
jdbc.password=123456
redis.host=localhost
redis.port=6379

问题根源:

   mysql安装完成之后,对数据的初始化没有做好,连接的用户和授权没有创建。

排查步骤:

查看数据库运行状态:

service mysqld status

 如图:表示数据库运行正常

 当然也可以用:

netstat -antp |grep :3306

 这都看了,也没有问题,那就继续往下吧!

登录mysql: 
cd /usr/local/mysql (这是我mysql的链接路径)
mysql -h localhost -uroot -p  (我是root用户,输入完整个命令会提示输入密码)

如何查看用户权限:

      

select user,host from mysql.user

    如图:其实这个是最终定位到问题之后,授权完毕之后的截图,授权之前的没截图,有空补上。

对这个图进行说明下,host列就是你数据库配置项中可以使用的地址(上面的配置我用的是localhost,有DBA建议 说localhost是走socket协议,所以不建议用localhost,如果mysql和你的应用是一台机器的话那就建议用127.0.0.1),只有这几个root用户是允许的。

 【题外话:】

一个用户为啥会有多个密码?一半原因来源,一个host相当于一个应用,多个应用用同一个用户用不同密码连一个库设置有权限控制。
如何查看权限:
登陆上mysql之后
use mysql;
select * from user;
 就会出现很多权限的展示,慢慢看吧!
 

这个授权之后,再重启tomcat服务,就可以了!

经验总结:

其实错误已经很明确了,就是没有连接上数据库,如果确定自己的数据库配置项没有写错的话,那就是数据库本身的问题!然后想数据库造成别人连不上的原因!

纯个人项目遇到的问题总结,如能帮上您,我很开心,如有错误或者不严谨的地方,还望指教!

猜你喜欢

转载自anbolihua.iteye.com/blog/2314154