连接到PostgreSQL数据库

2023-09-06 15:33:27 浏览数 (1)

PG的默认链接规则

PG默认只接受本地的访问,这个规则是由参数listen_addresses控制的

代码语言:javascript复制
postgres=> show listen_addresses;
 listen_addresses
------------------
 localhost
(1 row)

可以把修改这个参数用于指定访问的ip,也可以用星号允许所有的IP访问。

代码语言:javascript复制
listen_addresses = 'localhost,192.168.87.178'

pg_hba.conf 文件其全名为 "PostgreSQL Host-Based Authentication Configuration"。该文件用于管理数据库系统中客户端连接的身份验证和访问控制。它决定了哪些主机和用户可以连接到数据库以及以何种方式连接。默认只允许本地连接,且连接认证方式均为 trust,生产环境建议更改为 md5 连接认证方式,并根据需求增加允许访问的客户端地址。

02

本地操作系统用户无密码连接

修改pg_hba.conf 文件

代码语言:javascript复制
local   all             all          ident map=map_name

这里的ident也可以改成peer,因为当为一个本地(非 TCP/IP)连接指定 ident 时,将实际使用 peer 认证。

修改pg_hba.conf 文件

代码语言:javascript复制
# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
map_name root postgres
map_name postgres postgres

下面的命令载入修改后的配置

代码语言:javascript复制
-bash-4.2$ /usr/pgsql-14/bin/pg_ctl reload
server signaled

或者

代码语言:javascript复制
postgres=> select pg_reload_conf();

使用root用户登录测试

代码语言:javascript复制
[root@pg data]# id
uid=0(root) gid=0(root) groups=0(root)
[root@pg data]# psql -U postgres
psql (14.3)
Type "help" for help.

postgres=# select user;
   user
----------
 postgres
(1 row)

03

远程TCP/IP登录

pg_hba.conf 文件中对应的配置如下:

代码语言:javascript复制
host    all             all             0.0.0.0/0            md5

远程登录:

代码语言:javascript复制
root@YaoYuan ~# psql -U postgres -h 192.168.18.198
Password for user postgres:
psql (15.3, server 14.3)
Type "help" for help.

postgres=# select user;
   user
----------
 postgres
(1 row)

04

ident认证

首先要安装服务,不然会出现下面的错误:

代码语言:javascript复制
2023-08-08 07:38:07.213 UTC [25746] LOG:  could not connect to Ident server at address "192.168.87.178", port 113: Connection refused

安装方法如下:

代码语言:javascript复制
--linux 客户端安装 oidentd,并启动该服务
yum -y install epel-release
yum clean all && yum makecache
yum install -y oidentd

pg_hba.conf 文件中对应的配置如下:

代码语言:javascript复制
host    all             all             0.0.0.0/0            ident map=map_name

使用root用户登录测试:

代码语言:javascript复制
[root@pg data]# psql -U postgres -h 192.168.18.198
psql (14.3)
Type "help" for help.

postgres=# select user;
   user
----------
 postgres
(1 row)

可以不用密码登录

0 人点赞