草庐IT

【SQL】公网远程访问局域网SQL Server数据库【无公网IP内网穿透】

Yan-英杰 2023-04-13 原文

目录

1.前言

2.本地安装和设置SQL Server

        2.1 SQL Server下载

        2.2 SQL Server本地连接测试

        2.3 Cpolar内网穿透的下载和安装

        2.3 Cpolar内网穿透的注册

3.1 Cpolar云端设置

        3.2 Cpolar本地设置

4.公网访问测试

5.结语


转发自CSDN远程穿透的文章:[无需公网IP,远程连接SQL Server数据库【内网穿透】无需公网IP,远程连接SQL Server数据库【内网穿透】

1.前言

数据库的重要性相信大家都有所了解,作为各种数据的电子资料夹,其中可能包含了各种信息,从企业员工信息到网站访问或成交数据无所不包,甚至在某些场景下,数据库已经成为企业正常运行必不可少的条件之一。与企业的其他工作一样,数据库也需要进行必要的维护。但经过口罩时期的考验,为自家数据库做一个远程操作的设置显得很有必要。今天,笔者就为大家介绍,如何使用cpolar内网穿透,远程连接和操作SQL Server。

2.本地安装和设置SQL Server

Microsoft SQL Server算是比较知名的关系型数据库管理软件,虽然不算是应用最多的,但其作为微软出品,对自家的Windows系列操作系统有很好的兼容性,因此很适合应用在各种安装了Windows操作系统的硬件上,并承担起数据管理软件的责任。

        2.1 SQL Server下载

由于SQL Server是微软出品,因此可以轻松的在微软的官网上找到下载(SQL Server Downloads | Microsoft

 点击所需版本下载(笔者选择了Developer),双击下载好的.exe文件,就可以进行自动安装。

 在`安装模式`选项中,同样选择所需的模式。在这里,笔者选择了基本安装模式。

 接下来就是一路`Next`即可完成安装程序

        2.2 SQL Server本地连接测试

完成安装后,SQL Server会自动转入操作界面,我们在这里点击下方的`立即连接`按钮。

这时会弹出SQLCMD命令行窗口,只要显示内容如下图所示,就说明我们本地的SQL Server安装完成。

2.3 Cpolar内网穿透的下载和安装

接下来,我们继续安装远程连接SQL Server的关键软件:Cpolar。与Microsoft SQL Server一样,我们可以登入Cpolar的官网([www.cpolar.com](www.cpolar.com)),点击首页上方的`下载`按钮,进入cpolar下载页面,下载所需版本的cpolar软件。当然,我们这里选择Windows版本进行下载。

Cpolar下载完成后,将下载的文件解压,点击.msi文件,就能进入cpolar自动安装程序,只要一路`Next`就能完成安装。

        2.3 Cpolar内网穿透的注册

由于cpolar是以注册用户为区分,为每个用户(无论是免费还是付费)创建单独的数据隧道,辅以每个用户独立的密码和token码,以此保证用户的数据安全。因此我们在使用cpolar前,需要进行注册,注册的过程也非常简单,直接点击cpolar官网右上键的`注册`按钮,进入用户注册页面,再设置用户名、密码等几项简单信息,就能完成新用户的注册。

3.本地网页发布

这时我们在本地电脑上安装了SQL Server和cpolar,接下来我们就可以使用cpolar内网穿透,创建一条能够从公共互联网上直连本地SQL Server的数据隧道,达到远程访问SQL Server的目的。

需要注意的是,cpolar免费版设置的数据隧道地址以24小时为周期进行重置,VIP版则可以创建长期稳定不变化的数据隧道地址。但我们并不知道何时会需要远程连接数据库(笔者就因疫情临时管控吃过大亏),因此笔者将cpolar升级至VIP版,以便创建能够长期稳定的数据隧道。

3.1 Cpolar云端设置

首先,我们登录cpolar客户端,在`仪表台`页面左侧找到`预留`按钮,进入数据隧道的“预留”页面。

在cpolar的预留页面,我们找到`保留的TCP地址`栏位,为我们要连接的SQL Server设置一个公网地址,这个地址可以看做是数据隧道的入口,也可以理解为空白数据隧道(毕竟这里设置的隧道入口还没有关联本地软件的输出端口)。

在`保留的TCP地址`栏位,我们只要进行两项简单的设置:

- 地区:即服务器所在区域,我们就近选择即可

- 描述:可以看做这条数据隧道的注释,只要方便分辨即可

完成这两项设置后,就可以点击右侧的“保留”按钮,将这条数据隧道的入口固定下来。

        这里我们需要将`地址`栏位的内容复制下来,在cpolar客户端进行设置时会需要到这个地址。当我们不再需要这条数据隧道时,还可以点击右侧的`x`将这条保留的隧道删除,节约珍贵的隧道名额。

        免费版的临时数据隧道不需要进行cpolar云端设置,可直接进行cpolar客户端设置,但也就无法设置能够长期稳定存在的数据隧道。

3.2 Cpolar本地设置

接着,我们回到本地电脑上安装的cpolar客户端(可以从开始菜单点击快捷方式,也可以直接在浏览器输入localhost:9200访问)。在cpolar的客户端左侧,我们点击`隧道管理`项下的`创建隧道`按钮,进行本地数据隧道的设置,将cpolar云端创建的隧道入口与本地SQL Server连结起来。

当然了,想要创建数据隧道,仍需要进行一些设置,具体为:

 1. `隧道名称`:该栏同样可以看做是数据隧道的备注,用于与其他本地创建的隧道进行区分,这里我们输入`微软SQL`;

 2. `协议`:该栏是内网穿透的应用场景,如发布网页、数据传输、硬件互联等,本例中选择`TCP协议`;

 3. `本地地址`:该栏需要填入SQL Server的输出端口号,即端口`1433`(SQL Server的默认端口号);

 4. `端口类型`:该栏主要是内网穿透数据隧道的持续时间,打算长期使用的点选`固定TCP端口`;若只是测试或临时使用,则选择`随机临时TCP端口`(需要注意的是,固定TCP端口需要将cpolar升级至专业版及以上)

 5. `预留的TCP地址`:该栏位仅限于选择了“固定TCP端口”的用户,若勾选的是“随机临时TCP端口”选项,则不会出现该栏位。填写我们刚刚`保留成功的固定TCP端口地址`。

在完成这些设置后,就可以点击下方的`创建`按钮,将cpolar云端保留的空白数据隧道与本地SQL输出端口连结起来。

        完成本地数据隧道的创建后,cpolar客户端会自动跳转至`隧道管理`项下的`隧道列表`页面。

        在这里,我们能清晰的看到所有数据隧道的运行情况(是否正常在线或断开),并对某条数据隧道进行操作,如启动、停止或删除,如果想要对已有的数据隧道进行信息更改,也可以在这里找到编辑入口。

4.公网访问测试

        完成cpolar客户端的设置后,我们可以点击`状态`项下的`在线隧道列表`页面,找到远程访问本地SQL Server的地址(也就是隧道入口),我们将这个地址粘贴到不同的远程数据库管理软件中,就能连接到本地的SQL Server上。

 比如Windows命令行下(公网地址的最前面的tcp://无需复制)

sqlcmd -s 公网地址:公网端口号

        或者使用Navicat工具,在连接页面的`主机`栏位,填入cpolar生成的地址(去掉最前面的tcp://,并将末尾数字端口号前的冒号`:`改为逗号`,`)

        同理,我们还能使用SSMS图形界面进行远程连接,同样在连接界面,将cpolar生成的地址粘贴到`服务器名称`栏位(去掉最前面的tcp://,并将末尾数字端口号前的冒号“:”改为逗号“,”),就能连接到本地电脑上的SQL Server。

5.结语

        至此,我们就完成了将本地Microsoft SQL Server通过远程登录的设置,并且使用cpolar生成的地址,能从多个数据库管理软件登录到SQL Server上,大大增加了我们工作的便利性。

有关【SQL】公网远程访问局域网SQL Server数据库【无公网IP内网穿透】的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  3. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  4. ruby - 从 Ruby 中的主机名获取 IP 地址 - 2

    我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge

  5. Hive SQL 五大经典面试题 - 2

    目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类

  6. sql - 查询忽略时间戳日期的时间范围 - 2

    我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时

  7. ruby - 有没有办法从 ruby​​ case 语句中访问表达式? - 2

    我想从then子句中访问c​​ase语句表达式,即food="cheese"casefoodwhen"dip"then"carrotsticks"when"cheese"then"#{expr}crackers"else"mayo"end在这种情况下,expr是食物的当前值(value)。在这种情况下,我知道,我可以简单地访问变量food,但是在某些情况下,该值可能无法再访问(array.shift等)。除了将expr移出到局部变量然后访问它之外,是否有直接访问caseexpr值的方法?罗亚附注我知道这个具体示例很简单,只是一个示例场景。 最佳答案

  8. ruby - 从外部访问类的实例变量 - 2

    我理解(我认为)Ruby中类变量和类的实例变量之间的区别。我想知道如何从该类外部访问该类的实例变量。从内部(即在类方法中而不是实例方法中),它可以直接访问,但是从外部,有没有办法做MyClass.class.[@$#]variablename?我没有任何具体原因要这样做,只是学习Ruby并想知道是否可行。 最佳答案 classMyClass@my_class_instance_var="foo"class上述yield:>>foo我相信Arkku演示了如何从类外部访问类变量(@@),而不是类实例变量(@)。我从这篇文章中提取了上述内

  9. ruby-on-rails - 使用 HTTP.get_response 检索 Facebook 访问 token 时出现 Rails EOF 错误 - 2

    我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token

  10. sql - 在 Rails Console for PostgreSQL 的表中显示数据 - 2

    我找到了这样的东西:Rails:Howtolistdatabasetables/objectsusingtheRailsconsole?这一行没问题:ActiveRecord::Base.connection.tables并返回所有表但是ActiveRecord::Base.connection.table_structure("users")产生错误:ActiveRecord::Base.connection.table_structure("projects")我认为table_structure不是Postgres方法。如何列出Postgres数据库的Rails控制台中表中的所有

随机推荐