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
==========================================================================================