未找到服务的 PostgreSQL 定义(pgAdmin、psql、...)
PostgreSQL definition of service not found (pgAdmin, psql, ...)
上下文
我在 ${HOME}/pg_service.conf
有一个简单的 pg_service.conf
文件,内容如下:
# comment
[service_name]
host=localhost
port=5432
dbname=databasename
user=username
问题
每当我尝试通过在选项 'Service' 下设置 'service_name' 从 pgAdmin III 创建新服务器时,我都会遇到此错误消息:
我也试过复制pg_service.conf
file nearby the .pg_hba.conf
and restarting PostgreSQL;出现同样的问题。
当我尝试 运行 一个 psql
命令时发生同样的错误:
psql: definition of service "service_name" not found
我怎样才能让它发挥作用?
我找到了 ,但这对我帮助不大,因为它是为 Windows 用户准备的。
环境
我在 Ubuntu 18.04 使用 "PostgreSQL 10.12 (Ubuntu 10.12-0ubuntu0.18.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit"
。
1。基于用户的解决方案
注意文件名前面的点.
!
以下设置适用于 CentOS 7.7 上的 PG 10.12 和位于 $HOME
目录中的 .pg_service.conf
:
$ cat .pg_service.conf
[service_name]
host=localhost
port=5410
dbname=postgres
user=postgres
然后按如下方式连接到PostgreSQL;
$ psql postgresql://?service=service_name
psql (10.12)
Type "help" for help.
端口检查:
postgres=# show port;
port
------
5410
(1 row)
连接检查:
postgres=# \c
You are now connected to database "postgres" as user "postgres".
postgres=#
2。系统级解决方案
您可以键入此命令来检查全局 pg_service.conf
文件必须位于的路径:
$ pg_config --sysconfdir
/etc/postgresql-common
您可以将您的 pg_service.conf
文件复制到该目录中(但此处没有点 .
)。它必须由 root 拥有。
一般提示
1) 文件优先级
如 doc;
中所述
"The user file takes precedence over of the system-wide file."
2) 密码
在 peer authentication 的情况下,两种解决方案都应使用存储在 .pgpass
文件中的密码。在那种情况下,你不需要把它写在.pg_service.conf
文件中。
上下文
我在 ${HOME}/pg_service.conf
有一个简单的 pg_service.conf
文件,内容如下:
# comment
[service_name]
host=localhost
port=5432
dbname=databasename
user=username
问题
每当我尝试通过在选项 'Service' 下设置 'service_name' 从 pgAdmin III 创建新服务器时,我都会遇到此错误消息:
我也试过复制pg_service.conf
file nearby the .pg_hba.conf
and restarting PostgreSQL;出现同样的问题。
当我尝试 运行 一个 psql
命令时发生同样的错误:
psql: definition of service "service_name" not found
我怎样才能让它发挥作用?
我找到了
环境
我在 Ubuntu 18.04 使用 "PostgreSQL 10.12 (Ubuntu 10.12-0ubuntu0.18.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit"
。
1。基于用户的解决方案
注意文件名前面的点.
!
以下设置适用于 CentOS 7.7 上的 PG 10.12 和位于 $HOME
目录中的 .pg_service.conf
:
$ cat .pg_service.conf
[service_name]
host=localhost
port=5410
dbname=postgres
user=postgres
然后按如下方式连接到PostgreSQL;
$ psql postgresql://?service=service_name
psql (10.12)
Type "help" for help.
端口检查:
postgres=# show port;
port
------
5410
(1 row)
连接检查:
postgres=# \c
You are now connected to database "postgres" as user "postgres".
postgres=#
2。系统级解决方案
您可以键入此命令来检查全局 pg_service.conf
文件必须位于的路径:
$ pg_config --sysconfdir
/etc/postgresql-common
您可以将您的 pg_service.conf
文件复制到该目录中(但此处没有点 .
)。它必须由 root 拥有。
一般提示
1) 文件优先级
如 doc;
中所述"The user file takes precedence over of the system-wide file."
2) 密码
在 peer authentication 的情况下,两种解决方案都应使用存储在 .pgpass
文件中的密码。在那种情况下,你不需要把它写在.pg_service.conf
文件中。