目录
本文是在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的地址,不用输入密码,因为我们设置的是无密码
如果设置的有密码那就填写对应的密码即可
点击 测试连接 如果显示 连接成功,就可以点击确定了
双击打开数据库