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

相关文章

来自专栏磨磨谈

ceph luminous 新功能之内置dashboard

ceph luminous版本新增加了很多有意思的功能,这个也是一个长期支持版本,所以这些新功能的特性还是很值得期待的,从底层的存储改造,消息方式的改变,以及一...

1022
来自专栏磨磨谈

Ceph S3 基于NGINX的集群复制方案

ceph的s3数据的同步可以通过radosgw-agent进行同步,同region可以同步data和metadata,不同region只能同步metadata,...

642
来自专栏Java大联盟

搭建MongoDB服务器

MongoDB是一个基于分布式文件存储的数据库,是当前NoSQL数据库产品中最热门的一种文档型数据库,功能最丰富,最像关系型数据库的产品,它支持的数据结构非常松...

873
来自专栏恒思考

实现app配置服务

我们要做一个app首先要实现后端,打算做个app叫恒思考。这个app后台由leancode,firebase,自建parse服务器。防止某个服务器不可用以后导致...

1693
来自专栏木子昭的博客

Ubuntu运行GitHub获取的Django项目准备工作从GitHub克隆项目安装数据库(要设置密码)搭建python环境修改项目配置文件将测试数据库导入到本地新建的数据库中运行项目

经常在github看到一些优秀的Django项目,但Django的运行需要大量的依赖,这里分享一下,从github获取Django项目,并在本地运行项目的小经...

2623
来自专栏刺客博客

Linux下Supervisor详细配置

1553
来自专栏运维小白

15.1 FTP介绍

FTP介绍 FTP多用于Windows传文件到linux rz sz在文件超过4G,就无法使用了——>安装包yum install -y install lrz...

2125
来自专栏开源优测

SQL注入测试神器sqlmap

SQL注入测试神器sqlmap 介绍 sqlmap 是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。 它具有功能强大...

3388
来自专栏JetpropelledSnake

网络安全之在Kali Linux上安装Openvas

本文目录:   一、解决和配置更新源问题   二、安装Openvas   三、自定义登陆密码   四、升级Openvas    五、查看Openvas运行情况 ...

3135
来自专栏Ken的杂谈

【Ubuntu系统上手】一、Ubuntu基本命令

681

扫码关注云+社区