怎样安装PostgreSQL

2018年8月10日 | 分类: 【技术】

【介绍】

PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。

官网:https://www.postgresql.org/
文档:https://www.postgresql.org/docs/
下载:https://www.postgresql.org/download/

最高版本:PostgreSQL 11

【安装】

从yum源安装指定9.6版本:https://amon.org/postgresql
从yum源安装指定11版本:https://amon.org/postgresql11
从源码编译安装指定版本:https://amon.org/postgresql-build
CentOS6上yum安装默认版本:https://amon.org/postgresql-centos6
CentOS7上yum安装默认版本:https://amon.org/postgresql-centos7

【管理】

参考:https://amon.org/phppgadmin

【应用】

DNRS(https://sourceforge.net/projects/dnrs/),要求只能是PostgreSQL 7.4。
下载:https://ftp.postgresql.org/pub/source/v7.4.30/postgresql-7.4.30.tar.gz

CoCCA(https://sourceforge.net/projects/coccaopenreg/),要求是PostgreSQL 8.1或更高。
下载:https://ftp.postgresql.org/pub/source/v8.1.23/postgresql-8.1.23.tar.gz

【yum安装指定版本】

安装 yum 源(地址从 http://yum.postgresql.org/repopackages.php 获取)

安装PostgreSQL11:

yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm

更新源信息:

yum update

查看安装包列表:

yum list | grep postgresql

安装PostgreSQL:最核心的是要安装postgresql11-server和postgresql11-contrib,其中”contrib”包里包含了一些常用的组件和方法

yum install postgresql11-server.x86_64 postgresql11-contrib.x86_64 postgresql11-devel.x86_64

卸载命令:

yum remove postgresql11-server.x86_64 postgresql11-contrib.x86_64 postgresql11-devel.x86_64
yum remove postgresql11-libs-11.0-beta2_1PGDG.rhel7.x86_64 postgresql11-11.0-beta2_1PGDG.rhel7.x86_64

安装PostgreSQL9.6:

yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

更新源信息:

yum update

查看安装包列表:

yum list | grep postgresql

安装

yum install postgresql96-server.x86_64 postgresql96-contrib.x86_64 postgresql96-devel.x86_64 

主要路径:

参考:https://www.cnblogs.com/qiyebao/p/4562557.html
参考:http://www.cnblogs.com/amboyna/archive/2008/02/16/1070474.html

检查 PostgreSQL 是否已经安装:

rpm -qa | grep postgres

输出:

postgresql11-libs-11.0-beta2_1PGDG.rhel7.x86_64
postgresql11-devel-11.0-beta2_1PGDG.rhel7.x86_64
postgresql11-11.0-beta2_1PGDG.rhel7.x86_64
postgresql11-server-11.0-beta2_1PGDG.rhel7.x86_64
postgresql11-contrib-11.0-beta2_1PGDG.rhel7.x86_64

检查 PostgreSQL 安装位置:

rpm -qal | grep postgres

输出:

/usr/share/doc/postgresql96-9.6.10
/usr/share/doc/postgresql96-9.6.10/COPYRIGHT
/usr/share/doc/postgresql96-9.6.10/KNOWN_BUGS
/usr/share/doc/postgresql96-9.6.10/MISSING_FEATURES
/usr/share/doc/postgresql96-9.6.10/README.rpm-dist
/usr/share/doc/postgresql96-9.6.10/bug.template
/etc/pam.d/postgresql
/usr/lib/systemd/system/postgresql-9.6.service
/usr/lib/tmpfiles.d/postgresql-9.6.conf
/usr/pgsql-9.6/bin/postgres
/usr/pgsql-9.6/bin/postgresql96-check-db-dir
/usr/pgsql-9.6/bin/postgresql96-setup
/usr/pgsql-9.6/share/locale/de/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/es/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/fr/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/id/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/it/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/ja/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/ko/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/pl/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/pt_BR/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/ru/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/sv/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/tr/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/locale/zh_CN/LC_MESSAGES/postgres-9.6.mo
/usr/pgsql-9.6/share/man/man1/postgres.1
/usr/pgsql-9.6/share/postgres.bki
/usr/pgsql-9.6/share/postgres.description
/usr/pgsql-9.6/share/postgres.shdescription
/usr/pgsql-9.6/share/postgresql.conf.sample
/var/run/postgresql
/usr/lib64/security/pam_postgresok.so
/usr/share/doc/pam-1.1.8/txts/README.pam_postgresok
/usr/share/man/man8/pam_postgresok.8.gz
/usr/share/augeas/lenses/dist/postgresql.aug
/usr/pgsql-9.6/include/internal/postgres_fe.h
/usr/pgsql-9.6/include/postgres_ext.h
/usr/pgsql-9.6/include/server/postgres.h
/usr/pgsql-9.6/include/server/postgres_ext.h
/usr/pgsql-9.6/include/server/postgres_fe.h
/usr/lib/firewalld/services/postgresql.xml
/usr/pgsql-9.6/share/postgresql-9.6-libs.conf
/usr/pgsql-9.6/lib/postgres_fdw.so
/usr/pgsql-9.6/share/extension/postgres_fdw--1.0.sql
/usr/pgsql-9.6/share/extension/postgres_fdw.control

搜索配置文件路径:

find / -name pg_config

输出:

/usr/pgsql-9.6/bin/pg_config

库文件路径:/usr/pgsql-9.6/lib/
头文件路径:/usr/pgsql-9.6/include/
配置文件路径:/usr/pgsql-9.6/bin/pg_config
可执行文件路径:/usr/pgsql-9.6/bin
数据和配置文件:/var/lib/pgsql/9.6/data

初始化数据库:

/usr/pgsql-9.6/bin/postgresql96-setup initdb

输出:

Initializing database ... OK

设置认证模式:

参考:https://www.postgresql.org/message-id/[email protected]

编辑 /var/lib/pgsql/9.6/data/pg_hba.conf 第81行:

# IPv4 local connections:
host    all             all             127.0.0.1/32            password

管理服务,和其他服务一样还是用systemd进行管理:

自动启动:systemctl enable postgresql-9.6

启动服务:systemctl start postgresql-9.6

重启服务:systemctl restart postgresql-9.6

停止服务:systemctl stop postgresql-9.6

使用postgres用户在PostgreSQL控制台生成其他用户和新数据库:

新建一个Linux新用户 dbuser :

sudo adduser dbuser

修改默认用户postgres的密码:

切换到postgres用户:

sudo su - postgres

返回:

-bash-4.2$

使用psql命令登录PostgreSQL控制台,输入命令:

psql

返回:

psql (9.6.10)
Type "help" for help.

postgres=#

这时相当于系统用户postgres以同名数据库用户的身份,登录数据库,这是不用输入密码的。如果一切正常,系统提示符会变为”postgres=#”,表示这时已经进入了数据库控制台。以下的命令都在控制台内完成。

在数据库控制台输入命令:

\password postgres

输入密码,以及重复输入密码:4zAGbSxBOXV9Rnxy

创建数据库用户dbuser(刚才创建的是Linux系统用户),并设置密码:

CREATE USER dbuser WITH PASSWORD 'M4MLnFKYsNhpwfmv';

返回:CREATE ROLE

创建用户数据库,这里为exampledb,并指定所有者为dbuser:

CREATE DATABASE exampledb OWNER dbuser;

返回:CREATE DATABASE

将exampledb数据库的所有权限都赋予dbuser,否则dbuser只能登录控制台,没有任何数据库操作权限:

GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;

返回:GRANT

重新启动postgresql的服务:

Ctrl+D 2次,退出数据库控制台。

重启postgresql:

systemctl restart postgresql-9.6

用户 postgres 登录测试:

psql -h 127.0.0.1 -p 5432 -U postgres

返回:

Password for user postgres:

输入密码:4zAGbSxBOXV9Rnxy

返回:

psql (9.6.10)
Type "help" for help.

postgres=#

用户 dbuser 登录数据库 exampledb :

psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432

返回:

Password for user dbuser:

输入密码:M4MLnFKYsNhpwfmv

返回:

psql (9.6.10)
Type "help" for help.

exampledb=>