多年来,$PGUSER
当我使用 psql/pg_dump/pg_restore 等客户端工具时,我一直习惯使用环境变量。
最近我建立了一个新的 PG13 服务器,当我尝试在服务器终端上使用客户端工具时,环境变量$PGUSER
没有生效。我收到如下消息:
leon@mamba:~$ echo $PGUSER
PostgreSQL 的
leon@mamba:~$ psql
psql:错误:通过套接字“/var/run/postgresql/.s.PGSQL.5432”连接到服务器失败:
严重:角色“leon”不存在
如果我在另一台物理计算机的终端上使用这些工具,则环境变量会正常生效。
当然,两台机器上都已经设置了var。
我的pg_hba.conf:
# 类型 数据库 用户 地址 方法
主机全部全部 127.0.0.1/32 信任
主机全部全部 192.168.xx/16 md5
#IPv6 本地连接:
托管所有所有::1/128 信任
仅仅设置一个变量是不够的,您还必须将
export
其设置到您启动的进程的环境中。如果你设置一个变量
它将在您的 shell 进程的环境中设置,但您启动的进程不会继承该变量。如果您希望在
psql
您正在启动的进程的环境中设置该变量,您必须按如下方式执行:(此答案适用于 Bourne shell、Korn shell
bash
和类似的 shell。其他 shell(例如 C shell)具有不同的导出变量的方式。)