【介绍】
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=>