前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在腾讯云上启用 PostgreSQL 数据库远程访问?

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

原创
作者头像
EarlGrey
修改2017-06-19 18:55:52
7.1K0
修改2017-06-19 18:55:52
举报
文章被收录于专栏:EarlGrey的专栏EarlGrey的专栏

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

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

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

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

代码语言:txt
复制
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 文件的格式是一组记录,每条记录一行。记录的格式如下:

代码语言:txt
复制
host       database  user  address  auth-method  [auth-options]

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

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

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

代码语言:txt
复制
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 处于同一目录下。

代码语言:txt
复制
vim postgresql.conf

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

代码语言:txt
复制
listen_addresses = '*'

第四步:重启 PostgreSQL

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

代码语言:txt
复制
service postgresql restart

第五步:安全组设置

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

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

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

[1496389721887_5106_1496389722094.png]
[1496389721887_5106_1496389722094.png]

结语

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步:登陆数据库所在服务器
  • 第二步:启用客户端验证
  • 第三步:启用 TCP/IP 连接
  • 第四步:重启 PostgreSQL
  • 第五步:安全组设置
  • 结语
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档