CentOS PostgreSQL安装

参考链接:https://www.cnblogs.com/flying-tiger/p/5983588.html

安装

centos8

dnf install -y postgresql postgresql-server
postgresql-setup --initdb		# 首次安装需要初始化
systemctl start postgresql		# 开启服务
systemctl enable postgresql		# 添加开机启动

这样就算安装好了。

配置

默认初始化之后:

  • 本地访问,无论是不输密码,或者输错密码都可以登录。
  • 远程访问,总是拒绝。 需要修改以下项目

监听地址

postgresql.conf里查找并修改以下项目。

listen_adddress = '0.0.0.0'

访问策略

修改pg_hba.conf配置文件

默认的配置如下:

local   all             all                                     peer
host    all             all             0.0.0.0/0               ident
host    all             all             ::1/128                 ident
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128 

修改以下两项内容

local   all             all                                     md5
host	all				all				0.0.0.0/0				md5

这样不论本地登录,或者远程登录,都要求客户端提供一个md5加密的口令进行认证(即必须有密码才能登录)。

pg_hba.conf 配置规则参考

格式:

type database user address method

连接方式(type):

  • local 本地连接
  • host TCP/IP连接
  • hostssl TCP/IP上进行SSL连接
  • hostnossl TCP/IP上进行的非SSL连接

数据库(database):

  • all 匹配所有数据库
  • sameuser 匹配数据库和用户名同名的
  • samgroup 用户必须是与数据库同名的用户组中的成员
  • replication 匹配一条replication连接,不指定特定的数据库,一般用于流复制

用户名(user):

  • all 匹配所有用户
  • user1,user2 匹配用户名为user1,user2
  • +group 匹配gourp用户组下的所有用户
  • @file 匹配file文件,该文件必须以pg_hda.conf同一目录下

认证方式(method):

  • trust 无条件允许,不需验证密码
  • reject 无条件拒绝
  • md5 以md5加密的口令进行认证
  • password 以密码进行认证,但是是明文形式进行传递,不安全。
  • gss 使用GSSAPI认证,仅适用于TCP/IP连接
  • sspi 使用SSPI认证,仅适用于Windows连接
  • peer 获取客户端的操作系统用户名,判断是否匹配请求的数据库名,仅适用本地连接
  • ladp 使用LDAP服务进行验证
  • radius 使用RADIUS服务进行验证
  • cert 使用SSL服务认证
  • pam 使用操作系统提供的可插入认证模块服务

使用

初次登录

初始化之后,会创建好一个用户postgres,它免密,主目录是 /var/lib/pgsql。使用这个来进行登录postgresql。

su postgres						# 切换用户至postgres
psql							# 进入postgresql

修改密码

修改Linux系统用户密码

passwd postgres					# 修改系统用户密码

修改postgresql用户密码

在登录postgresql之后,执行以下语句修改密码。

ALTER USER postgres WITH PASSWORD '密码';