我从 osX 二进制文件安装了 Postgres 9.3。
当我尝试使用 pg_ctl restart 重新启动时,收到以下错误:
$ pg_ctl restart
pg_ctl: could not open PID file "/Library/PostgreSQL/9.3/data/postmaster.pid": Permission denied
Bryan@bryans-mbp Fri Jun 13 13:41:24 ~
$ sudo ls -la /Library/PostgreSQL/9.3/data/postmaster.pid
Password:
-rw------- 1 postgres daemon 75 Jun 11 10:36 /Library/PostgreSQL/9.3/data/postmaster.pid
谁应该拥有这个文件以及其权限应该是什么?
答案1
权限是正确的,因为您希望所有数据文件和其他相关内容都归用户所有postgres
。我认为这里的问题是postgres
守护进程没有以postgres
用户身份运行。
要检查 postgres 守护进程(postmaster)以哪个用户身份运行,请运行:
大多数 *NIX (例如 Solaris):
ps -ef | grep postgres
Linux
ps aux | grep postgres
确保以 root 身份运行:
sudo -u postgres pg_ctl -D /Library/PostgreSQL/9.3/data start
pg_ctl
调整和的必要路径sudo
。
答案2
您可能能够直接切换到 os 级别用户到 postgres 用户:
$ sudo su postgres
然后运行重启命令:
$ pg_ctl restart