基础准备:一台可以联网的CentOS7 可以正常运行的机器
# 设置yum 软件源 yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm # 创建一个文件夹,把下载下来的rpm文件直接下载到这个文件夹下 mkdir pg12_rpm_packs # 下载pg server/client,contrib和其依赖的其他包 yum install --downloadonly --downloaddir=./pg12_rpm_packs postgresql12-server postgresql12 postgresql12-contrib将下载的文件复制到离线服务器上,有以下几个文件:
postgresql12-libs-12.4-1PGDG.rhel7.x86_64.rpmpostgresql12-12.4-1PGDG.rhel7.x86_64.rpmpostgresql12-server-12.4-1PGDG.rhel7.x86_64.rpmpostgresql12-contrib-12.4-1PGDG.rhel7.x86_64.rpm在离线服务器上执行安装命令:
注意一定要按照顺序从上往下执行,否则安装失败
rpm -ivh postgresql12-libs-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force rpm -ivh postgresql12-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force rpm -ivh postgresql12-server-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force rpm -ivh postgresql12-contrib-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force验证是否成功:
rpm -aq | grep postgrespostgresql会自动完成以下操作:
自动生成一个linux系统用户postgres:管理数据库的系统用户
数据库用户postgres:数据库超级管理员
此用户的默认数据库为postgres
修改下默认postgres数据库用户的密码:
$ su - postgres -bash-4.2$ psql psql (12.3) Type "help" for help. postgres=# alter role postgres with password 'postgres'; ALTER ROLE修改的时候需要使用命令 su - postgres 进入 postgres 用户环境
# 建立新的数据库用户 create user durant with password '123456'; # 为新用户建立数据库 create database testdb owner durant; # 把新建的数据库权限赋予新用户 grant all privileges on database testdb to durant;进入目录:cd data/postgresql/data(具体目录可以通过 systemctl status postgresql-12 命令查看) 修改 postgresql.conf 文件:将 listen_addresses = ‘localhsot’ 修改为 listen_addresses = ‘*’
进入目录:cd data/postgresql/data(具体目录可以通过 systemctl status postgresql-12 命令查看)
修改 pg_hba.conf 文件:在如图位置新增一条记录,将要连接的IP添加进来
hostallall0.0.0.0/0password认证方式
trust:凡是能连接到服务器的,都是可信任的。只需要提供数据库用户名,可以没有对应的操作系统同名用户;md5:password 和 md5:对于外部访问,需要提供 psql 用户名和密码。对于本地连接,提供 psql 用户名密码之外,还需要有操作系统访问权(用操作系统同名用户验证)。password 和 md5 的区别就是外部访问时传输的密码是否用 md5 加密;ident:对于外部访问,从 ident 服务器获得客户端操作系统用户名,然后把操作系统作为数据库用户名进行登录;对于本地连接,实际上使用了peer;peer:通过客户端操作系统内核来获取当前系统登录的用户名,并作为psql用户名进行登录。重启完后通过命令 netstat -anp 查看服务如下所示,如果是127.0.0.1说明远程访问未开启,如果是0.0.0.0说明开启成功:
密码跟用户名默认是一样的