源码包安装PostgreSQL12——CentOS7
简要描述
简单安装Postgres的操作步骤
前置条件(root下操作)
-
如果已存在yum安装的postgresql,提供以下卸载方式
# 停止postgresql,此处为注册了服务的停止方式,12版本 systemctl stop postgresql-12 # 卸载 包含postgresql名的程序包 yum remove postgresql* # 删除postgres用户及其对应的用户目录(/home/postgres) userdel -r postgres # 检查是否存在 /usr/psqlXXX文件夹,有的话删除,例如 rm -rf /usr/pgsql-12
-
创建用户及用户组
# 创建postgres用户组 groupadd postgres # 创建postgres用户,用户位于postgres组内 useradd -g postgres postgres # 为postgres用户设置密码 passwd postgres
-
安装部分依赖(一般是没有的)
yum install gcc yum install readline-devel.x86_64 yum install zlib-devel.x86_64
安装PostgreSQL12
- 使用postgres用户管理PostgreSQL
# 切换用户 su postgres # 回到用户目录 cd ~
- 下载postgres12源码包(/home/postgres/postgresql-12.1.tar.gz)
wget -c https://ftp.postgresql.org/pub/source/v12.1/postgresql-12.1.tar.gz
- 解压到当前路径下(/home/postgres/postgresql-12.1)
tar -zxvf postgresql-12.1.tar.gz
- 配置及安装
# 新建PostgreSQL安装路径下的文件夹(/home/postgres/postgresql) mkdir postgresql # 进入解压后的源码文件夹(/home/postgres/postgresql-12.1) cd postgresql-12.1 # 检查、并配置(--prefix=/home/postgres/postgresql 为配置postgreSQL的安装路径) ./configure --prefix=/home/postgres/postgresql # 编译及安装 make && make install
- 配置环境变量
# 切换到用户根目录下(/home/postgres)
cd ~
# 编辑 .bash_profile
vi .bash_profile
# 修改为
# 新增
PGHOME=/home/postgres/postgresql
PATH后追加 $PGHOME/bin
例如:PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
# 保存,退出(命令模式下Esc)
# 输入: wq! Enter(回车)
# 重载.bash_profile
source .bash_profile
- 初始化postgreSQL (/home/postgres/)
# /home/postgres/PGDATA为postgres数据文件的存放路径 initdb -D /home/postgres/PGDATA
- 启动
# /home/postgres/PGDATA为数据文件存放路径,里面也有一些配置文件 pg_ctl -D /home/postgres/PGDATA -l logfile start
- 停止
pg_ctl -D /home/postgres/PGDATA -l logfile stop
- 重启
pg_ctl -D /home/postgres/PGDATA -l logfile restart
- 查看状态
pg_ctl -D /home/postgres/PGDATA -l logfile status
注意
- postgreSQL,不修改配置文件,默认是只监听本地、只允许本地访问数据库
- 在数据文件夹内
- pg_hba.conf
- 配置允许访问的IP及postgres用户
- 允许任意IP通过密码访问postgres的任意用户
host all all 0.0.0.0/0 md5
- postgresql.conf
- 配置监听的IP范围等
- 监听任意IP
listen_addresses = '*'
- pg_hba.conf
- 在数据文件夹内
- 重新加载修改后的pg_hba.conf文件
- 使用psql客户端
postgres=# SELECT pg_reload_conf();
- 使用pg_ctl命令(PG内置命令)
pg_ctl reload
- 使用psql客户端