Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库
作者:mmseoamin日期:2024-04-29

文章目录

  • 前言
  • 1. 安装sql server
  • 2. 局域网测试连接
  • 3. 安装cpolar内网穿透
  • 4. 将sqlserver映射到公网
  • 5. 公网远程连接
  • 6.固定连接公网地址
  • 7.使用固定公网地址连接

    前言

    简单几步实现在Linux centos环境下安装部署sql server数据库,并结合cpolar内网穿透工具,创建安全隧道将其映射到公网上,获取公网地址,实现在外异地远程连接家里/公司的sqlserver数据库,而无需公网IP,无需设置路由器,亦无需云服务器。

    1. 安装sql server

    下载 SQL Server 2022 (16.x) Red Hat 存储库配置文件:

    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
    

    运行以下命令以安装 SQL Server:

    sudo yum install -y mssql-server
    

    然后等待安装完成

    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418133937641,第1张

    包安装完成后,使用其完整路径运行 mssql-conf setup,按照提示设置 SA 密码并选择版本。

    sudo /opt/mssql/bin/mssql-conf setup
    

    前面三个版本是免费提供许可的:Evaluation、Developer 和 Express 版,我们选择第二个作为测试使用

    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418134248124,第2张

    然后同意一下许可条款,输入yes

    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418134351933,第3张

    选择中文语言

    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,第4张

    然后设置管理员密码,把密码记住,不要忘了

    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418134542902,第5张

    然后安装完成,会自动启动

    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,第6张

    完成配置后,验证服务是否正在运行:

    systemctl status mssql-server
    

    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,第7张

    默认的 SQL Server 端口为1433,TCP协议。 如果为防火墙使用的是FirewallD,则可以使用以下命令:

    sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
    

    设置完重启防火墙

    sudo firewall-cmd --reload
    

    此时,安装完成了。

    注意:如果需要使用命令行连接,在安装sqlserver的时候就需要安装sql server命令行工具,可以参考官方教程:https://learn.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-red-hat?view=sql-server-ver16

    2. 局域网测试连接

    由于我没有安装命令行工具,所以我们使用图形化工具连接,这边使用navicat进行测试连接,输入局域网ip地址,输入用户名sa,密码上面设置的密码,点击测试连接出现连接成功

    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,第8张

    点击数据库,勾选默认的数据库,

    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418141543515,第9张

    登陆后即可看到默认表信息

    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418141621762,第10张

    3. 安装cpolar内网穿透

    上面步骤里,我们在本地Linux安装了sql server 数据库并且局域网测试ok。

    接下来我们安装cpolar内网穿透工具,通过cpolar的tcp公网地址,我们可以很容易实现远程访问sql server,而无需自己注册域名购买云服务器。cpolar它支持http/https/tcp/tls/ftp协议,使用不限制流量,支持永久免费使用。

    cpolar官网:https://www.cpolar.com/

    • 使用一键脚本安装命令
      curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
      
      • token认证

        登录cpolar官网后台,点击左侧的验证,查看自己的认证token,之后将token贴在命令行里:

        cpolar authtoken xxxxxxx
        

        Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,20230206171248,第11张

        • 向系统添加服务
          sudo systemctl enable cpolar
          
          • 启动cpolar服务
            sudo systemctl start cpolar
            

            4. 将sqlserver映射到公网

            成功启动cpolar服务后,我们在浏览器上访问cpolar web UI管理界面:Linux局域网ip地址+9200端口,使用cpolar邮箱账号登录(如果你还没注册账号的话,在cpolar官网注册一个)

            登录成功后,点击左侧仪表盘的隧道管理——创建隧道,创建一个tcp协议的隧道指向sql server的1433端口:

            • 隧道名称:可自定义,注意不要与已有的隧道名称重复
            • 协议:tcp
            • 本地地址:1433
            • 域名类型:免费选择随机域名
            • 地区:选择China VIP

              点击创建

              Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,第12张

              然后打开在线隧道列表,查看并且复制tcp协议的公网地址。【注意无需复制tcp://】

              Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418144336674,第13张

              5. 公网远程连接

              打开navicat或者其他连接工具,输入上面我们使用cpolar内网穿透工具所获取的公网地址,以及sqlserver用户名密码,点击测试连接,出现连接成功表示成功。

              需要注意:公网地址中的冒号(:)需改为逗号(,)

              Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418144828933,第14张

              6.固定连接公网地址

              由于以上步骤使用的是随机临时tcp端口地址,所生成的公网地址为随机临时地址,该公网地址24小时内会随机变化。我们接下来为其配置固定的TCP端口地址,该地址不会变化,设置后将无需每天重复修改地址,同时提高带宽速度。

              配置固定tcp端口地址需要将cpolar升级到专业版套餐或以上。

              • 保留一个固定tcp地址

                登录cpolar官网后台,点击左侧的预留,找到保留的tcp地址,我们来为远程sqlserver保留一个固定的tcp地址:

                • 地区:选择China vip
                • 描述:即备注,可自定义

                  点击保留

                  Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418145833394,第15张

                  地址保留成功后,系统会生成相应的固定公网地址,将其复制下来

                  Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418151401097,第16张

                  • 配置固定tcp地址

                    在浏览器上登录cpolar web UI管理界面,Linux局域网ip地址+:9200端口。

                    点击左侧仪表盘的隧道管理——隧道列表,找到我们上面创建的远程sqlserver隧道,点击右侧的编辑

                    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418151434081,第17张

                    修改隧道信息,将保留成功的固定tcp地址配置到隧道中

                    • 端口类型:修改为固定tcp端口
                    • 预留的tcp地址:填写官网保留成功的地址

                      点击更新

                      Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418151510331,第18张

                      隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新成为了固定tcp地址。

                      Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418151535219,第19张

                      7.使用固定公网地址连接

                      打开navicat连接工具,输入官网保留的固定tcp地址,点击测试连接,提示连接成功。

                      需要注意,公网地址后面端口的冒号(:)需改为逗号(,)

                      Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库,image-20230418152150422,第20张

                      现在这个公网地址不会再随机变化了,只要保持隧道正常在线,我们在外就可以通过这个固定公网地址来远程连接局域网的sqlserver数据库。