问题描述:
分配了一台新的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用户是允许的。
【题外话:】
登陆上mysql之后
use mysql;
select * from user;
就会出现很多权限的展示,慢慢看吧!
这个授权之后,再重启tomcat服务,就可以了!
经验总结:
其实错误已经很明确了,就是没有连接上数据库,如果确定自己的数据库配置项没有写错的话,那就是数据库本身的问题!然后想数据库造成别人连不上的原因!
纯个人项目遇到的问题总结,如能帮上您,我很开心,如有错误或者不严谨的地方,还望指教!