• SpringBoot项目连接linux服务器数据库两种解决方法(linux直接开放端口访问&本机通过SSH协议访问,以mysql为例)


    最近找个springboot脚手架重新熟悉一下springboot相关框架的东西,结果发现好像项目还不能直接像数据库GUI工具一样填几个SSH参数就可以了,于是就给他再整一下看看如何解决

    linux开放3306(可修改)端口直接访问

    此方法较为方便,无需修改代码,改好后只要把springboot项目中的mysql访问地址改成对应的linux主机ip即可
    在这里插入图片描述
    在使用GUI数据库工具时我们可以发现刚刚安装了数据库使用ssh通道就可以直接连接了,连基本的配置权限过程都冇,这是因为我们通过SSH连接到linux服务器相当于是远程控制linux主机,并使用linux主机的ip进行数据库操作,并不是我们本机ip直接进行操作的,所以mysql服务器识别的还是localhost(等价于127.0.0.1),是默认配置放行的,并且官方其实也是推荐只留localhost的,不过此处就是提供一种方法供选择。

    (1)首先开放mysql的非localhost访问权限,允许非本地ip进行访问
    使用root(或者其他高权限用户)访问mysql库内的user表,将对应需要修改的开放对外访问的ip的用户中的host字段修改为%即可,表示通配所有ip进行放行操作。
    在这里插入图片描述
    另外如果准备开放其他端口而不是3306的话,需要到/etc/my.cnf处进行添加 port=***即可
    修改完成后重启mysql数据库服务或者直接刷新权限

    mysql -u root -d
    flush privileges;
    
    • 1
    • 2

    systemctl restart mysqld
    
    • 1

    (2)开放linux防火墙
    当我们有购买过云服务器的话,就可以发现我们需要在外部进行ip直接连接的话,需要在端口控制处添加对应的端口以供外部连接(当然也会配套一些DDOS防卫,流量控制一类的配套服务),在虚拟机的话也是同样需要开启对应的防火墙。
    在网上搜寻了一大堆centos/rhel开放linux端口的文章,大部分都是让进行iptables配置,但是按照给出的文件路径,根本没有那个配置文件(/etc/sysconfig/iptables),我:?
    后来才发现一位大佬的博客帮忙解了惑 https://www.cnblogs.com/AllWjw/p/15761697.html
    总之就是每个centos/rhel大版本防火墙服务不尽相同,需要分开讨论,现在基本上主流Centos7所以使用的是firewalld服务
    在这里插入图片描述

    firewall-cmd --state ##查看防火墙状态,是否是running
    firewall-cmd --add-port=3306/tcp --permanent ##永久添加3306端口
    firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
    firewall-cmd --list-ports ##查看当前开放的端口
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    按顺序执行下来即可,看起来对应的端口已经正常开放了。
    先用navicat小试一下看看
    在这里插入图片描述
    测试直接连接成功,接下来走个springbootApplication直接连接(项目是直接去gitee拉下来的renren-security)
    在这里插入图片描述

    SpringBoot项目通过SSH通道进行数据库访问

    //TODO 近日测试后补充

  • 相关阅读:
    【网站项目】437物流管理系统
    csrf防护机制
    Spring 更简单的读取和存储对象
    XSS进阶二
    STM32Cube学习(3)——ADC
    45、Flink 的 Process Function 详解
    驱动开发之pinctrl 和 gpio 子系统
    简约高效,定制片头片尾时长,视频剪辑更得心应手!
    flink cdc MySQL2Doris 案例分享
    【闲聊杂谈】源码追踪Spring的JDK和CGLib动态代理
  • 原文地址:https://blog.csdn.net/weixin_43903312/article/details/134495628