加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 16:25:00 所属栏目:百科 来源:网络整理
导读:我有一个正在运行的PostgreSQL数据库.现在我想在我的数据库上自动执行某些操作,但是我的密码有问题. 我使用以下bash脚本: #!/bin/bashexport PGPASSWORD="postgres"sudo -u postgres psql -d pg_ldap -w --no-password -h localhost -p 5432 -t -c "SELECT
我有一个正在运行的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相同.两者都没有意义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读