Skip to content
 数据库

配置 PostgreSQL

Published: at 00:00:00Suggest Changes

演示系统:Archlinux

安装

$ sudo pacman -S postgresql

管理用户

安装过程会建立名为postgres的用户和群组。1

postgres 的家目录为/var/lib/postgres,安装结束时隶属于root,需要改变其所属:

$ sudo chown postgres:postgres /var/lib/postgres

postgres 默认密码未知,要用超级权限修改:

$ sudo passwd postgres

尔后,凭此密码可登录 postgres :

$ su -l postgres

小窍门:强行登录

若忘记某一用户的密码,可以使用sudo来登录,例如:

$ sudo -iu postgres

初始化

首先,登入 postgres 。

在启用 PostgreSQL 之前,必须初始化数据库簇2

[postgres]$ initdb -D /var/lib/postgres/data

部署

权限策略

先给出重启服务的命令:

$ sudo systemctl restart postgresql.service

连接设置

配置文件:/var/lib/postgres/data/postgresql.conf

节:CONNECTIONS AND AUTHENTICATION

段:Connection Settings

默认情况下,服务只监听来自localhost的连接:

listen_addresses = 'localhost'

listen_addresses乃列表,你可以追加IP地址。3

listen_addresses = '*'意为允许来自任何IP的连接。

重启服务。

客户端授权

配置文件:/var/lib/postgres/data/pg_hba.conf

pg_hba.conf管理着不同来源用户的权限。

默认情况下,任何系统用户都能作为任意数据库用户登录,由该段决定:4

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust

重启服务。

要求登录密码

你需要依次修改pg_hba.confpostgresql.conf5

首先编辑pg_hba.conf,设置METHOD字段为scram-sha-256

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256

然后编辑postgresql.conf,在CONNECTIONS AND AUTHENTICATIONAuthentication段:

password_encryption = scram-sha-256

重启服务。

运行此 SQL 为用户设置密码:

alter user <用户> with encrypted password '密码';

参考

Footnotes

  1. https://wiki.archlinux.org/title/PostgreSQL#Installation

  2. https://wiki.archlinux.org/title/PostgreSQL#Initial_configuration

  3. https://wiki.archlinux.org/title/PostgreSQL#Configure_PostgreSQL_to_be_accessible_from_remote_hosts

  4. https://wiki.archlinux.org/title/PostgreSQL#Restricts_access_rights_to_the_database_superuser_by_default

  5. https://wiki.archlinux.org/title/PostgreSQL#Require_password_for_login


Next Post
M叉树之高