远程连接PostgreSQL

目录

修改PostgreSQL监听地址

重启服务

配置访问权限

重启服务

使用Navicat连接


本文是在Windows上使用Navicat远程连接PostgreSQL,包括有密码远程连接以及无密码远程连接。

修改PostgreSQL监听地址

默认PostgreSQL监听的地址是127.0.0.1,别的机器无法远程连接上,所以需要调整。

bash 复制代码
# 编译安装的PostgreSQL一般是在数据存储目录
# 不管是哪种安装方式要是找不到的话可以使用find命令搜索一下
find / -name 'postgresql.conf'

# 修改postgresql.conf文件
# 大约在60行左右
# 有可能是注释的,如果注释了要取消注释
[root@bogon ~]# grep 'listen_addresses' /usr/local/pgsql/data/postgresql.conf
listen_addresses = '*'		# what IP address(es) to listen on;
 

重启服务

bash 复制代码
[root@bogon ~]# su - postgres -c "pg_ctl -D /usr/local/pgsql/data/ restart"
waiting for server to shut down.... done
server stopped
waiting for server to start....2024-05-17 03:24:12.197 EDT [10798] LOG:  starting PostgreSQL 16.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
2024-05-17 03:24:12.197 EDT [10798] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-05-17 03:24:12.197 EDT [10798] LOG:  listening on IPv6 address "::", port 5432
2024-05-17 03:24:12.198 EDT [10798] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2024-05-17 03:24:12.201 EDT [10801] LOG:  database system was shut down at 2024-05-17 03:24:12 EDT
2024-05-17 03:24:12.204 EDT [10798] LOG:  database system is ready to accept connections
 done
server started

# 查看端口监听情况
[root@bogon ~]# ss -nlpt | grep 5432
LISTEN     0      128          *:5432                     *:*                   users:(("postgres",pid=10798,fd=6))
LISTEN     0      128       [::]:5432                  [::]:*                   users:(("postgres",pid=10798,fd=7))

配置访问权限

默认是只能本地访问PostgreSQL的,我们需要在pg_hba.conf里面配置

bash 复制代码
# 我的是在数据存储目录下,如果你的不知道的话可以使用find搜索一下
[root@bogon ~]# find / -name 'pg_hba.conf'
/usr/local/pgsql/data/pg_hba.conf

请注意,使用 trust 认证方法允许任何 IP 地址连接到你的数据库,而不需要任何认证,这是非常不安全的。这通常只在开发或测试环境中使用,并且应该始终确保数据库服务器不暴露在不受信任的网络中。在生产环境中,你应该使用更安全的认证方法,如 md5 或 password(对于较新版本的 PostgreSQL,建议使用 scram-sha-256)。

bash 复制代码
# 找到IPv4 local connections这一行,在这一行下面添加
# 注意这样是不安全的,因为所有地址都可以无密码远程连接我们的数据库了
# host:这指定了连接类型。host 表示该规则适用于通过 TCP/IP 进行的远程连接。如果是本地连接,通常会使用 local。
# all:这定义了哪些数据库可以接受这个规则。all 表示这个规则适用于所有数据库。你也可以指定特定的数据库名,例如 mydatabase。
# all:这定义了哪些用户可以接受这个规则。all 表示这个规则适用于所有用户。你也可以指定特定的用户名,例如 myuser。
# 0.0.0.0/0:这定义了哪些客户端 IP 地址或 IP 地址范围可以接受这个规则。0.0.0.0/0 是一个特殊的 CIDR 表示法,它表示任何 IP 地址(即没有 IP 地址限制)。你也可以指定具体的 IP 地址,如 192.168.1.100,或者 IP 地址范围,如 192.168.1.0/24。
# trust:这定义了认证方法。trust 表示不需要密码或其他任何形式的认证,客户端可以直接连接。这通常只在本地或受信任的网络环境中使用,因为它允许任何人无需认证即可访问数据库。
host    all             all             0.0.0.0/0            trust

请注意,如果选择了md5 或 password之类的需要有密码才行,配置PostgreSQL密码流程如下

bash 复制代码
# 切换用户
[root@bogon ~]# su - postgres
Last login: Fri May 17 03:40:32 EDT 2024 on pts/1

# 登录数据库
[postgres@bogon ~]$ psql 
psql (16.3)
Type "help" for help.

# 修改密码,我这里密码设置为123456
postgres=# ALTER USER postgres WITH PASSWORD '123456';
ALTER ROLE
postgres=# \q

重启服务

bash 复制代码
[root@bogon ~]# su - postgres -c "pg_ctl -D /usr/local/pgsql/data/ restart"
waiting for server to shut down....2024-05-17 03:31:44.721 EDT [10798] LOG:  received fast shutdown request
2024-05-17 03:31:44.722 EDT [10798] LOG:  aborting any active transactions
2024-05-17 03:31:44.723 EDT [10798] LOG:  background worker "logical replication launcher" (PID 10804) exited with exit code 1
2024-05-17 03:31:44.723 EDT [10799] LOG:  shutting down
2024-05-17 03:31:44.725 EDT [10799] LOG:  checkpoint starting: shutdown immediate
2024-05-17 03:31:44.727 EDT [10799] LOG:  checkpoint complete: wrote 0 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.001 s, sync=0.001 s, total=0.004 s; sync files=0, longest=0.000 s, average=0.000 s; distance=0 kB, estimate=0 kB; lsn=0/15698B0, redo lsn=0/15698B0
2024-05-17 03:31:44.730 EDT [10798] LOG:  database system is shut down
 done
server stopped
waiting for server to start....2024-05-17 03:31:44.842 EDT [11215] LOG:  starting PostgreSQL 16.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
2024-05-17 03:31:44.842 EDT [11215] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-05-17 03:31:44.842 EDT [11215] LOG:  listening on IPv6 address "::", port 5432
2024-05-17 03:31:44.843 EDT [11215] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2024-05-17 03:31:44.846 EDT [11218] LOG:  database system was shut down at 2024-05-17 03:31:44 EDT
2024-05-17 03:31:44.851 EDT [11215] LOG:  database system is ready to accept connections
 done
server started

使用Navicat连接

修改一下IP地址即可,修改为PostgreSQL的地址,不用输入密码,因为我们设置的是无密码

如果设置的有密码那就填写对应的密码即可

点击 测试连接 如果显示 连接成功,就可以点击确定了

双击打开数据库

相关推荐
laboratory agent开发5 分钟前
智能体多工具串联执行中途失败,部分写入的数据如何回滚
运维·服务器·数据库
晨曦中的暮雨10 分钟前
Virtual Thread 优化 Spring AI 阻塞式 LLM I/O:对照压测报告
java·并发·个人项目
智塑未来14 分钟前
金融 AIOps 选型指南:银行证券智能运维平台怎么选
运维·人工智能·金融
寒水馨15 分钟前
Linux下载、安装protobuf-v35.1(附安装包protoc-35.1-linux-x86_64.zip)
linux·运维·服务器·google·序列化·protobuf·protoc
段一凡-华北理工大学40 分钟前
AI推动工业智能化转型~系列文章07:分类与诊断算法体系:故障识别的完整工具箱
数据库·人工智能·算法·机器学习·分类·数据挖掘·高炉炼铁智能化
AKA__Zas43 分钟前
芝士算法(前缀和2.0)
java·数据结构·算法·leetcode·哈希算法·学习方法
caishenzhibiao1 小时前
降雨带波段点差 同花顺期货通指标
java·c语言·c#
王琦03181 小时前
Linux的文件管理
linux·运维·服务器
xlq223221 小时前
高并发服务器day13
运维·服务器
DBA_G1 小时前
南大通用GBase HD数据平台讲解
数据库