使用timescaledb-parallel-copy导入数据时PostgreSQL密码认证失败求助
解决timescaledb-parallel-copy的密码验证失败问题(pq: password authentication failed for user "postgres")
嘿,我刚好碰到过类似的情况,给你几个实用的解决思路,应该能搞定这个密码验证失败的问题:
1. 直接在命令行传递密码或用环境变量
timescaledb-parallel-copy支持直接通过参数或环境变量传递密码,避免手动交互的问题:
- 明文指定密码(适合测试环境):
timescaledb-parallel-copy --db-name 你的数据库名 --table new_observation --file observation.csv --user postgres --password 你的postgres密码 - 用环境变量隐藏密码(更安全):
export PGPASSWORD="你的postgres密码" timescaledb-parallel-copy --db-name 你的数据库名 --table new_observation --file observation.csv --user postgres
2. 检查PostgreSQL的认证配置文件pg_hba.conf
有时候是PostgreSQL的本地认证策略不允许密码登录,需要调整配置:
- 找到pg_hba.conf文件,在Ubuntu 16.04里路径一般是
/etc/postgresql/[你的PostgreSQL版本]/main/pg_hba.conf(比如9.5版本就是/etc/postgresql/9.5/main/pg_hba.conf) - 找到针对postgres用户的本地连接规则,把
peer或ident改成md5:# 修改前 local all postgres peer # 修改后 local all postgres md5 - 重启PostgreSQL服务生效:
sudo systemctl restart postgresql
3. 先验证postgres用户密码是否正确
先通过psql登录确认密码没问题,避免是密码本身错误:
psql -U postgres -d 你的数据库名
如果登录失败,先重置postgres密码:
sudo -u postgres psql # 进入psql命令行后执行 ALTER USER postgres WITH PASSWORD '你的新密码'; \q
4. 使用完整的数据库连接字符串
如果上面的方法都不行,试试用完整的连接字符串指定所有参数,这种方式兼容性更好:
timescaledb-parallel-copy --connection "host=localhost port=5432 dbname=你的数据库名 user=postgres password=你的密码 sslmode=disable" --table new_observation --file observation.csv
内容的提问来源于stack exchange,提问作者Bhavit
相关产品推荐
相关产品推荐

