今天使用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管理,这里就使用一种吧。见下图,在之前的基础上加@MapperScan注解,括号里面就是你mapper的类路径。
下面是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就可以了。
相关代码已上传到了github上:https://github.com/DreamJieEn/springboot-linux-mysql