首页 > 数据库 >Ubuntu20.04 PostgreSQL 14 安装配置记录

Ubuntu20.04 PostgreSQL 14 安装配置记录

时间:2023-12-11 17:22:40浏览次数:48  
标签:Ubuntu20.04 PostgreSQL 14 database IP auth user postgresql postgres

PostgreSQL 名称来源
It was originally named POSTGRES, referring to its origins as a successor to the Ingres database developed at the University of California, Berkeley.

In 1996, the project was renamed to PostgreSQL to reflect its support for SQL.

PostgreSQL 的发音为 [ˈpəʊsɡreˈsɪkl], 中间部分类似于 progress 的发音

安装
参考官方安装说明 https://www.postgresql.org/download/linux/ubuntu/

# 创建软件源
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
# 添加key
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# 安装
sudo apt update
sudo apt install postgresql
# 检查
sudo systemctl status postgresql
# 查看端口
sudo netstat -lnp
1
2
3
4
5
6
7
8
9
10
11
安装后, 系统中会增加一个 postgres 用户, 注意哦, 这个用户是可以登录的. 建议给这个用户设个密码

$ more /etc/passwd
...
postgres:x:113:121:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

这个用户可以直接访问 postgresql

$ sudo su postgres
[sudo] password for milton:
postgres@ubuntu:/home/milton$ psql
psql (14.2 (Ubuntu 14.2-1.pgdg20.04+1))
Type "help" for help.

postgres=#
postgres-# \q
postgres@ubuntu:/home/milton$

配置
查看数据库列表
sudo -u postgres psql -l
创建用户
# 使用 postgres 用户
createuser --interactive
# 或者 sudo
sudo -u postgres createuser --interactive

默认情况下, postgresql 会使用与linux用户同名的用户登录, 所以如果创建了用户为 milton, 还需要再创建一个名为 milton 的 linux 用户.

创建数据库
# 使用 postgres 用户
createdb milton
# 或者 sudo
sudo -u postgres createdb milton
# 指定用户
sudo -u postgres createdb testdb -O postgres

主配置
对应的配置文件在 /etc/postgresql//main, 当前的版本是14, 路径是 /etc/postgresql/14/main/postgresql.conf

sudo vi /etc/postgresql/14/main/postgresql.conf
主配置文件说明 https://www.postgresql.org/docs/14/runtime-config-connection.html

服务IP listen_addresses

# 监听所有地址
listen_addresses = '*'
# 监听指定地址
listen_addresses = '192.168.10.20'

服务端口 port

port = 5432
密码加密方式 password_encryption

password_encryption = scram-sha-256 # scram-sha-256 or md5
用户名命名空间 db_user_namespace, 如果设置为on, 用户创建时可以使用 username@dbname 这样的格式, 用于与数据库绑定. 这时候依然可以创建全局用户, 但是连接时客户端必须加上 @

db_user_namespace = off
基于主机的认证配置
配置文件 pg_hba.conf, 配置说明 https://www.postgresql.org/docs/14/auth-pg-hba-conf.html

客户端认证由配置文件控制, 通常为名为 pg_hba.conf 的文件, 存储在集群的数据目录(HBA 代表 host-based authentication 的缩写). 当数据目录初始化时, 会生成一个默认的 pg_hba.conf 文件. 可以通过修改主配置文件, 将文件放到其他路径.

pg_hba.conf 文件通常的格式是按行组织的文本记录

使用#号标识注释
如果一行未结束需要换行, 使用\符号.
每行记录由一些空格或tab分隔的字段组成. 如果字段包含空格, 需要用双引号包围.
每行记录指定了: 连接类型, 客户端IP范围, 数据库名, 用户名, 验证方式.
匹配的第一个记录(匹配连接类型+客户端地址+数据库+用户名)将用于验证
没有缺省或再次验证, 只要一个记录被选中, 那么验证就只用这个记录处理, 如果没有命中的记录, 就返回拒绝.
初始配置示例
# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local all postgres peer

# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 0.0.0.0/0 trust
# IPv6 local connections:
host all all ::1/128 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 scram-sha-256
host replication all ::1/128 scram-sha-256

记录格式说明
记录可以是这些格式

local database user auth-method [auth-options]
host database user address auth-method [auth-options]
hostssl database user address auth-method [auth-options]
hostnossl database user address auth-method [auth-options]
hostgssenc database user address auth-method [auth-options]
hostnogssenc database user address auth-method [auth-options]
host database user IP-address IP-mask auth-method [auth-options]
hostssl database user IP-address IP-mask auth-method [auth-options]
hostnossl database user IP-address IP-mask auth-method [auth-options]
hostgssenc database user IP-address IP-mask auth-method [auth-options]
hostnogssenc database user IP-address IP-mask auth-method [auth-options]

连接方式

local 使用本机Unix-domain sockets, 如果没有local开头的记录, 则不允许用Unix-domain sockets连接
host 使用TCP/IP连接, 包含SSL和GSSAPI方式
hostssl TCP/IP + 使用SSL
hostnossl TCP/IP + 不使用SSL
hostgssenc TCP/IP + GSSAPI 加密
hostnogssenc TCP/IP + 不使用 GSSAPI 加密
数据库, 指定匹配的数据库

数据库名 指定数据库, 多个数据库使用逗号连接
all 匹配所有
sameuser 与此数据库同名的用户, 必须是这个用户
samerole 与此数据库同名的role, 用户必须属于这个role
samegroup 以废弃
replication
@ 可以用@号指定文件
用户, 指定匹配的用户

用户名 指定的用户, 多个用户用+号连接
all 所有用户
@ 可以用@号指定文件
客户端地址

172.20.143.89/32 IPv4地址或范围
172.20.1.1/255.0.0.0 IPv4地址范围的另一种格式
fe80::7a31:c1ff:0000:0000/96 IPv6地址或范围
all 所有地址
samenet 同一子网的地址
samehost 当前主机的所有地址
.example.com 域名通配
验证方式

trust 无条件通过
reject 直接拒绝
scram-sha-256 使用SCRAM-SHA-256验证
md5 使用 Perform SCRAM-SHA-256 或 MD5 验证
password 使用未加密的密码验证, 注意这种方式下, 密码在网络中是明文传输
gss 使用 GSSAPI 验证, 仅适用于 TCP/IP 连接.
sspi 使用 SSPI 验证, 仅适用于 Windows
ident 通过ident服务器, 获取当前客户端操作系统用户名, 并与请求的数据库用户名进行校验, 仅适用于 TCP/IP 连接.
peer 从操作系统获取用户名, 仅适用于 local 方式的连接
ldap Authenticate using an LDAP server.
radius Authenticate using a RADIUS server
cert 使用 SSL 客户端证书进行验证
pam 使用操作系统提供的 Pluggable Authentication Modules (PAM) 服务进行验证
bsd 使用操作系统提供的 BSD Authentication service 进行验证
验证选项

根据不同的验证方式提供的选项
常用命令
修改用户口令
postgres=# ALTER USER postgres WITH PASSWORD 'postgres';
1
待更新补充
————————————————
版权声明:本文为CSDN博主「IOsetting」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/michaelchain/article/details/122952151

标签:Ubuntu20.04,PostgreSQL,14,database,IP,auth,user,postgresql,postgres
From: https://www.cnblogs.com/telwanggs/p/17894913.html

相关文章

  • Codeforces Round 914 (Div. 2)
    CodeforcesRound914(Div.2)A-Forked!解题思路:枚举皇后和国王能被骑士吃到的位置,重合的点数就是答案。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;typedefpair<ll,ll>pii;#definefifirst#definesesecondconstintmod=1e9......
  • PostgreSQL 执行动态crosstab查询
    在本文中,我们将介绍如何在PostgreSQL中执行动态crosstab查询。crosstab查询是一种将行转换为列的查询方式,常用于生成交叉表格。使用动态crosstab查询可以根据查询结果自动调整生成的表格结构,使其更加灵活和可扩展。 什么是动态crosstab查询?动态crosstab查询是一种使用动态SQL......
  • PostgreSQL中的行转列
    PG有三种行转列写法:1、groupby+sum+casewhen2、用postgresql的crosstab函数3、groupby+string_agg+split_part(分组,行转列,字符切割)环境准备1CREATE TABLE sales (2    year INTEGER,3    quarter INTEGER,4    sales_amount NUMERIC5......
  • PostgreSQL重命名报错
    ERROR:currentdatabasecannotberenamedSTATEMENT:ALTERDATABASExxxRENAMETOxxx2;查看客户端软件连接信息是否是当前需要修改的数据库,如果是,需要把数据库修改成其他数据库。如,我要修改postgres名称,那么这里就需要把postgres换成其他数据库 ERROR:database......
  • postgresql查看表、字段注释
    一、查看pg表字段‘名称’、‘类型’、‘非空’、‘注释’SELECTa.attnameas字段名,format_type(a.atttypid,a.atttypmod)as类型,a.attnotnullas非空,col_description(a.attrelid,a.attnum)as注释FROMpg_classasc,pg_attributeasawherea.attrelid=c.oida......
  • 141. 环形链表
    1.题目介绍给你一个链表的头节点\(head\),判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪\(next\)指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数\(pos\)来表示链表尾连接到链表中的位置(索引从0开始)。注意:\(pos\)不作为参数进行......
  • 2023-2024-1 20232309 《网络空间安全导论》第14(5)周学习总结
    2023-2024-120232309《网络空间安全导论》第14(5)周学习总结教材学习内容总结教材学习中的问题和解决过程1.什么是Spam?。。。。好好好2.爬虫相关原理?emmmmm果然现在看懂怎么操作的具体过程对我来说还是太困难了。。。3.怎样算非结构化信息?基于AI的学习(汗流浃背了......
  • 14、绘制图形(QPainter)
    效果 //定义一个新的类#ifndefPAINTERAREA_H#definePAINTERAREA_H#include<QObject>#include<QWidget>//QPen画笔是基本的图形对象,绘制直线、曲线、多边形等形状#include<QPen>//QBrush画刷是基本的图形对象,主要用于填充,比如矩形、多边形等形状#include<Q......
  • #2023-2024-1 20231408《计算机基础与程序设计》第十一周学习总结
    作业信息这个作业属于哪个课程<2023-2024-1-计算机基础与程序设计>这个作业要求在哪里<2023-2024-1计算机基础与程序设计第十一周作业>这个作业的目标<《计算机科学概论》第15,16章,《C语言程序设计》第10章,上周测试题>作业正文https://www.cnblogs.com/jfxyh06......
  • 2023-2024-1 20231418 《计算机基础与程序设计》第11周学习总结
    2023-2024-120231418《计算机基础与程序设计》第11周学习总结这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业要求在哪里2023-2024-1计算机基础与程序设计第十一周作业这个作业的目标1.学习《计算机科学概论》第15,16章并完成云班课测试;2.学习《C......