远程连接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 分钟前
MySQL 中文拼音排序问题
java·mysql
要一起看日出4 分钟前
MVCC-多版本并发控制
数据库·mysql·mvcc
Hx__5 分钟前
MySQL InnoDB 的 MVCC 机制
数据库·mysql
速易达网络6 分钟前
ASP.NET MVC 连接 MySQL 数据库查询示例
数据库·asp.net·mvc
Dcs7 分钟前
用 Python UTCP 直调 HTTP、CLI、MCP……
java
玉衡子43 分钟前
MySQL基础架构全面解析
数据库·后端
快乐肚皮44 分钟前
fencing token机制
java·fencing token
梦中的天之酒壶1 小时前
Redis Stack扩展功能
数据库·redis·bootstrap
GreatSQL1 小时前
GreatSQL分页查询优化案例实战
数据库
叶落阁主1 小时前
Neovim 插件 i18n.nvim 介绍
java·vue.js·vim