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相同.两者都没有意义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |