PostgreSQL在Ubuntu 18.04中的奇怪行为

时间:2018-06-28 19:42:07

标签: postgresql linux ubuntu

我使用以下方法安装了PostgreSQL

  • sudo apt install libpq-dev postgresql postgresql-contrib

一开始一切都很好,但是我还需要远程连接,

  1. 我需要修改:

    pg_hba.confpostgresql.conf

  2. 但是我会在修改之前对其进行备份。

  3. 重新启动-sudo systemctl restart posgresql
  4. 有时效果完美

  5. ,但是在其他情况下,当我尝试sudo -u postgres psql时,出现以下错误:

      

    psql:colud无法连接到服务器:没有这样的文件或目录。是   服务器在本地运行并接受Unix域上的连接   套接字“ /var/run/postgresql/.s.PGSQL.5432

    这很奇怪,因为我仅更改了pg_hba.conf中的IP地址以允许远程连接,有时可以正常工作,有时会收到错误。也可以远程停止工作。

  6. 我回到备份文件,重新启动服务器(因此文件中的远程文件没有更改),错误仍然存​​在。

  7. 我检查了服务:sudo systemctl status postgresql 活跃且正常工作。

我不知道出了什么问题,因为我希望从备份中恢复到初始文件,然后才能解决该错误。请帮助

我多次发现错误,但就我而言,服务器处于活动状态,甚至还返回到备份状态,无法正常工作。

1 个答案:

答案 0 :(得分:1)

我设法通过以下方法解决此问题。

  1. 检查Postgresql日志
> tail -f /var/log/postgresql/<what-ever-postgresql-log-name>.logs

如果您的日志显示FATAL: could not remove old lock file,如下所示。然后转到步骤2。

2019-09-06 01:49:13.477 UTC [5439] LOG:  database system is shut down
pg_ctl: another server might be running; trying to start server anyway
2019-09-06 01:51:17.668 UTC [1039] FATAL:  could not remove old lock file "postmaster.pid": Permission denied
2019-09-06 01:51:17.668 UTC [1039] HINT:  The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again.
pg_ctl: could not start server
Examine the log output.
  1. 在data_directory路径中删除postmaster.pid。 您可以通过以下方式检查data_directory路径
      

    cat / etc / postgresql / * / main / postgresql.conf

确认您的data_directory路径-然后发出以下命令。

rm /var/lib/postgresql/10/main/postmaster.pid
  1. 将postgres的权限设置为data_directory路径。就我而言,位于/ var / lib / postgresql /-
  

老实说,我仍然在寻找(为什么我们仍需要设置权限)默认情况下已经对postgres用户具有权限的地方。

sudo chmod 765 /var/run/postgresql  
sudo chown postgres /var/run/postgresql
  1. 然后重新启动服务

sudo service postgresql restart

  1. 测试是否正常工作。

sudo -u postgres psql

注意:我正在使用Postgresql 10