远程连接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的地址,不用输入密码,因为我们设置的是无密码

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

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

双击打开数据库

相关推荐
wdxylb32 分钟前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
yangchanghua1111 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance2 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai2 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
飞雪20072 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
在努力的前端小白2 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
路溪非溪2 小时前
关于Linux内核中头文件问题相关总结
linux
未来之窗软件服务2 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
木易双人青2 小时前
01-Docker-简介、安装与使用
运维·docker·容器
专注API从业者3 小时前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
大数据·运维·前端·数据挖掘·自动化