热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库技术:postgresql安装及配置超详细教程

1.安装根据业务需求选择版本,yuminstallhttps:download.postgresql.orgpubreposyum9.6redhatrhel

1. 安装

根据业务需求选择版本,

%ignore_pre_1%

初始化数据库

执行完初始化任务之后,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安装及配置超详细教程

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

postgresql安装及配置超详细教程

b. 修改认证方式

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

postgresql安装及配置超详细教程

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

到此这篇关于postgresql安装及配置超详细教程的文章就介绍到这了,更多相关postgresql安装及配置内容请搜索<编程笔记>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<编程笔记>!

需要了解更多数据库技术:postgresql安装及配置超详细教程,都可以关注数据库技术分享栏目—编程笔记


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • modulepaddle.fluidhasnoattributedata解决:pipinstallpaddlepaddle-gpu1.7.0.post107-ih ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
author-avatar
王志春aiq_411_154_739_273
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有