安装
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg- redhat-repo-latest.noarch.rpm
yum install postgresql12
yum install postgresql12-server
启动
service postgresql-12 initdb
chkconfig postgresql-12 on
service postgresql-12 start
验证
rpm -aq | grep postgres
初始化
/usr/pgsql-12/bin/postgresql-12-setup initdb
设置开机启动
systemctl enable postgresql-12
启动
systemctl start postgresql-12
配置防火墙
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
配置默认用户(postgres)
su - postgres切换用户
psql -U postgres登录
ALTER USER postgres with encrypted password '密码';修改默认用户密码
退出数据库
/q
用户退出
exit
配置远程访问权限
vi /var/lib/pgsql/12/data/postgresql.conf
添加
listen_addresses = '*'
配置账户访问权限
vi /var/lib/pgsql/12/data/pg_hba.conf
添加
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5 #加入行,所有ip都可连接
TYPE 连接类型,表示允许用哪些方式连接数据库,它允许以下几个值:
local通过 Unix socket 的方式连接。
host通过 TCP/IP 的方式连接,它能匹配 SSL 和 non-SSL 连接。
hostssl只允许 SSL 连接。
hostnossl只允许 non-SSL 连接。
DATABASE 可连接的数据库,它有以下几个特殊值:
all 匹配所有数据库。
sameuser 可连接和用户名相同的数据库。
samerole 可连接和角色名相同的数据库。
replication 允许复制连接,用于集群环境下的数据库同步。 除了上面这些特殊值之外,我们可以写特定的数据库,可以用逗号 (,) 来分割多个数据库。
USER 可连接数据库的用户,值有三种写法:
all 匹配所有用户。
特定数据库用户名。
特定数据库用户组,需要在前面加上 + (如:+admin)。
ADDRESS 可连接数据库的地址,有以下几种形式:
all 匹配所有 IP 地址。
samehost 匹配该服务器的 IP 地址。
samenet 匹配该服务器子网下的 IP 地址。
ipaddress/netmask (如:172.20.143.89⁄32),支持 IPv4 与 IPv6。
如果上面几种形式都匹配不上,就会被当成是 hostname。 注意: 只有 host, hostssl, hostnossl 会应用个字段。
METHOD 连接数据库时的认证方式,常见的有几个特殊值:
trust 无条件通过认证。
reject 无条件拒绝认证。
md5 用 md5 加密密码进行认证。
password 用明文密码进行认证,不建议在不信任的网络中使用。
ident 从一个 ident 服务器 (RFC1413) 获得客户端的操作系统用户名并且用它作为被允许的数据库用户名来认证,只能用在 TCP/IP 的类型中 (即 host, hostssl, hostnossl)。
peer 从内核获得客户端的操作系统用户名并把它用作被允许的数据库用户名来认证,只能用于本地连接 (即 local)。
其他特殊值可以在 官方文档 中查阅。 简单来说,ident 和 peer 都要求客户端操作系统中存在对应的用户。 注意: 上面列举的只有 md5 和 password 是需要密码的,其他方式都不需要输入密码认证。
参考https://scarletsky.github.io/2017/04/26/client-authentication-in-postgresql/
重启服务
systemctl restart postgresql-12