今天突然想到把自己之前的項目掛到服務器上,但是用到了數據庫,於是給服務器裝上了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