centos 下安装postgres的远程连接问题

本文介绍了解决CentOS系统中PostgreSQL数据库远程连接问题的过程。通过调整iptables防火墙规则,解决了pgadmin远程连接失败的问题。文章还探讨了基于状态的匹配规则对于网络连接的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按照postgres官网的步骤,yum安装postgresql 9.4成功。

配置文件pg_hba.conf和postgresql.conf也更改了远程连接需要改的地方。

然后远程用pgadmin就是无法连接。关闭centos的防火墙service iptables stop后,就能连接了。

防火墙也添加了

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT

还是不行。

后来改成

-A INPUT  -p tcp -m tcp --dport 5432 -j ACCEPT

然后service iptables restart,就能远程连接了。

看来和防火墙的--state NEW 是否是 

4)基于状态的匹配扩展(连接跟踪)
每个网络连接包括以下信息:源地址、目标地址、源端口、目的端口,称为套接字对(socket pairs);协议类型、连接状态(TCP协议)
和超时时间等。防火墙把这些信息称为状态(stateful)。状态包过滤防火墙能在内存中维护一个跟踪状态的表,比简单包过滤防火墙具有更大的安全性,命令格式如下: 
iptables -m state –-state [!]state [,state,state,state]
其中,state表是一个逗号分割的列表,用来指定连接状态,4种:
>NEW: 该包想要开始一个新的连接(重新连接或连接重定向)
>RELATED:该包是属于某个已经建立的连接所建立的新连接。举例:
FTP的数据传输连接和控制连接之间就是RELATED关系。
>ESTABLISHED:该包属于某个已经建立的连接。
>INVALID:该包不匹配于任何连接,通常这些包被DROP。
例如:
(1)在INPUT链添加一条规则,匹配已经建立的连接或由已经建立的连接所建立的新连接。即匹配所有的TCP回应包。
#iptables -A INPUT -m state –state RELATED,ESTABLISHED

有关,以后再研究

 

在CentOS中,iptables规则是从一个文件(/etc/sysconfig/iptables)中,从上到下读取配置的,后一条的规则能覆盖(override)前一条规则,例如默认规则下有2条拒绝规则:

-A INPUT -j REJECT --reject-with icmp-host-prohibited   

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

这两条规则的含义是拒绝其他不符合规则的数据包,并且给被拒绝的主机发送一条icmp host prohibited的消息。并且这两条规则可以认为是iptables对默认规则的补充,因为在这些默认规则之前,有:INPUT ACCEPT [0:0]这样的规则,这些规则表示默认全部允许。

 

那说了这么多,到底要表达什么呢?不知道有没有这样的印象,就是在CentOS中直接使用iptables命令插入一个规则,并没有起作用,原因就是它默认被插入到了REJECT规则的下面?例如执行“iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8088 -j ACCEPT”却发现不好用,原因是它插入到“-A INPUT -j REJECT --reject-with icmp-host-prohibited”的下面,要想好用,那必须插入到它的前面,例如执行“iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8088 -j ACCEPT”,这样它就会被添加到INPUT链的最前端,也就起到预期的作用了。

### 如何在 CentOS安装 PostgreSQL 数据库 #### 准备工作 为了确保顺利安装,在开始前需确认系统满足基本条件并更新至最新状态。对于CentOS而言,保持系统的稳定性与安全性至关重要[^1]。 #### 获取PostgreSQL资源 访问官方下载页面或选择可信第三方镜像站点获取适合当前操作环境的PostgreSQL版本文件。针对CentOS7,具体配置选项应依据实际需求而定[^2]。此外,也可以考虑利用阿云等提供的国内加速镜像来提高下载速度和可靠性[^3]。 #### 验证源码包完整性 当采用源码方式进行安装时,建议先验证所获得压缩包的真实性和完整性。这一步骤可通过比较本地计算得到的MD5校验值同官方网站公布的标准值完成。例如,对于`postgresql-16.1.tar.gz`这样的文件来说,其正确的MD5哈希应该是`708b5fee32a7dbdc80c8ce1dc2d70cd0`[^4]。 #### 编译与安装过程 一旦确认无误,则可以按照常规流程解压、配置以及编译该软件包。注意在此过程中可能涉及到路径设置等问题,请参照官方文档或其他权威资料妥善处理。 #### 初始化数据库集群 初次启动服务之前,通常还需要初始化一个新的数据库实例。如果遇到类似于“Data directory is not empty”的错误提示,可能是由于先前的操作遗留下来的数据所致;此时应当清理旧有的残留文件再试一次[^5]。 #### 测试连接情况 最后一步就是检验整个安装是否成功——尝试通过客户端工具比如Navicat建立远程会话链接到新搭建好的PostgreSQL服务器上去。 ```bash # 示例:切换到postgres用户身份后执行初始化命令 su - postgres /usr/pgsql-10/bin/postgresql-10-setup initdb ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值