postgresql – psql:fe_sendauth:没有提供密码

前端之家收集整理的这篇文章主要介绍了postgresql – psql:fe_sendauth:没有提供密码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个正在运行的Postgresql数据库.现在我想在我的数据库自动执行某些操作,但是我的密码有问题.

我使用以下bash脚本:

#!/bin/bash
export PGPASSWORD="postgres"
sudo -u postgres psql -d pg_ldap -w --no-password -h localhost -p 5432 -t -c "SELECT id FROM radusers WHERE id=1"

当我运行bash脚本时,我收到以下错误

psql: fe_sendauth: no password supplied

我甚至试图在我的主目录中配置.pgpass文件,但无济于事:

*:*:*:postgres:postgres

我运行了以下命令:

sudo chmod 0600 .pgpass

然而,似乎任何方法都不起作用.有谁有想法吗?我忘了做某事吗?

sudo不保留大多数环境变量.如果要为在sudo下运行的命令指定环境变量,请通过sudo执行此操作:
sudo PGPASSWORD="postgres" -u postgres psql -d pg_ldap -w --no-password -h localhost -p 5432 -t -c "SELECT id FROM radusers WHERE id=1"

sudo是否允许这取决于您网站上的有效安全政策.

我不推荐这种方法,因为它在命令行历史记录和进程列表中公开了密码.使用.pgpass文件要好得多,或者最好将pg_hba.conf设置为来自用户postgres的本地连接的对等身份验证.

您可以使用.pgpass文件,但它必须是您正在使用的用户的.pgpass,而不是您正在使用的用户;在这种情况下,它需要~postgres / .pgpass.想一想:运行postgres的psql不知道你是通过sudo从你的帐户运行它,它不知道你的用户帐户是什么,即使它确实没有读取权限作为用户postgres到〜youruser /.pgpass.

另外,-w与–no-password相同.两者都没有意义.

猜你在找的Postgre SQL相关文章