1. 安装

根据业务需求选择版本,官网下载

yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
yum install postgresql96 postgresql96-server
rpm -qa|grep postgre

初始化数据库

执行完初始化任务之后,postgresql 会自动创建和生成两个用户一个数据库

  • linux 系统用户 postgres:管理数据库的系统用户;
  • 密码由于是默认生成的,需要在系统中修改一下,$passwd postgres
  • 数据库用户 postgres:数据库超级管理员
  • 此用户默认数据库为postgres
/usr/pgsql-9.6/bin/postgresql96-setup initdb

设置成 centos7 开机启动服务

systemctl enable postgresql-9.6

启动 postgresql 服务

systemctl start postgresql-9.6
systemctl status postgresql-9.6

2. PostgrepSQL的简单配置

pgsql9.6配置文件位置默认在:/var/lib/pgsql/9.6/data/postgresql.conf

2.1 修改监听的ip和端口

监听IP使用localhost时,只能通过127.0.0.1访问数据库;

如果需要通过其他远程地址访问PostgreSQL,可以使用“,”作为分隔符,把IP地址添加到listen_addresses后,或者使用“*”,让所有IP都可以访问数据库。

注意:这里只是开启数据库的远程访问权限,具体是否能够进行远程登录,还需要依据pg_hba.conf的认证配置,详细内容见下节。

# - Connection Settings -

#listen_addresses = 'localhost' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)

2.2 修改数据库log相关的参数

日志收集,一般是打开的

# This is used when logging to stderr:
logging_collector = on # Enable capturing of stderr and csvlog
# into log files. Required to be on for
# csvlogs.
# (change requires restart)

日志目录,一般使用默认值

# These are only used if logging_collector is on:
log_directory = 'pg_log' # directory where log files are written,
# can be absolute or relative to PGDATA

只保留一天的日志,进行循环覆盖

log_filename = 'postgresql-%a.log' # log file name pattern,
# can include strftime() escapes
log_truncate_on_rotation = on # If on, an existing log file of the
# same name as the new log file will be
# truncated rather than appended to.
# But such truncation only occurs on
# time-driven rotation, not on restarts
# or size-driven rotation. Default is
# off, meaning append to existing files
# in all cases.
log_rotation_age = 1d # Automatic rotation of logfiles will
# happen after that time. 0 disables.
log_rotation_size = 0 # Automatic rotation of logfiles will

2.3 内存参数

共享内存的大小,用于共享数据块。如果你的机器上有足够的内存,可以把这个参数改的大一些,这样数据库就可以缓存更多的数据块,当读取数据时,就可以从共享内存中读,而不需要再从文件上去读取。

# - Memory -
shared_buffers = 32MB # min 128kB
# (change requires restart)

单个SQL执行时,排序、hash json所用的内存,SQL运行完后,内存就释放了。

# actively intend to use prepared transactions.
#work_mem = 1MB # min 64kB

PostgreSQL安装完成后,可以主要修改以下两个主要内存参数:

shared_buffer:共享内存的大小,主要用于共享数据块,默认是128MB;

如果服务器内存有富余,可以把这个参数适当改大一些,这样数据库就可以缓存更多的数据块,当读取数据时,就可以从共享内存中读取,而不需要去文件读取。

work_mem:单个SQL执行时,排序、hash join所使用的内存,SQL运行完成后,内存就释放了,默认是4MB;

增加这个参数,可以提高排序操作的速度。


3. 数据库的基础操作

3.1 连接数据库控制台

如果想连接到数据库,需要切换到postgres用户下(默认的认证配置前提下)

在postgres用户下连接数据库,是不需要密码的。

切换 postgres 用户后,提示符变成 -bash-4.2$

使用psql连接到数据库控制台,此时系统提示符变为'postgres=#'

$ su postgres
bash-4.2$ psql
psql (9.6)
Type "help" for help. postgres=#

3.2 一些常用控制台命令

命令 作用
\h 查看所有sql命令,\h select 等可以查看具体命令
? 查看所有psql命令
\d 查看当前数据库所有表
\d [tablename] 查看具体的表结构
\du 查看所有用户
\l 查看所有数据库
\e 打开文本编辑器

3.3 SQL控制台操作语句

数据库创建与修改

# 创建数据库
create database testdb;
# 删除数据库
drop database testdb;
# 重命名数据库(该数据库必须没有活动的连接)
alter database testdb rename to newname;
# 以其他数据库为模板创建数据库(表结构、数据都会复制)
create database newdb template testdb; # 将查询结果写入文件
\o /tmp/test.txt
select * from test;
# 列状显示
\w
# 再一次\o关闭写入,否则是连续写入的
\o
# 退出控制台
\q

数据库用户创建与授权

# 建立新的数据库用户
create user zhangsan with password '123456';
# 为新用户建立数据库
create database testdb owner zhangsan;
# 把新建的数据库权限赋予新用户
grant all privileges on database testdb to zhangsan;

4. 认证登录

认证权限配置文件: /var/lib/pgsql/9.6/data/pg_hba.conf

命令行的各个参数解释说明

  • -U username 用户名,默认值postgres
  • -d dbname 要连接的数据库名,默认值postgres。如果单指定-U,没指定-d参数,则默认访问与用户名名称相同的数据库。
  • -h hostname 主机名,默认值localhost
  • -p port 端口号,默认值5432

4.1 认证方式

常见的四种身份验证方式

  • trust:凡是能连接到服务器的,都是可信任的。只需要提供数据库用户名,可以没有对应的操作系统同名用户;
  • password 和 md5:对于外部访问,需要提供 psql 用户名和密码。对于本地连接,提供 psql 用户名密码之外,还需要有操作系统访问权(用操作系统同名用户验证)。password 和 md5 的区别就是外部访问时传输的密码是否用 md5 加密;
  • ident:对于外部访问,从 ident 服务器获得客户端操作系统用户名,然后把操作系统作为数据库用户名进行登录;对于本地连接,实际上使用了peer;
  • peer:通过客户端操作系统内核来获取当前系统登录的用户名,并作为psql用户名进行登录。

4.2 远程登录

postgresql.conf

listen_addresses = '*' # what IP address(es) to listen on;

pg_hba.conf

所有的用户通过任意ip都可以通过md5(密码)的方式登陆PostgreSQL,配置如下:

host all all 0.0.0.0/0 ident

验证

# server:重启生效
systemctl restart postgresql-9.6
# client:命令行远程登录
psql -U zhangsan -d testdb -h 10.122.45.97 -p 5432

4.3 本地登录

PostgreSQL登陆默认是peer,不需要验证用户密码即可进入psql相关数据库,但前提是必须切换用户登陆。类似于最开始执行的su postgres;psql一样。

[root@sltkp3cbpch data]# psql -U zhangsan -d testdb -p 5432
psql: FATAL: Peer authentication failed for user "zhangsan"

如果必须按照上述登陆方式登陆的话,有两种修改方式:

  • 增添map映射
  • 修改认证方式

a. map映射

map映射是用来将系统用户映射到对应的postgres数据库用户,用来限制指定的用户使用指定的账号来登陆。

pg_ident.conf

修改pg_ident.conf文件,与pg_hba.conf文件同级目录。其基本格式如下:

# MAPNAME SYSTEM-USERNAME PG-USERNAME
map_zhangsan root zhangsan
  • MAPNAME指的是映射的名称,比如map_zhangsan
  • SYSTEM-USERNAME就是系统用户的名称,比如root
  • PG-USERNAME就是数据库里存在的用户名称,比如zhangsan

上面定义的map意思是:定义了一个叫做map_zhangsan的映射,当客户端用户是root的时候,允许它用zhangsan用户来登陆PostgreSQL。

修改pg_hba.conf文件

在peer的认证方式后面添加:map=map_tom

重启PostgreSQL服务,再次尝试,连接成功。

b. 修改认证方式

需要修改一下pg_hba.cong文件,将local all all peer修改为local all all md5,如下图所示:

重启PostgreSQL服务,再次尝试,连接成功。

[sleepy↓]

postgresql安装及配置的更多相关文章

  1. PostgreSQL安装和配置---Ubuntu

    PostgreSQL安装和配置---Ubuntu

  2. Ubuntu PostgreSQL安装和配置

    一.安装 1.安装 使用如下命令,会自动安装最新版,这里为9.5 sudo apt-get install postgresql 安装完成后,默认会: (1)创建名为"postgres&qu ...

  3. ArcGIS Desktop直连PostgreSQL安装及配置图解(windows)

    目录 1 PostgreSQL 11.0安装及配置 2 psqlODBC安装及配置 3 PostGIS安装及配置 4 pgAdmin4使用入门 5 空间数据导入 5.1 将PostgreSQL的bin ...

  4. PostgreSQL 安装 & 用户配置

    一.为什么选择 PostgreSQL 自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. MySQL被oracle收购,innodb随之被oracle控制. 二 ...

  5. windows下PostgreSQL 安装与配置

    下载地址 https://www.postgresql.org/download/ Download the installer certified by EnterpriseDB for all s ...

  6. ubuntu下postgreSQL安装配置

    一.安装并配置,并设置远程登陆的用户名和密码 1.安装postgreSQL sudo apt-get update sudo apt-get install postgresql-9.4 在Ubunt ...

  7. Linux下apache+phppgadmin+postgresql安装配置

    Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...

  8. centos下postgresql的安装与配置[转]

    本文摘自:http://blog.chinaunix.net/uid-24846094-id-78490.html 一.安装(以root身份进行) 1.检出最新的postgresql的yum配置从ht ...

  9. CentOS 7 安装、配置、使用 PostgreSQL 9.5及PostGIS2.2

    学习CentOS下安装使用PostgreSQL [安装过程] 1.添加RPM    yum install https://download.postgresql.org/pub/repos/yum/ ...

随机推荐

  1. Git 分支基本命令

    1. 查看当前分支 (git branch) 2. 创建分支 (git branch 分支名) 3.切换分支(git checkout 分支名) 4.分支上的常规操作 5.分支的合并 (git che ...

  2. 灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据

    灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据 目录: 1.MM32F0010UART简介 2.MM32F0010UART特性 3.MM32F0010使用 ...

  3. 微服务系列(二)GRPC的介绍与安装

    微服务系列(二)GRPC的介绍与安装 1.GPRC简介 GRPC是Google公司基于Protobuf开发的跨语言的开源RPC框架.GRPC基于HTTP/2协议设计,可以基于一个HTTP/2链接提供多 ...

  4. TPS和响应时间之间是什么关系

    在这个图中,定义了三条曲线.三个区域.两个点以及三个状态描述. 三条曲线:吞吐量的曲线(紫色).使用率 / 用户数曲线(绿色).响应时间曲线(深蓝色).三个区域:轻负载区(Light Load).重负 ...

  5. 腾讯 angel 3.0:高效处理模型

    腾讯 angel 3.0:高效处理模型 紧跟华为宣布新的 AI 框架开源的消息,腾讯又带来了全新的全栈机器学习平台 angel3.0.新版本功能特性覆盖了机器学习的各个阶段,包括:特征工程.模型训练. ...

  6. 编写HSA内核

    编写HSA内核 介绍 HSA提供类似于OpenCL的执行模型.指令由一组硬件线程并行执行.在某种程度上,这类似于 单指令多数据(SIMD)模型,但具有这样的便利:细粒度调度对于程序员而言是隐藏的,而不 ...

  7. 新的微芯片MCU增加了来自外部闪存的安全引导保护

    新的微芯片MCU增加了来自外部闪存的安全引导保护 New Microchip MCU Adds Secure Boot Protection from External Flash 对于从外部SPI闪 ...

  8. 5.23考试总结(NOIP模拟2)

    5.23考试总结(NOIP模拟2) 洛谷题单 看第一题第一眼,不好打呀;看第一题样例又一眼,诶,我直接一手小阶乘走人 然后就急忙去干T2T3了 后来考完一看,只有\(T1\)骗到了\(15pts\)[ ...

  9. Pandas高级教程之:处理text数据

    目录 简介 创建text的DF String 的方法 columns的String操作 分割和替换String String的连接 使用 .str来index extract extractall c ...

  10. Linux中测试网络命令

    ping IP -t 是持续性查看网络状态