記一次springboot訪問linux的mysql數據庫
今天使用springboot連接linux的mysql,期間一直報錯,這裏簡單記錄一下過程。
工具:idea-2017,linux-7.x,mysql-5.6.40。
首先說一下這幾個註解的作用:
(1)Spring Boot的@SpringBootApplication、@EnableAutoConfiguration、@ComponentScan註解,我經常在啟動類上傻傻分不清,
(2)@EnableAutoConfiguration這個註解是是Springboot根據我們所引入的jar包自動配置的,假設我們有自己的配置類則會覆蓋
(3)@ComponentScan是告訴springboot進行包掃描的
(4)而@SpringBootApplication註解等價於以默認屬性使用@Configuration, @EnableAutoConfiguration和@ComponentScan
由於springboot自動掃描啟動類目錄和子目錄,所以一般是把啟動類放在包的最外層,見下圖:cn.buding就是公司名或者項目名。
啟動springboot要是要下面錯誤:
這個是springboot整合mybatis時啟動沒有發現mapper,這是一般是mapper沒交給springboot管理啦,可能有挺多方式把mapper交給springboot管理,這裏就使用一種吧。見下圖,在之前的基礎上加
下面是springboot成功啟動的信息,拉到最下面就可以看見了,可以看見端口號。
下面是我的控制層:
啟動完之後,瀏覽器訪問http://localhost:8080/getUserInfo報錯:
再看看後臺:
連接超時了,看看數據庫配置文件:
登錄安裝mysql的虛擬機:
(這裏補充一下linux安裝mysql的命令start:
執行:#yum install -y mysql-server
要是出現下面的錯誤:
再把命令執行一遍,要是還報同樣的錯,那說明你的虛擬機配置文件有問題,稍微百度一下就可以了。
要是報下面這個錯誤:
可以這樣解決:
首先,執行:sudo rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.
如下圖:
再接著執行:# yum install mysql mysql-server mysql-libs mysql-server
如下圖:
這樣就成功安裝了。
配置開機自啟:# chkconfig mysqld on
啟動mysql服務:# service mysqld start
接著執行:# yum install -y mysql-connector-java
進入mysql:# mysql
設置密碼:update mysql.user set password=PASSWORD(‘123456‘) where user=‘root‘;
刷一下:flush privileges;
退出:quit
重新登錄:# mysql -uroot -p123456
創建數據庫: create database eshop default character set utf8;
查看數據庫: show databases;
進入數據庫 use eshop;
查看表:show tables;
創建表: create table user (
-> age int(11),
-> name varchar(20)
-> );
查看表:show tables;
插入數據:insert user values(18,"yu");
查看數據庫ip訪問權限:select host from mysql.user;select host,user from mysql.user;(這裏要是報錯,試著把兩個這樣mysql.user換成user)
更新一下:update mysql.user set host = ‘%‘ where user = ‘root‘;
出現下面這個錯誤不用理。
再查看數據庫:select host from mysql.user;
刷一下:flush privileges;
退出:quit;
開放3306端口;
進入:# cd /etc/sysconfig
要是沒有iptables
就創建一個:# vi iptables
把下面這段話粘貼過去。
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
退出,重啟網絡:# service iptables restart
要是報下面的錯誤:
就執行:# yum install iptables-service
要是顯示的錯誤:
就執行:# systemctl stop firewalld
# systemctl mask firewalld
再執行:# yum install iptables-services
設置開機啟動:# systemctl enable iptables
再重啟網絡:# service iptables restart
查看開放的端口:# iptables -L -n
這裏補充一下linux安裝mysql的命令end)
到這裏就基本結束了,使用springboot就可以訪問數據庫了,重新啟動一下springboot項目,就可以看見:
最後,再記一下mysql數據庫登陸的問題:
要是登錄mysql報:
查了好多百度,改了好多文件,還沒得,最後使用聯接工具Navicat打開連接,找到mysql數據庫打開user表,
上面是我改好的,打開後要是發現localhost那行的user和password為空,就把127.0.0.1那行的user和password復制到localhost,然後就把localhost那行除了password_expired這個不改之外,其他為N的全改為Y就可以了。
記一次springboot訪問linux的mysql數據庫