我本地tomcat部署的项目,能连接云服务器的mysql,但是项目部署到云服务器上,数据库就访问不了,这是为什么呀

我本地tomcat部署的项目,能连接云服务器的mysql,但是项目部署到云服务器上,数据库就访问不了,这是为什么呀

问题描述:

问题遇到的现象和发生背景

这是本地访问云服务器mysql正常的情况

img

这是项目部署到了云服务器,但是却访问不了数据库

img

代码

img

url=jdbc:mysql://公网ip:3306/xkxt?useUnicode=true&characterEncoding=UTF-8
username=*(我的用户)
password=*(我的密码)
driverClassName=com.mysql.jdbc.Driver
initialSize=5
maxActive=10
maxWait=2000
autoReconnect=true

服务器上和本地都是这样配置的

最后问题解决了

img


这是tomcat的日志里面的报错信息,看网上其他人遇到的相似问题,有说账号密码不对,也有说用户权限不够,还有防火墙编码啥的,我都试过,但没解决问题
后面我的解决方法,有点巧合,我看报错里面写的账号是root,地址是localhost,而我在服务器里面不论怎么改地址和用户,这个报错都没有变,但是我在idea里面访问云端数据库,可以成功,说明用户和密码没问题(但也可以说用户密码错误,这里下面说会细说),然后我就猜想,会不会是在idea里面编译的时候,有些配置信息会随每次编译实时改变,而war包上传到服务器之后,这些配置信息就写死了,不会再更改
于是我就试着,在idea里连接云端数据库,成功后再打包war包,重新上传到服务器部署,结果就可以成功访问数据库了。所以我大胆猜测,
idea编译的时候,有关数据库的配置会实时更新一下,而上传到云端之后就写死,一开始我用的root用户密码root,和服务器mysql的root密码不同就不能访问数据库,因为这部分写死了,不论我在服务器端怎么改数据库地址和用户,都改变不了,所以这里也可以说是用户密码不正确,也没有问题

下次大家要用数据库的话,在项目里直接用云端数据库再打包war包吧,当然,那些用户权限不够的,防火墙的,这些也是非常正确的,先解决了权限和防火墙的问题,如果发现问题没有解决,可以再尝试我这个方法

能获取到查询的sql吗?
看下查询接口有没有报错。

首先在服务器上使用 telnet 命令检查是否能正常访问数据库,如果不能再检查是否开启了防火墙

有navacat 连接下 应该是服务器上端口没有开放

云服务器和你的MySQL服务器通讯不了