如何在腾讯云上启用 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 条评论
登录 后参与评论

相关文章

来自专栏散尽浮华

Nginx通过https方式反向代理的简单实现

1)nginx的反向代理:proxy_pass 2)nginx的负载均衡:upstream 下面是nginx的反向代理和负载均衡的实例: 负载机:A机器:103...

6446
来自专栏Java 源码分析

Docker 入门

2136
来自专栏CodeSheep的技术分享

Nginx服务器开箱体验

1636
来自专栏我的博客

清除DNS缓存

清除DNS缓存信息法: 当计算机对域名访问时并不是每次访问都需要向DNS服务器寻求帮助的,一般来说当解析工作完成一次后,该解析条目会保存在计算机的DNS缓存列...

3424
来自专栏星汉技术

虚拟机:Linux系统安装

1397
来自专栏Jay的后台开发笔记

简单的linux系统配置故障定位与排除

本文旨在通过一些常用命令的用法示例,让有一定linux基础的开发同学能对系统进行简单配置,也能够上服务器定位或者解决一些简单基础性的问题,做出初步故障排除,或者...

954
来自专栏企鹅号快讯

基于Ansible实现平台自动部署初探

Hi,大家好。今天跟大家聊一聊Ansible。 什么是Ansible? Ansible是一个批量部署远程主机的工具。远程的主机可以是远程虚拟机,远程物理机,也可...

2818
来自专栏有困难要上,没有困难创造困难也要上!

CentOS7安装Caffe

2717
来自专栏白驹过隙

Redis - 密码配置和主从复制

3468
来自专栏破晓之歌

Redis入门(暂不更新) 原

50个并发程序执行10万个请求,redis读的速度能达到每秒11万次,写的速度能达到每秒8万次。-官方数据

492

扫码关注云+社区