You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改PostgreSQL data_directory后无法连接服务器的问题求助

修改PostgreSQL data_directory后无法连接服务器的问题求助

我最近需要把PostgreSQL数据库从一个目录迁移到另一个路径,先在一台电脑上做了测试,迁移后一切正常。结果在另一台电脑上重复相同步骤后,重启服务虽然显示运行正常,但就是连不上数据库,想请教下大家我哪里弄错了?

我执行的操作步骤如下:

  • 停止PostgreSQL服务:systemctl stop postgresql.service
  • 创建新的数据库存储目录:mkdir /data/postgres_data
  • 设置目录的权限和所属用户组:
    • chown postgres:postgres /data/postgres_data
    • chmod 700 /data/postgres_data
  • 同步原数据库数据到新目录:sudo rsync -av /var/lib/postgresql/9.6/main /data/postgresql_data/
  • 修改postgresql.conf配置文件,更新数据目录路径:data_directory = '/data/postgres_data'
  • 修改/lib/systemd/system/postgresql.service中的环境变量:
    ...
    Environment=PGDATA=/data/postgres_data
    ...
    
  • 重新加载服务配置并启动服务:
    • systemctl daemon-reload
    • systemctl start postgresql.service
    • systemctl status postgresql.service

服务状态显示正常,但我用psql连接数据库时出现以下错误:

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"?

我做了一些排查:

  • 执行sudo netstat -ltpn查看端口监听,发现Postgres确实在监听5432端口:
    ...
    tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 15107/postgres
    ...
    tcp6 0 0 :::5432 :::* LISTEN 15107/postgres
    ...
    
  • 检查PostgreSQL的相关配置,unix_socket_directories = /var/run/postgresql/和port = 5432都和之前一致,而且/var/run/postgresql/.s.PGSQL.5432这个Unix套接字文件确实存在。

补充几个大家可能关心的细节:

编辑补充:

  • 为什么要迁移目录?因为数据库一直在占用磁盘空间,现在虽然还够用,但后续肯定需要处理存储问题。
  • /data/postgres_data和原路径/var/lib/postgresql/9.6/main都是绝对路径,不存在相对位置的问题。
  • /var/run/postgresql/.s.PGSQL.5432这个套接字文件确实存在。

有没有大佬能帮我看看问题出在哪,该怎么修正?

备注:内容来源于stack exchange,提问作者ilnarkz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:45:29