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

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

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

双击打开数据库

相关推荐
魔道不误砍柴功4 分钟前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2344 分钟前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
闲晨7 分钟前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
_.Switch29 分钟前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_8504108329 分钟前
文件系统和日志管理
linux·运维·服务器
JokerSZ.33 分钟前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
XMYX-01 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
芯盾时代1 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
测开小菜鸟2 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
心灵彼岸-诗和远方2 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops