tomcat本地服务器配置好了考到别的机器上项目都错了e,【Tomcat】项目部署和运行时遇到的坑(玄学?)...

问题描述和报错和解决:

可能有不少人你跟我一样在本地测试正常,代码啥都没动,将项目部署到云服务器却出现问题。那极有可能就是环境不一样导致的。

下面是我遇到的一个报错(截图放到最后)。这个报错涉及到代码逻辑,对其他人可能没有什么参考价值。

但是通过报错去定位,发现sessionFactory为空指针。说明了:连接数据库失败!

数据库连接失败的原因有很多种:

1、MySQL服务器是否已经启动

2、项目的配置文件出现错误。比如说:账号,密码,驱动(不同版本的MySQL要用不同的驱动包)

账号和密码我就不说了。我来说说驱动jar包的问题。我在本地的MySQL是5.7,而云服务器上装的是MySQL8。那么需要在idea修改数据库配置文件和gradle依赖。我这里修改的是hibernate的配置文件,主要修改driver和url。修改后driver可能会爆红,因为本地可能还没有对应的驱动jar包。取到build.gradle修改mysql驱动包的依赖,将它修改为8以上。然后不要忘了,rebuild和重新打war包。打好后最好确认一下war里面的配置文件是否真的已经修改成功,防止war包还是以前的。

3、MySQL8.0 之前的版本中加密规则是mysql_native_password,而在MySQL8之后,加密规则是caching_sha2_password

可能会出现报错: Authentication plugin 'caching_sha2_password' cannot be loaded。也可能没有,但是数据库连接失败也有可能是这个原因!!!

用户密码的加密规则是可以查看和修改的,对应的信息放在了系统数据mysql种的user表中。

在云服务器上登录进入MySQL数据库,查看用户的加密规则:

use mysql;

select user, host, plugin from user;

ada5a0f03c22f692642fc94dde1fa315.png

默认root账户并不能使用与远程连接,所以我们要么打开权限,要么新增账户(自行百度)。我这里新增了一个ysq的账户用于远程连接,并且将该用户的密码加密规则修改为mysql_native_password;

ALTER USER '用户名'@'host' IDENTIFIED WITH mysql_native_password BY '该用户的密码';

假设我的ysq用户的密码为:123456,从表格种可以看出它的host的是“%”(任意主机)。那么我要修改它的加密规则,对应的sql语句为:ALTER USER 'ysq'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

修改后,记得刷新权限。

flush privileges;

然后去到云服务器上项目的目录,找到数据库的配置文件,将账户和密码,改为修改了加密规则的账户和其密码。然后记得重启Tomcat!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值