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 '密码';