Linux上的Tomcat项目访问数据库报错,但是位于Windows上的完全一样项目却可以访问并成功显示数据
当我开启了端口,如果有经历过的小伙伴看到这个3306端口,就已经知道我错在哪了
这是我连接数据库的配置文件:Windos
和Linux
都是一样的配置,MySQL
连接驱动采用5.1.47
jdbc_driver=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://192.168.1.12:3306/manong_mall?serverTimezone=GMT&useSSL=false&useUnicode=true&characterEncoding=utf-8
jdbc_user=root
jdbc_password=123456
位于Linux
上部署的web
项目却无法访问数据库,报了这种异常:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 6014, active 0, maxActive 20, creating 0, createErrorCount 175
### The error may exist in com/migu/mapper/ProductCategoryMapper.xml
### The error may involve com.migu.mapper.ProductCategoryMapper.selectByExample
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 6014, active 0, maxActive 20, creating 0, createErrorCount 175
JDBC连接池好像出现了什么问题,我的是使用的SSM web
项目,采用的是alibaba druid
的连接池
以下为排查过程
1、首先再次尝试是否开启了远程访问
命令:每次进行权限设置时都要set
以下这两个玩意
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
# 接收任意主机,密码为123456
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION
# 这步不要忘记
mysql> FLUSH PRIVILEGES;
但是结果依然不行
2、判断是否是连接池问题
JDBC连接池好像出现了什么问题,我的是使用的SSM web
项目,采用的是alibaba druid
的连接池
上面报的是连接池问题,所以我首先想到的更改连接池,这次我使用c3p0
,TMD依然错,配置就不列出来了
3、判断是否是数据库问题
再次尝试使用winodws
上的navicat
访问部署在linux
上的数据库,也是成功连接
那么这种情况数据库和连接池都是没问题的
网上找了很多文档资料博客,这篇文章跟我问题类似,但还是不行,小伙伴们可以尝试一下博客
4、怀疑是版本冲突,此时我就重新安装tomcat和java
分别尝试下载了不同版本,分别尝试了各种方式什么使用解压缩安装啦或者yum安装啦
配置了很多环境变量,都还是一样的问题,最后就排除了版本冲突的问题
5、最后我就更换了个MySQL的监听地址,结果成功
原先的MySQL服务所监听的地址为:
此时我前往my.cnf
配置文件,更改监听地址为:
#开启监听指定地址
bind-address=192.168.1.12 # 这是我当前虚拟机的地址
CentOS7重启服务命令:
[root@localhost bin]# systemctl restart mysqld
最后为:
大概过程就是这样了,此时访问虚拟机上的web项目是可以成功返回数据的【具体原因暂未知】
希望这篇文章对你有帮助!!!