演示系统: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
来登录,例如:bash$ sudo -iu postgres
初始化
首先,登入 postgres 。
在启用 PostgreSQL 之前,必须初始化数据库簇:[2]
[postgres]$ initdb -D /var/lib/postgres/data
部署
启动服务
bash$ sudo systemctl start postgresql.service
开机自启
bash$ sudo systemctl enable postgresql.service
查看日志
bash$ journalctl -xeu postgresql.service
权限策略
先给出重启服务的命令:
$ 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.conf
和postgresql.conf
。[5]
首先编辑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 AUTHENTICATION
节Authentication
段:
password_encryption = scram-sha-256
重启服务。
运行此 SQL 为用户设置密码:
alter user <用户> with encrypted password '密码';
参考
https://wiki.archlinux.org/title/PostgreSQL#Initial_configuration ↩︎
https://wiki.archlinux.org/title/PostgreSQL#Configure_PostgreSQL_to_be_accessible_from_remote_hosts ↩︎
https://wiki.archlinux.org/title/PostgreSQL#Restricts_access_rights_to_the_database_superuser_by_default ↩︎
https://wiki.archlinux.org/title/PostgreSQL#Require_password_for_login ↩︎