我通过ssh连接到服务器并运行
psql
我想从服务器中提取数据库但我无法在远程保存文件,因为我没有写入权限。如何在本地保存?
答案 0 :(得分:2)
而不是
ssh myhost psql
使用ssh隧道将本地psql
连接到远程PostgreSQL,因此您可以\copy
本地文件,例如
ssh -L 5599:localhost:5432 myhost
然后当该会话打开时,在单独的本地终端会话中:
psql -h localhost -p 5599
通过ssh隧道连接。这仅在远程系统允许来自localhost(127.0.0.1 / :: 1)的tcp / ip连接时才有效。它不必允许来自远程节点的tcp / ip PostgreSQL连接。
或者,您可以:
ssh myhost psql -c '"copy mytable to stdout"' > local_file.csv
将sd上的stdout流式传输到本地文件。
注意两层引用,因为本地shell使用第一层而远程shell使用第二层。
通常,最好的解决方案是使PostgreSQL能够侦听外部公共端口,并设置SSL,并使用hostssl
中的pg_hba.conf
条目允许您自己使用{{直接通过TCP / IP连接1}}使用SSL。那你就是:
psql