Postgres对外提供服务流程

news/2025/1/15 22:50:25/

要将 PostgreSQL(pq)暴露到外部网络并允许外部连接,你需要进行一些配置,具体包括以下几个步骤:

1. 修改 postgresql.conf 配置文件

PostgreSQL 默认只允许本地连接。如果你希望允许远程连接,需要修改 PostgreSQL 配置文件中的 listen_addressesport 配置。

  1. 打开 postgresql.conf 配置文件:

    sudo nano /etc/postgresql/<version>/main/postgresql.conf
    
  2. 找到 listen_addresses 配置,通常它会被注释掉或者设置为 localhost。你需要将其修改为 *(表示接受任何主机的连接),或者你也可以指定特定的 IP 地址来限制连接。

    修改前:

    #listen_addresses = 'localhost'
    

    修改后:

    listen_addresses = '*'
    

    如果你只想允许某些特定 IP 地址的连接,可以将 * 替换为具体的 IP 地址,比如:

    listen_addresses = '192.168.1.100'
    
  3. 确保端口号设置正确(如果需要的话),通常默认为 5432。找到 port 配置项:

    port = 5432
    

2. 修改 pg_hba.conf 配置文件

PostgreSQL 还使用 pg_hba.conf 文件来控制哪些用户和主机可以连接到数据库。你需要修改该文件来允许外部连接。

  1. 打开 pg_hba.conf 文件:

    sudo nano /etc/postgresql/<version>/main/pg_hba.conf
    
  2. 添加一个允许外部连接的规则。例如,要允许来自任意 IP 地址(0.0.0.0/0)的连接,可以添加以下行:

    host    all             all             0.0.0.0/0            md5
    

    这条规则表示:

    • host: 允许通过 TCP/IP 连接。
    • all: 所有数据库
    • all: 所有用户。
    • 0.0.0.0/0: 允许任何 IP 地址连接。
    • md5: 使用密码认证。

    如果你只希望允许来自特定 IP 地址段的连接,可以将 0.0.0.0/0 替换为你指定的地址段,例如 192.168.1.0/24

3. 防火墙配置

确保服务器的防火墙允许外部访问 PostgreSQL 的端口(默认是 5432)。

  1. 检查防火墙状态: 在 Debian 或 Ubuntu 上,你可以使用 ufw(Uncomplicated Firewall)来配置防火墙规则:

    sudo ufw status
    
  2. 允许 PostgreSQL 的端口(5432): 如果防火墙启用了 ufw,你可以使用以下命令允许 5432 端口:

    sudo ufw allow 5432/tcp
    
  3. 如果使用其他防火墙工具(如 iptables,确保相应的规则允许 PostgreSQL 端口的外部访问。

4. 重启 PostgreSQL 服务

配置完成后,重启 PostgreSQL 服务以使配置生效:

sudo systemctl restart postgresql

5. 连接到 PostgreSQL

一旦 PostgreSQL 配置好接受外部连接并且防火墙允许外部访问,你可以尝试从外部主机连接到 PostgreSQL 数据库。例如,使用 psql 从远程主机连接:

psql -h <your-server-ip> -U <your-username> -d <your-database>

确保替换 <your-server-ip><your-username><your-database> 为实际的服务器 IP 地址、用户名和数据库名。


小结

  • 修改 postgresql.conf 让 PostgreSQL 监听外部连接。
  • 配置 pg_hba.conf 允许外部 IP 连接。
  • 配置防火墙允许访问 PostgreSQL 端口。
  • 重启 PostgreSQL 服务应用更改。

http://www.ppmy.cn/news/1563442.html

相关文章

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二)

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《…

STM32程序发生异常崩溃时,怎样从串口输出当时的程序调用栈等信息

当STM32程序发生异常崩溃时&#xff0c;为了从串口输出当时的程序调用栈信息&#xff0c;并使用Keil等工具确定具体的函数信息&#xff0c;你可以按照以下步骤操作&#xff1a; 启用调试信息输出&#xff1a; 在STM32程序中&#xff0c;你需要先确保启用了调试信息的输出。这通…

c++ 手写queue循环队列

继承与多态 继承 父子出现同名的成员问题 #include <iostream>using namespace std; //父子类中出现重名成员 //定义一个父类 class Father{ public:string name; protected:int pwd; private:int money; public:Father(){cout<<"Father::构造"<&l…

USB 驱动开发 --- Gadget 驱动框架梳理(一)

本文由 Linux 内核文档翻译与总结而来&#xff0c;个人学习笔记仅供参考。 Gadget 框架 在 USB 协议交互过程中&#xff0c;角色定义&#xff1a; the device driver is the master (or “client driver”) Linux 内核中称为 HCD(Host Controller Driver)&#xff0c;负责与 …

Flask表单处理与验证

Flask是一个轻量级的Python框架&#xff0c;它通过扩展库提供了对表单处理与验证的支持。WTForms是一个流行的Flask扩展库&#xff0c;用于创建和验证Web表单。它提供了一种声明式的方法来定义表单结构和验证逻辑&#xff0c;使得表单处理更为简洁和优雅。下面&#xff0c;我们…

第一章:走入HTML

目录 一、HTML的简介  1.介绍 2.HTML的概念和功能 3.HTML的发展历史 二、准备工作 1.编译器的安装 2.相关插件 &#xff08;1&#xff09;中文插件 &#xff08;2&#xff09;Live Server插件 3.快捷键配置方式 三、HTML的基本结构 1.HTML的基本结构 2.快捷方式 四、总…

4Hive计算引擎

4Hive计算引擎 1 MR计算引擎2 Tez计算引擎3 Spark计算引擎 目前Hive支持MapReduce、Tez和Spark 三种计算引擎。 1 MR计算引擎 MR运行的完整过程&#xff1a; Map在读取数据时&#xff0c;先将数据拆分成若干数据&#xff0c;并读取到Map方法中被处理。数据在输出的时候&#…

6.1 MySQL数字函数和条件函数

以前我们在课程中使用过一些mysql的内置函数&#xff0c;比如说四舍五入的round函数&#xff0c;做日期计算的data, datediff函数等等。那么本次课程咱们就来系统的学习一下mysql的这些内置函数&#xff0c;我们使用编程语言写程序的时候&#xff0c;通常会把某一项业务功能封装…