本地web项目部署到服务器里连接不上数据库的解决办法
今天突然想到把自己之前的项目挂到服务器上,但是用到了数据库,于是给服务器装上了MySQL,想着能赶紧把项目挂上去看看效果,然后并不是一帆风顺,在奋斗了四小时后终于解决了问题的所在。
(1)首先我找到了自己的期中考试题目,志愿者系统的增删改查。在装好数据库后我立刻将自己的项目打包并且放到tomcat里边,于是问题来了。
项目是在我本地写的,与数据库的连接当然也是本地的,所以,注册驱动时应该使用服务器对应的IP(如果数据库就在部署项目的服务器上则可以使用localhost),服务器上数据库的用户和密码,而我还是用的本机上的东西。
这是更改完的配置信息。
(2)再配置完后重新打包–>重新发布,发现还是不行,于是去找百度、学长、热心网友,在他们的指导下我学会了看tomcat里的错误报告(没错),原先以为放在服务器里项目没有编译器的情况下是看不到错误报告的,tomcat运行时可以看到错误报告!!!tomcat运行时可以看到错误报告!!!tomcat运行时可以看到错误报告!!!
(3)在错误报告的引导下发现是dao层在执行sql语句时出错,报出空指针错误,
于是可以猜测是连接没有获取到,进一步定位到了获取连接时出错了。
后来经过一系列的测试,找错了最后的错误原因—-权限问题
于是可以百度解决最后的问题了。
解决方法:
(1)登陆服务器,再登陆数据库
(2)找到名为“mysql”的库
(3)找到名为“user”的表
(4)在 “user” 中找到 “root” 所在的行,再将该行的 “Host” 中的 “localhost” 改为 “%”
(5) 刷新权限!!FLUSH PRIVILEGES
刷新权限!!FLUSH PRIVILEGES
刷新权限!!FLUSH PRIVILEGES
改完后效果如图
cmd下运行的命令为:
(1)use mysql;
(2)update user set host = \’%\’ where user = \’root\’;
(3)FLUSH PRIVILEGES;
——————–2019.12.31更新————————-
经过一段时间的理解和学习后,知道了为什么会出现之前的问题。
jdbc:mysql://IP地址:3306/database_name
注册驱动时连接数据库使用的地址是服务器的ip地址,那么即使数据库部署在了同一台服务器上,还是会通过远程连接的方式来连接数据库。所以问题就来了,远程连接的数据库权限不足,需要修改权限。
那么对于我来说,数据库部署的服务器和项目所部署到的服务器是同一台服务器,那么注册驱动时的地址就可以是localhost了,这样就不会出现权限的问题了。所以使用如下连接方式就可以了。
jdbc:mysql://localhost:3306/database_name