我在这里看到了一些相关的问题并尝试了几乎所有的解决方案,但显然我仍然缺少一些愚蠢的东西。我试图绕过使用脚本登录 PostgreSQL 的需要。这是一个非常基本的脚本,用于将服务器上的文本文件复制到我数据库中的表中,并且工作正常,除了每次运行它时都会提示我登录到 PostgreSQL。我打算编写一个每天执行此任务的 cron 作业,因此该过程需要自动进行。这是脚本。
export PGPORT=5432
export PGDATABASE=db_name
export PGUSER=user
export PGPASSWORD=my_password
psql -h host_name -p 5432 -U user -W db_name -c "\COPY schema.table_name (col1, col2, col3, col4)
from path_to_txt_file with DELIMITER '^'"
我也走下了“.pgpass 文件”路线,但无济于事。我将其保存在/home/usr/.pgpass 中,并为其提供了以下凭据
*:*:*:user:my_password
保存后给它权限如下
sudo chmod 600 .pgpass
我不确定这是否相关,但我的 .pgpass 文件路径中的“usr”与我的数据库用户名不同;我在这里作为“用户”所拥有的。此外,我正在运行的脚本位于服务器上与 .pgpass 文件完全不同的目录中。我确定这些都是新手要点,但为了完整起见,我想我会添加它们。 如果有一种方法可以修改现有脚本,使其不会提示我输入密码,那就太好了,否则,如果有人对我可能对 .pgpass 文件做错了什么有任何指导,我将不胜感激。 提前致谢
最佳答案
我认为问题是 PostgreSQL 文档中的选项“-W” ,“-W”表示“强制 psql 在连接到数据库之前提示输入密码。”
我建议你用这个
export PGPORT=5432
export PGDATABASE=db_name
export PGUSER=user
export PGPASSWORD=my_password
psql -h host_name -p $PGPORT -U $PGUSER -d $PGDATABASE -c "\COPY schema.table_name(col1,
col2, col3, col4) from path_to_txt_file with DELIMITER '^'"
关于linux - 无法在 Linux 服务器上自动登录 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26532142/