导语
PostgreSQL 用户密码的设定通常有两种。
一是创建用户时直接指定用户密码。
create user shawnyan password 'test';
二是创建用户后更新用户密码。
alter user shawnyan password 'test';
PostgreSQL 将用户信息存储在系统表 pg_catalog.pg_authid
中。
select rolname as user, left(rolpassword,20) as passwd
from pg_catalog.pg_authid
where rolname = 'shawnyan';
user | passwd
----------+----------------------
shawnyan | SCRAM-SHA-256$4096:E
(1 row)
接下来将基于 PostgreSQL 16.2 介绍扩展 pgpasswd
。
postgres=# select version();
version
-------------------------------------------------------------------------------------------------------------------
PostgreSQL 16.2-ShawnYan on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2), 64-bit
(1 row)
pgpasswd
类似于 Linux 中的 passwd
命令,使用 pgpasswd
可以从 Linux 命令行更改 PostgreSQL 帐户密码,无需输入任何 SQL 语句。
pgpasswd
是 PostgreSQL 扩展和独立可执行文件(无需在数据库中安装任何内容,无需运行 CREATE EXTENSION)。
下载源码:
git clone https://github.com/shawn0915/pgpasswd.git
目录结构比较简洁:
[postgres@rocky9 pgpasswd]$ ls
LICENSE Makefile META.json pgpasswd.c README.md
直接编译安装即可:
[postgres@rocky9 pgpasswd]$ make
gcc -I/opt/pgsql/include -I/opt/pgsql/include/server -c pgpasswd.c -Wall
gcc -I/opt/pgsql/include -L/opt/pgsql/lib -lpq -o pgpasswd pgpasswd.o
[postgres@rocky9 pgpasswd]$ make install
install pgpasswd /opt/pgsql/bin
可以看到将编译好的二进制文件 pgpasswd
安装到了 bin 目录下。
使用方式:
需要指定参数 -U
需要修改密码的用户名, -h
数据库连接地址, -p
数据库端口, -d postgres
系统库。
可以加 -v
参数打印更多信息。
[postgres@rocky9 ~]$ pgpasswd -U shawnyan -h 127.1 -p 5432 -d postgres -v
Password:
PG libpq version: 160002
conninfo: user=shawnyan host=127.1 port=5432 dbname=postgres password=test
PG server version: 160002
New password:
Confirm new password:
stmt=ALTER USER shawnyan PASSWORD 'test1'
Password changed.
用新密码测试连接:
[postgres@rocky9 ~]$ psql -U shawnyan -h 127.1
Password for user shawnyan:
psql (16.2-ShawnYan)
Type "help" for help.
postgres=>
到此,PG 扩展 pgpasswd
介绍到这里,欢迎“品尝”。
-- END --
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。