PostgreSQL 设置允许访问IP

本文介绍如何修改PostgreSQL配置文件以实现远程访问,并通过curl命令验证连接。同时,提供了创建用户、设置密码及数据库权限的方法。

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

PostgreSQL安装后默认只能localhost:5432访问
检验方法:

curl localhost:5432
# 访问成功提示
curl: (52) Empty reply from server
curl 127.0.0.1:5432
# 访问不成功提示
curl: (7) Failed to connect to 172.17.201.227 port 5432: Connection refused

修改pg_hba.conf

pg_hba.confpostgresql.conf的存放目录都在(9.5版本)/etc/postgresql/9.5/main

host  all    all    192.168.1.0/24    trust

表示允许网段192.168.1.0上的所有主机使用所有合法的数据库用户名访问数据库,
其中,数字24是子网掩码,表示允许192.168.1.0–192.168.1.255的计算机访问

修改postgresql.conf

修改listen_addresses=’localhost’, 并放开注释(默认监听localhost)

# 192.168.1.111 为postgresql本机内网地址
listen_addresses='192.168.1.111'

重启postgresql

sudo /etc/init.d/postgresql restart

在本机

curl 192.168.1.111:5432
# 访问成功提示
curl: (52) Empty reply from server

在内网其他机器

curl 192.168.1.111:5432
# 访问成功提示
curl: (52) Empty reply from server

其他 创建用户

进入psql控制台

$ sudo -u postgres -i
$ psql

创建用户 密码

postgres=# CREATE USER myusername WITH PASSWORD 'mypassword' CREATEDB;

创建数据库 用户授权

postgres=# CREATE DATABASE mydb;
postgres=# GRANT ALL PRIVILEGES ON DATABASE mydb to myusername;
postgres=# \q

测试

$ psql -d mydb;
mydb=# \dt
<think>好的,我需要帮助用户查找PostgreSQL数据库服务器的IP地址。首先,我要回忆一下用户提供的引用内容,看看里面有没有相关信息。 根据引用[3],里面提到可以通过PostgreSQL客户端连接实例,并且需要绑定弹性公网IP设置安全组规则。还提到了获取本地设备的IP地址以及设置安全组规则的方法。这可能意味着用户如果是在云服务(比如云数据库RDS)上使用PostgreSQLIP地址可能需要通过云平台的控制台查看。 另外,引用[1]提到云数据库RDS有固定限制,包括可能涉及服务器地址的修改。而引用[2]则讨论了PL/pgSQL和客户端与服务器的通信方式,但可能不直接涉及IP查找。 接下来,我应该整理出几种常见的确定PostgreSQL IP地址的方法: 1. **通过云平台管理控制台查找**:比如阿里云、AWS等,用户可以在数据库实例详情页找到IP地址。引用[3]中的绑定弹性公网IP部分可能与此相关。 2. **使用SQL命令查询**:连接到数据库后,执行如`SELECT inet_server_addr();`的命令可以直接获取服务器IP。虽然用户提供的引用里没有提到这个命令,但这是PostgreSQL的内置函数,属于常见方法。 3. **查看配置文件**:检查postgresql.conf中的`listen_addresses`参数,通常设置为`*`或特定IP。但需要访问服务器文件系统,可能不适合普通用户。 4. **网络工具检测**:通过`netstat`或`ss`命令查看数据库进程监听的端口,从而找到IP。这同样需要服务器访问权限。 5. **客户端连接信息**:如果已经能够连接,查看客户端配置(如pg_hba.conf)中的host记录,或者连接字符串中的IP信息。 需要注意的是,引用[3]还提到安全组规则的设置,用户可能需要将本地IP加入安全组允许访问的范围内,这可能影响到连接是否成功,但IP地址的查找主要还是通过控制台或SQL命令。 需要确保回答覆盖不同情况,比如本地部署和云服务,同时提醒用户权限问题。可能还需要提到如果数据库在本地服务器,如何通过命令行工具查找,而云数据库则通过控制台。 最后,根据用户问题,他们可能没有访问服务器配置文件的权限,所以重点放在云平台控制台和SQL命令的方法上。同时,引用[3]中的绑定弹性公网IP设置安全组部分需要被引用,以支持答案的可靠性。</think>### 如何确定PostgreSQL数据库服务器的IP地址? #### 方法1:通过云平台管理控制台查看(适用于云数据库) 如果PostgreSQL实例部署在云服务(如阿里云、华为云、AWS等),IP地址通常可以在云平台的管理控制台中查看: 1. 登录云服务提供商的控制台。 2. 进入**云数据库RDS**或**实例管理**页面。 3. 找到目标PostgreSQL实例,在**基本信息**或**连接信息**中查看**弹性公网IP**或**内网IP**[^3]。 #### 方法2:使用SQL命令查询 若已连接到数据库,可直接通过SQL查询: ```sql SELECT inet_server_addr(); ``` 该命令返回当前连接的服务器IP地址[^2]。 #### 方法3:查看配置文件(需服务器权限) 对于本地部署的PostgreSQL,检查配置文件`postgresql.conf`: 1. 找到参数`listen_addresses`,例如: ```conf listen_addresses = '*' # 监听所有IP ``` 2. 若配置为具体IP(如`192.168.1.100`),则为服务器地址。 #### 方法4:通过网络工具检测 在服务器上执行命令查看监听端口: ```bash netstat -tuln | grep 5432 # 默认端口5432 ``` 输出中`Local Address`列显示监听的IP(如`0.0.0.0:5432`表示所有IP)。 --- #### 注意事项 - **云数据库**需绑定弹性公网IP并配置安全组规则,允许客户端IP访问[^3]。 - **本地数据库**若配置为`localhost`或`127.0.0.1`,则仅允许本地连接。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值