目录
一.修改数据库配置:
将localhost改为虚拟机的ip地址,记得添加useSSL=false,原因可以参考链接中博主的介绍
allowPublicKeyRetrieval=true是后面遇到的问题的解决方案,没遇到这个问题的可以先不加
二.打包springboot项目:
1.点击maven
2.双击clean
3.双击package打包
右键
在文件夹打开打包的文件
三.linux上的操作
3.1将项目传入linux
这里是通过xshell和xftp上传的,读者可自寻上传方法
3.2 将数据库中的表打包到linux
3.2.1 运行mysql
3.2.2 &3.2.3创建并使用新的数据库(这里报错是因为我已经创建过了petstoredb2)
注意! ; 不能省略
3.2.4转储sql文件
3.2.5右键数据库选择转储sql文件,将sql文件传入到linux中
3.2.6 运行sql文件
之后输入CTRL+z退出mysql
进入到存放springboot项目的文件夹
输入 java -jar 项目名
然后就可以运行了
参考链接:http://t.csdn.cn/TnalF
四、遇到的问题及解决
1、
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
解决:配置文件加上&useSSL=false,前面提了
2、
同一个项目,在windows下访问本地的mysql正常运行,在ubuntu虚拟机上面报下面异常,java.sql.SQLException:null, message from server: "Host '192.168.0.131' is not allowed to connect.
这个异常是数据库只允许localhost或127.0.0.1访问,不允许远程访问。但是,我用的本机IP都不行。
解决方案:(参考链接:http://t.csdn.cn/hy7pQ)
1、在cmd命令行连接数据库:mysql -uroot -p
2、切换mysql数据库:use mysql;
3、查看user表中的host信息:select host,user from user;
4、可以看到root对应的host是localhost,我们将它改成%即可:update user set host = '%' where user = 'root';
5、刷新权限:flush privileges;
ok,到这里,基本上就搞定了。
但是,我启动项目继续报错:Public Key Retrieval is not allowed。(没有报错的可忽略)
原因是,如果用户使用了 sha256_password 认证,密码在传输过程中必须使用 TLS 协议保护,但是如果 RSA 公钥不可用,可以使用服务器提供的公钥;可以在连接中通过 ServerRSAPublicKeyFile 指定服务器的 RSA 公钥,或者AllowPublicKeyRetrieval=True参数以允许客户端从服务器获取公钥;但是需要注意的是 AllowPublicKeyRetrieval=True可能会导致恶意的代理通过中间人攻击(MITM)获取到明文密码,所以默认是关闭的,必须显式开启。
解决:在mysql连接的url中加上allowPublicKeyRetrieval=true
3、
或者是(下面有些图从其他博客那借用的)
解决:将commons前面/去掉
不要写前面这个斜杠就行了,写成return “addemployee”;