PostgreSQL 是一个功能强大的开源对象关系数据库系统,它应用并扩大了 SQL 语言,并联合了许多性能,能够平安地存储和扩大最简单的数据工作负载。PostgreSQL 的起源能够追溯到 1986 年,作为加州大学伯克利分校 POSTGRES 我的项目的一部分,并且在外围平台上领有超过 35 年的踊跃开发教训。PostgreSQL 因其通过验证的架构、可靠性、数据完整性、弱小的功能集、可扩展性以及软件背地的开源社区始终如一地提供高性能和翻新解决方案的奉献精神而博得了良好的名誉。PostgreSQL 可在所有次要操作系统上运行,自 2001 年以来始终合乎 ACID 规范,并具备弱小的附加组件,例如风行的 PostGIS 天文空间数据库扩展器。毫不奇怪,PostgreSQL 已成为许多人和组织抉择的开源关系数据库。
PostgreSQL 除了其弱小的性能外,还反对许多环境变量,这些环境变量能够通过在命令行中设置或在启动脚本中设置来应用,以管制其行为。理解这些环境变量能够帮忙 DBA 更好地治理 PostgreSQL 数据库。
接下来,咱们来介绍几个罕用的 Postgres 环境变量。
1. PGHOST
指定 PostgreSQL 服务器的主机名或 IP 地址。它通常用于客户端工具,如 psql,以指定要连贯的数据库服务器的地位。
[postgres@shawnyan ~]$ export PGHOST=192.168.8.151
[postgres@shawnyan ~]$ psql
psql (15.2)
Type "help" for help.
(postgres@192) [postgres] 10:19:34# \conninfo
You are connected to database "postgres" as user "postgres" on host "192.168.8.151" at port "5432".
2. PGPORT
指定 PostgreSQL 服务器的端口号。默认端口为 5432,然而如果咱们将其更改为其余端口,能够在 PGPORT 环境变量中指定相应的端口号。
[postgres@shawnyan ~]$ export PGPORT=6666
[postgres@shawnyan ~]$ psql
psql (15.2)
Type "help" for help.
(postgres@192) [postgres] 10:21:30# \conninfo
You are connected to database "postgres" as user "postgres" on host "192.168.8.151" at port "6666".
3. PGDATABASE
指定连贯到的数据库名称。例如,咱们能够设置 PGDATABASE 为 ”shawnyan”,示意连贯到名为 ”shawnyan” 的数据库。
[postgres@shawnyan ~]$ export PGDATABASE=shawnyan
[postgres@shawnyan ~]$ psql
psql (15.2)
Type "help" for help.
(postgres@192) [shawnyan] 10:22:30# \conninfo
You are connected to database "shawnyan" as user "postgres" on host "192.168.8.151" at port "6666".
4. PGUSER
指定连贯到 PostgreSQL 的用户名。例如,咱们能够设置 PGUSER 为 ”shawnyan”,示意应用 ”shawnyan” 用户连贯到 PostgreSQL。
[postgres@shawnyan ~]$ export PGUSER=shawnyan
[postgres@shawnyan ~]$ psql
psql (15.2)
Type "help" for help.
(shawnyan@192) [shawnyan] 10:26:41# \conninfo
You are connected to database "shawnyan" as user "shawnyan" on host "192.168.8.151" at port "6666".
5. PGPASSWORD
指定连贯到 PostgreSQL 的明码。出于平安思考,倡议仅在脚本或命令行中长期应用此环境变量,而不是在配置文件或脚本中硬编码明码。例如,咱们能够设置 PGPASSWORD 为 ”shawnyan”,示意应用 ”shawnyan” 明码连贯到 PostgreSQL。
[postgres@shawnyan data]$ psql
Password for user shawnyan:
psql (15.2)
Type "help" for help.
(shawnyan@192) [shawnyan] 10:29:18# \q
[postgres@shawnyan data]$ export PGPASSWORD=shawnyan
[postgres@shawnyan data]$ psql
psql (15.2)
Type "help" for help.
(shawnyan@192) [shawnyan] 10:29:28# \conninfo
You are connected to database "shawnyan" as user "shawnyan" on host "192.168.8.151" at port "6666".
6. PGDATA
指定 PostgreSQL 数据库的数据目录。例如,咱们能够设置 PGDATA 为 /var/lib/pgsql/15/data,如此在应用 pg_ctl 命令时,无需再次指定 - D 数据目录。
[postgres@shawnyan data]$ unset PGDATA
[postgres@shawnyan data]$ pg_ctl restart
pg_ctl: no database directory specified and environment variable PGDATA unset
Try "pg_ctl --help" for more information.
[postgres@shawnyan data]$ pg_ctl restart -D /var/lib/pgsql/15/data
waiting for server to shut down.... done
server stopped
waiting for server to start....2024-02-17 10:31:02.876 CST [17844] LOG: redirecting log output to logging collector process
2024-02-17 10:31:02.876 CST [17844] HINT: Future log output will appear in directory "log".
done
server started
[postgres@shawnyan data]$ export PGDATA=/var/lib/pgsql/15/data
[postgres@shawnyan data]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2024-02-17 10:31:18.632 CST [17866] LOG: redirecting log output to logging collector process
2024-02-17 10:31:18.632 CST [17866] HINT: Future log output will appear in directory "log".
done
server started
7. PGCLIENTENCODING
指定客户端编码。如果不指定,则默认抉择服务器设定。例如,如果咱们想应用 UTF- 8 编码,能够将 PGCLIENTENCODING 设置为 ”UTF8″。
[postgres@shawnyan log]$ export PGCLIENTENCODING=EUC_TW
[postgres@shawnyan log]$ psql
psql (15.2)
Type "help" for help.
(shawnyan@192) [shawnyan] 10:52:24# show client_encoding ;
client_encoding
-----------------
EUC_TW
(1 row)
8. PGOPTIONS
指定自定义设置选项。例如,运行回归测试套件时应用的自定义服务器设置能够在 PGOPTIONS 环境变量中设置。
make check PGOPTIONS="-c debug_parallel_query=regress -c work_mem=50MB"
再如,能够在启用新客户端会话时退出变量设置。
[postgres@shawnyan ~]$ env PGOPTIONS="-c statement_timeout=10s" psql
psql (15.2)
Type "help" for help.
(shawnyan@192) [shawnyan] 10:59:47# select pg_sleep(15);
ERROR: canceling statement due to statement timeout
9. PGDATESTYLE
指定服务器端或客户端的日期格局环境变量,也能够应用 PGTZ 来扭转日期显示的时区。例如,
[postgres@shawnyan ~]$ psql -c 'select now()'
now
-------------------------------
2024-02-17 11:12:58.144437+08
(1 row)
[postgres@shawnyan ~]$ export PGDATESTYLE='Postgres, MDY'
[postgres@shawnyan ~]$ psql -c 'select now()'
now
-------------------------------------
Sat Feb 17 11:13:03.115172 2024 CST
(1 row)
[postgres@shawnyan ~]$ export PGTZ='PST8PDT'
[postgres@shawnyan ~]$ psql -c 'select now()'
now
-------------------------------------
Fri Feb 16 19:13:12.459388 2024 PST
(1 row)
相似地,还有其余一些不太罕用的环境变量,如:PGLOCALEDIR,PGSSLMODE,PGCONNECT_TIMEOUT,PGAPPNAME,PG_OOM_ADJUST_FILE,PG_OOM_ADJUST_VALUE,PG_REGRESS_DIFF_OPTS,这里不再一一介绍。
本文由 mdnice 多平台公布