如何获取PostgreSQL连接字符串信息?psql终端查询及createdb用户密码疑问
当然可以!psql和createdb本身就提供了不少便捷方式来查看这些连接相关的信息,我来一步步给你讲清楚:
一、在psql终端快速获取当前连接的关键信息
1. 用\conninfo命令一键查看
这是最直接的方式,打开psql终端后,输入:
\conninfo
它会输出当前会话的核心连接参数,比如:
You are connected to database "database" as user "postgres" on host "localhost" at port "5432".
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
如果没有启用SSL,输出里会显示SSL connection (none)或者直接不提及SSL相关内容,一眼就能看出来是否启用了加密连接。
2. 查询系统视图获取更详细的信息
如果你需要更结构化的输出,可以查询pg_stat_activity视图,这个视图记录了所有当前连接的会话信息。执行这条SQL:
SELECT usename AS "当前用户", client_addr AS "连接host", ssl AS "是否启用SSL" FROM pg_stat_activity WHERE pid = pg_backend_pid();
usename就是你当前用的PostgreSQL用户名client_addr是连接的主机地址(本地连接可能显示127.0.0.1或者::1)ssl字段返回t表示启用了SSL,f则表示未启用
二、查看createdb使用的用户及密码
createdb的连接行为和psql是一致的,它会按照优先级读取连接参数,我们可以通过这些方式查看:
1. 查看默认使用的用户
createdb默认会使用当前操作系统用户名作为PostgreSQL的连接用户,比如你在Linux下用ubuntu账号运行createdb mydb,它会尝试用PostgreSQL里的ubuntu用户去连接。如果这个用户不存在,就会报错,这时候你可以指定用户:
createdb -U postgres mydb
这里-U参数就是指定连接的PostgreSQL用户。
2. 检查生效的环境变量
createdb会读取PostgreSQL相关的环境变量,比如PGUSER、PGPASSWORD、PGHOST等,你可以在终端里输入以下命令查看当前生效的变量:
echo $PGUSER # 查看默认连接用户 echo $PGPASSWORD # 查看默认密码(一般不建议把密码存在环境变量里,所以可能为空)
3. 查看pgpass密码文件
大多数情况下,密码不会存在环境变量里,而是存在pgpass文件中,这个文件是PostgreSQL的密码存储文件:
- Linux/macOS路径:
~/.pgpass - Windows路径:
%APPDATA%\postgresql\pgpass.conf
文件格式是一行一条记录:
hostname:port:database:username:password
createdb会自动匹配对应的记录来获取密码,不需要手动输入。
4. 验证当前用户权限
如果你不确定createdb用的哪个用户,可以先运行psql进入终端,用\conninfo查看当前连接用户,因为createdb默认会用和psql相同的用户(除非你指定了不同参数)。
内容的提问来源于stack exchange,提问作者user3162553




