CentOS7.2部署postgresql9.6

1基础信息

1.1基础设施

数据库服务器推荐配置python

CPU 双核2.5GHz,内存 32G以上linux

数据库服务器操做系统c++

CentOS Linux release 7.2.1511 (Core)sql

数据库服务器版本数据库

Postgresql9.6vim

1.2 PostgreSQL简介

1.2.1 Postmistress是什么

PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。api

PostgreSQL 开发者把它念做 post-gress-Q-L。数组

PostgreSQL 的 Slogan 是 "世界上最早进的开源关系型数据库"。安全

1.2.2 ORDBMS 术语

在咱们开始学习 PostgreSQL 数据库前,让咱们先了解下 ORDBMS 的一些术语:bash

数据库: 数据库是一些关联表的集合。

数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。

: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。

行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。

冗余:存储两倍数据,冗余下降了性能,但提升了数据的安全性。

主键:主键是惟一的。一个数据表中只能包含一个主键。你可使用主键来查询数据。

外键:外键用于关联两个表。

复合键:复合键(组合键)将多个列做为一个索引键,通常用于复合索引。

索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。相似于书籍的目录。

参照完整性: 参照的完整性要求关系中不容许引用不存在的实体。与实体完整性是关系模型必须知足的完整性约束条件,目的是保证数据的一致性。

1.2.3 PostgreSQL 特征

函数:经过函数,能够在数据库服务器端执行指令程序。

索引:用户能够自定义索引方法,或使用内置的 B 树,哈希表与 GiST 索引。

触发器:触发器是由SQL语句查询所触发的事件。如:一个INSERT语句可能触发一个检查数据完整性的触发器。触发器一般由INSERT或UPDATE语句触发。 多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每一个用户提供了一个数据库的"快照",用户在事务内所做的每一个修改,对于其余的用户都不可见,直到该事务成功提交。

规则:规则(RULE)容许一个查询能被重写,一般用来实现对视图(VIEW)的操做,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。

数据类型:包括文本、任意精度的数值数组、JSON 数据、枚举类型、XML 数据

等。

全文检索:经过 Tsearch2 或 OpenFTS,8.3版本中内嵌 Tsearch2。

NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 数据库的外部数据包装器。

数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 进行 ETL。

1.三、安装PostgreSQL

1.3.1安装依赖包

yum intall -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel  python-devel gcc-c++ openssl-devel cmake

yum install gcc* readline-devel

1.3.2建立用户并改密

adduser postgres

passwd postgres

更改用户 postgres 的密码 。

新的 密码:

无效的密码: 它基于字典单词

从新输入新的 密码:

passwd: 全部的身份验证令牌已经成功更新。

id postgres

uid=1001(postgres) gid=1001(postgres) 组=1001(postgres)

1.3.3解压缩

tar -zxvf postgresql-9.6.2.tar.gz

cd postgresql-9.6.2

1.3.4配置编译选项

./configure --prefix=/opt/pgsql/ --with-perl--with-libxml--with-libxslt

1.3.5编译并安装

gmake

gmake install

1.3.6初始化数据库

mkdir /opt/pgdata

chown postgres:postgres /opt/pgdata

su - postgres

/opt/pgsql/bin/initdb -D /opt/pgdata

1.3.7配置环境变量

vim .bashrc

export PGDATA=/opt/pgdata

export PGHOME=/opt/pgsql

export PATH=.:$PATH:$PGHOME/bin:$PGDATA/bin

source .bashrc

1.3.8改配置容许远程链接访问

cd /opt/pgdata

vim postgresql.conf

将 #listen_addresses = 'localhost' 的注释去掉并改成 listen_addresses = '*'

vim pg_hba.conf

在文件末尾添加: host all all 0.0.0.0/0 md5,表示容许任何IP链接

1.3.9启动postgres

pg_ctl start

1.3.10配置系统服务[可选]

cp /opt/postgres/postgresql-9.6.2/contrib/start-scripts/linux /etc/init.d/postgresql

vim /etc/init.d/postgresql

#! /bin/sh

# Installation prefix

prefix=/opt/pgsql

# Data directory

PGDATA="/opt/pgdata"

# Who to run the postmaster as, usually "postgres".  (NOT "root")

PGUSER=postgres

# Where to keep a log file

PGLOG="$PGDATA/serverlog"

# The path that is to be used for the script

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DAEMON="$prefix/bin/postmaster"

# What to use to shut down the postmaster

PGCTL="$prefix/bin/pg_ctl"

 

set -e

# Only start if we can find the postmaster.

test -x $DAEMON ||

{

echo "$DAEMON not found"

if [ "$1" = "stop" ]

then exit 0

else exit 5

fi

}

 

# If we want to tell child processes to adjust their OOM scores, set up the

# necessary environment variables.  Can't just export them through the "su".

if [ -e "$PG_OOM_ADJUST_FILE" -a -n "$PG_CHILD_OOM_SCORE_ADJ" ]

then

DAEMON_ENV="PG_OOM_ADJUST_FILE=$PG_OOM_ADJUST_FILE PG_OOM_ADJUST_VALUE=$PG_CHILD_OOM_SCORE_ADJ"

fi

 

# Parse command line parameters.

case $1 in

start)

echo -n "Starting PostgreSQL: "

test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE"

su - $PGUSER -c "$DAEMON_ENV $DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1

echo "ok"

;;

stop)

echo -n "Stopping PostgreSQL: "

su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"

echo "ok"

;;

restart)

echo -n "Restarting PostgreSQL: "

su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"

test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE"

su - $PGUSER -c "$DAEMON_ENV $DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1

echo "ok"

;;

reload)

echo -n "Reload PostgreSQL: "

su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"

echo "ok"

;;

status)

su - $PGUSER -c "$PGCTL status -D '$PGDATA'"

;;

*)

# Print help

echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2

exit 1

;;

esac

 

exit 0

chmod +x /etc/init.d/postgresql

service postgresql start

1.3.11登陆数据库进行配置

psql

建立用户"folio_admin"并设置密码:

postgres=# create role folio_admin with password 'calis123'login;

建立数据库folio_db,全部者为folio_admin:

postgres=# create database folio_db owner folio_admin;

将folio_db数据库的全部权限赋予folio_admin,不然folio_admin只能登陆psql,没有任何数据库操做权限:

postgres=#grant all privileges on database folio_db to folio_admin;

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

建立okapi运行须要的数据库以及帐号信息

建立用户"okapi"并设置密码:

postgres=# create role okapi with password 'okapi25'login;

建立数据库okapi,全部者为okapi:

postgres=# create database okapi owner okapi;

将okapi数据库的全部权限赋予okapi,不然okapi只能登陆psql,没有任何数据库操做权限:

postgres=#grant all privileges on database okapi to okapi;

1.3.12扩展函数和okapi库

支持“不区分重音”的排序规则

如何没法再/opt/postgresql-9.6.11/contrib/unaccent下执行make&&make install 就先

yum install  https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-redhat-repo-42.0-11.noarch.rpm

安装postgrrsql的源

而后安装插件依赖

安装PostgreSQL拓展包(可选)

yum install postgresql96-devel.x86_64

安装PostgreSQL的附加模块(可选)

yum install postgresql96-contrib.x86_64

而后应该就能够实现再contrib/unaccent下执行make && make install

而后就能够再终端执行以下方法扩展函数

CREATE EXTENSION unaccent;

create extension "pgcrypto"; 

select digest('aa','sha1');

SELECT gen_random_uuid();

首先建立两个数据库分别为,okapi,folio_db.并分配权限。

create user okapi with password 'okapi25';

create user folio_admin with password 'calis123';

create database okapi owner okapi;

create database folio_db owner folio_admin;

grant all privileges on database okapi to okapi;

grant all privileges on database folio_db to folio_admin;

alter role okapi superuser;

alter role okapi createrole;

alter role okapi createdb;

alter role folio_admin superuser;

alter role folio_admin createrole;

alter role folio_admin createdb;


扩展okapi库

CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public;

CREATE EXTENSION IF NOT EXISTS unaccent WITH SCHEMA public;

CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public;

1.3.13使用图形化工具

下载Navicat Premium工具尝试链接,让操做更便捷

`UR`Z8I)ZJ9W~{}FQ62`[[S.png  

注:若是没法链接,把防火墙端口放开

firewall-cmd --zone=public --add-port=5432/tcp --permanent

firewall-cmd --reload

 LSR]IJ8)N{[R13(7_CK53BI.png

1.4postgres经常使用命令

1.4.1登陆

psql -U pname -d database  // pname 表示postgres的登陆用户名,database 则表示要访问的数据库

1.4.2查看全部的数据库

\l

1.4.3查看全部的表(这里的红色部分根据你要查看的数据库的名字来改变)

\d database /

1.4.4查看表的结构(这里的红色部分根据你要查看的表的名字来改变)

\d tablename/

1.4.5切换数据库

\c database

1.4.6退出登陆

\q

1.4.7建立database

CREATE DATEBASE database_name;

1.4.8建立schema

CREATE SCHEMA schema_name;

1.4.9查看数据库下面全部的schema

select * from information_schema.schemata;

1.4.10查看一个schema下面全部的表

select * from information_schema.tables where table_schema = 'schema_name';

1.4.11建立角色

CREATE ROLE role_name [...];

[...]为可多选角色属性参数,参数可分别为:

登录(login):具备login属性的角色能够链接数据库,一个带有login属性的角色能够等同于“数据库用户”,由于数据库用户建立的时候默认自带login属性.

超级用户(superuser):超级用户拥有至高无上的权限,可是这个权限分配的时候,必定要当心,想要建立超级用户,必须使用带超级用户的角色去建立带“超级用户”的角色 .

建立数据库(createdb):建立数据库属性,顾名思义就是拥有“建立数据库”属性的角色能够建立数据库,对于超级用户的角色来讲,自身能够建立数据库,不用带“建立数据库”属性 .

建立角色(createrole):带有“建立角色”属性的角色能够建立其余角色。通常带有“建立角色”属性的角色还能够删除和更改其余角色(删除和更改只限于普通用户)

口令(password):只有在客户认证方法要求与数据库创建链接必须使用口令的时候, 口令才比较重要.

在建立好角色后,若是须要修改的话,可使用alter role语句修改

 

1.4.12权限设置

将名字为schema_name的schema的全部权限给予role_name角色;

grant all on schema schema_name to role_name;

将名字为schema_name的schema下面全部的表的操做权限给予role_name角色;

grant all on all tables in schema schema_name to role_name;

 

若是你不许备将全部的权限都给予role_name角色,能够给予部分的权限,每一个权限值之间以逗号分隔,而权限的明细以下:

 

SELECT:该权限用来查询表或是表上的某些列,或是视图,序列。

INSERT:该权限容许对表或是视图进行插入数据操做,也可使用COPY FROM进行数据的插入。

UPDATE:该权限容许对表或是或是表上特定的列或是视图进行更新操做。

DELETE:该权限容许对表或是视图进行删除数据的操做。

TRUNCATE:容许对表进行清空操做。

REFERENCES:容许给参照列和被参照列上建立外键约束。

TRIGGER:容许在表上建立触发器。

CREATE:对于数据库,容许在数据库上建立Schema;对于Schema,容许对Schema上建立数据库对象;对于表空间,容许把表或是索引指定到对应的表空间上(在Oracle中,咱们是用quota子句或是unlimited tablespace权限来控制)。该权限与Oracle上的CREATE类权限彻底不一样了。

CONNECT:容许用户链接到指定的数据库上。

TEMPORARY或是TEMP:容许在指定数据库的时候建立临时表。

EXECUTE:容许执行某个函数。

USAGE:对于程序语言来讲,容许使用指定的程序语言建立函数;对于Schema来讲,容许查找该Schema下的对象;对于序列来讲,容许使用currval和nextval函数;对于外部封装器来讲,容许使用外部封装器来建立外部服务器;对于外部服务器来讲,容许建立外部表。

ALL PRIVILEGES:表示一次性给予能够授予的权限。

相关文章
相关标签/搜索