Centos7 安装Postgres11(更改数据目录)

Centos7 安装Postgres11和PostGIS (更改数据目录)

0. 关闭防火墙
看centos7的防火墙的状态
$ sudo systemctl status firewalld
关闭防火墙
$ sudo systemctl stop firewalld
1. 查看已经安装的postgresql
$ rpm -qa | grep postgresql
postgresql11-libs-11.11-1PGDG.rhel7.x86_64
postgresql11-contrib-11.11-1PGDG.rhel7.x86_64
postgresql11-11.11-1PGDG.rhel7.x86_64
postgresql11-server-11.11-1PGDG.rhel7.x86_64
2. 卸载已经安装的postgresql
$ sudo yum remove postgresql
$ sudo yum remove postgresql11-libs-11.11-1PGDG.rhel7.x86_64
$ sudo yum remove postgresql11-contrib-11.11-1PGDG.rhel7.x86_64
$ sudo yum remove postgresql11-11.11-1PGDG.rhel7.x86_64
$ sudo yum remove postgresql11-server-11.11-1PGDG.rhel7.x86_64
3. 删除残余
$ sudo rm -rf /var/lib/pgsql
$ sudo rm -rf /usr/pgsql-11
4. 查看 CentOS 系统版本
$ sudo cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
5. 安装postgresql11
安装rpm文件
$ sudo yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7.9-x86_64/pgdg-redhat-repo-latest.noarch.rpm -y
安装客户端 安装服务端
$ sudo yum install postgresql11 postgresql11-contrib postgresql11-libs postgresql11-server -y
6. Postgresql安装目录 /usr/pgsql-11, 而Postgresql数据目录 /var/lib/pgsql/11/data
如果在装系统开始分配var空间足够大则可以继续,如果分配var空间不够,则需要更改数据目录
把自动创建的postgres用户删除
$ userdel -r postgres
把postgres用户的HOME建立在 /home 下
$ groupadd -g 701 postgres
$ useradd -g 701 -u 701 -s /bin/bash -m postgres
为postgres用户指定密码(在root用户下操作) postgres账号登录centos服务器,并修改数据库用户密码(或者直接 su postgres 切换过去)
$ passwd postgres
新建/home/postgres/pgdata目录
$ su postgres
$ mkdir /home/postgres/pgdata
配置postgres用户的.bashrc内容
$ cd /home/postgres
$ vi .bashrc
export PATH=/usr/pgsql-11/bin:$PATH
export LD_LIBRARY_PATH=/usr/pgsql-11/lib:$LD_LIBRARY_PATH
export PGDATA=/home/postgres/pgdata
export PGHOST=/tmp
$ source .bashrc
登录 postgres用户
$ su - postgres
执行 initdb 命令初始化数据库
$ initdb
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
............................................
Success. You can now start the database server using:
pg_ctl -D /home/postgres/pgdata/ -l logfile start

必须配置:postgresql.conf 新建的postgres用户对 /var/run/postgresql 目录没有写权限
vim /home/postgres/pgdata/postgresql.conf
在文件最后加上(否则将无法启动数据库):
unix_socket_directories = '/tmp'
必须设定配置文件(参考其他博文)
$ vim pg_hba.conf
$ vim postgresql.conf

启动数据库
pg_ctl start
停止数据库
pg_ctl stop

进入 postgres 修改数据库 密码
[postgres@localhost ~]$ psql -U postgres
psql (11.11)
Type "help" for help.
postgres=# password
Enter new password:
Enter it again:
postgres=# select version();
version
----------------------------------------------------------------------------------------------------------
PostgreSQL 11.11 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)

postgres=#

在数据库客户端测试登录

==========================================================================================
启动数据库
su postgres
pg_ctl start
创建角色
postgres=# create user jiangshan with password 'jiangshan';
CREATE ROLE
创建数据库 并指定所属角色
postgres=# create DATABASE beijing ENCODING='utf-8' TABLESPACE=pg_default owner jiangshan;
CREATE DATABASE
为角色授权
postgres=# grant all privileges on database beijing to jiangshan;
GRANT
查看
postgres=# l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-----------+----------+-------------+-------------+-------------------------
beijing | jiangshan | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/jiangshan +
| | | | | jiangshan=CTc/jiangshan
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres

将角色给予超级权限
postgres=# ALTER USER jiangshan WITH SUPERUSER;
ALTER ROLE

==========================================================================================

个人学习记录
原文地址:https://www.cnblogs.com/jeshy/p/14628678.html