我的 PostgresSQL 数据库在我的 Ubuntu 18.10 笔记本电脑上,我想使用 Windows 10 PostgreSQL 在我的桌面上访问我的笔记本电脑数据库,因为我正在学习如何使用 Microsoft 的 Power BI,而 Power BI 仅在 Windows 上可用。
因此,我编辑了我的 postgresql.conf 文件如下:
listen_addresses = 'localhost,my_public_ip_address,my_local_ip_address'
因此,我按如下方式编辑了我的 pg_hba.conf 文件(将这些行添加到文件的最底部):
host all all my_local_ip_address md5
host all all my_public_ip_address md5
在此之后,我运行:
sudo /etc/init.d/postgresql restart
sudo pg_lsclusters
postgresql 服务以令人难以置信的速度重新启动,提示出现了问题,并且 lsclusters 报告:
Ver Cluster Port Status Owner Data directory Log file
11 main 5432 down postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
出于某种原因,编辑 pg_hba.conf 和 postgresql.conf 会使我的集群崩溃,任何使用“psql postgres”或“psql -h localhost -d my_database -U my_user_name”登录的尝试都会导致:
me@me-computer_name:~$ psql postgres
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
一旦我用恢复的更改恢复我原来的 .conf 备份并再次重新启动 postgresql 11,一切都很好。为什么编辑这两个 .conf 文件会使我的客户端崩溃,我如何使我的客户端允许通过我的公共/本地 ip 从我家附近的其他计算机(并且只有我家)连接?
当 Postgres 实例没有重新启动时,您总是希望首先查看
pg_lsclusters
(/var/log/postgresql/postgresql-11-main.log
) 中提到的日志文件。它将有错误消息告诉为什么服务器在重新启动时立即退出。根据提到的更改,它可能无法收听您在 中提到的地址之一
listen_addresses
。这些地址必须对应于安装在服务器上的网络接口,而不是预期连接的设备的远程地址。可以使用ip a list
命令列出服务器上的这些接口。在源/目的地方面,这与 相反
pg_hba.conf
,它可能会列出允许连接的远程地址(远离服务器的 POV)(加上通常localhost
允许本地连接)。