如何在腾讯云上启用 PostgreSQL 数据库远程访问?

我在腾讯云服务器上跑了一个爬虫,定期监测某个网站的文章更新,使用的数据库是 PostgreSQL(具体是 9.3 版)。我最近想在本地端直接连接到服务器上运行的那个数据库进行查询,但是 PostgreSQL 在安装时并没有默认开启允许远程访问,必须要进行额外的配置。

本文介绍的就是如何开启 PostgreSQL 数据库远程访问的具体步骤和方法。本文所列操作,也适合希望使用云服务器自建数据库的同学。

第一步:登陆数据库所在服务器

由于以下大部分操作都需要在数据库所在的服务器上完成,因此请先确保能够通过 SSH 客户端登陆到服务器,并切换到 postgres 用户下。

ssh db_server
sudo su -u postgres # Ubuntu 下默认创建 postgres 用户时可能没有设置密码,需要通过能够执行 sudo 命令的用户切换

第二步:启用客户端验证

PostgreSQL 的客户端验证由一个名为 pg_hba.conf 的配置文件控制,hba 的意思是「基于主机的验证」(host-based authentication)。按照官方文档的解释,该文件一般位于数据库目录中的 data 子目录下。

不过在我的线上环境中,这个文件位于 /etc/postgresql/9.3/main 下。

pg_hba.conf 文件的格式是一组记录,每条记录一行。记录的格式如下:

host       database  user  address  auth-method  [auth-options]

可选的形式共有 7 种,上面只列了本文将用到记录格式,其余内容详见官方文档

  • host:表示匹配使用 TCP/IP 进行的连接
  • database:指定该条记录匹配的数据库,可设置为 all
  • user:指定该条记录匹配的数据库用户,可设置为 all
  • auth-method:表示连接时进行验证的方式,常见的选项有:
    • trust:无条件允许连接,意味着任何人都能够访问
    • md5:要求客户端提供 md5 加密过的密码
    • password:要求客户端提供未经加密的密码

由于我们的目的是希望能够从任意公网 IP 访问数据库,不限制用户和数据库,并且确保密码不会轻易泄露,因此输入以下记录:

cd /etc/postgresql/9.3/main
vim pg_hba.conf # 在文件的最后加上以下记录
host all all 0.0.0.0/0 md5

所以,最后在实际连接时,切记对用户密码进行 md5 加密。

第三步:启用 TCP/IP 连接

接下来,我们还要开启 PostgreSQL 允许通过 TCP/IP 进行连接的特性。这主要通过 postgresql.conf 配置文件控制,该文件和 pg_hba.conf 处于同一目录下。

vim postgresql.conf

然后,将配置中的监听 IP 地址设置为 *,表示要监听来自所有 IP 的连接请求。

listen_addresses = '*'

第四步:重启 PostgreSQL

完成以上两个核心步骤之后,我们基本的配置工作就完成了。接下来重启数据库服务。

service postgresql restart

第五步:安全组设置

最后,由于我们使用的是腾讯云服务器,会通过安全组设置来控制对外开放的端口。我们要确保数据库所使用的 5432 端口是打开的。

打开安全组的控制台页面。选择目前服务器正在使用的安全组,然后进行编辑。

安全组配置主要包括入站规则和出站规则的配置,示意图如下:

结语

至此,我们就完成了所有配置工作。以后,就可以在本地通过命令行或者 SQL 工具直接连接到远程数据库,查询最新的数据情况了。不过根据数据量的大小和带宽限制,查询的时间可能会比较长。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

在CVM上使用rbenv安装RoR

Ruby on Rails(官方简称为Rails,亦被简称为RoR),是一个使用Ruby语言写的开源Web应用框架,它是严格按照MVC结构开发的。它努力使自身保...

1828
来自专栏博客园

Windows下Nginx的启动、停止等命令

http://wanganwu.blog.163.com/blog/static/7788722012322111417966/

1442
来自专栏丑胖侠

Linux下修改jar、zip等文件内的文件

看到很多同事在Linux环境下修改jar包内的文本文件或zip中的文本文件时,经常是先把jar包或zip包下载下来,然后修改,再上传。其实Linux针对此类文件...

2489
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统--系统权限及操作指引

4003
来自专栏Python研发

linux基本命令

   ifconfig(查看系统ip) root(超级用户)     passwd(设置密码)     username(用户名)        (加目录用~表...

1062
来自专栏Albert陈凯

Hadoop数据分析平台实战——020Hadoop Shell命令(初学跳过)离线数据分析平台实战——020Hadoop Shell命令(可跳过)

离线数据分析平台实战——020Hadoop Shell命令(可跳过) Hadoop Shell命令简单描述 Hadoop的Shell命令主要分为两类: 一类是启...

3415
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统--系统权限及操作指引

3872
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统--系统权限及操作指引

1672
来自专栏云计算与大数据

研发:基于Appium测试android应用尝试

export PATH=$PATH:/usr/local/android/platform-tools

811
来自专栏CSDN技术头条

Windows OS上安装运行Apache Kafka教程

下面是分步指南,教你如何在Windows OS上安装运行Apache Zookeeper和Apache Kafka。 简介 本文讲述了如何在Windows O...

3027

扫码关注云+社区

领取腾讯云代金券