I tried the following and it failed
bash-3.2$ pg_ctl restart
pg_ctl: no database directory specified and environment variable PGDATA unset
<
One liner (with default postgresSql 9.6 install)
sudo su postgres -c "/Library/PostgreSQL/9.6/bin/pg_ctl restart -D /Library/PostgreSQL/9.6/data"
Full version
Get the pgdata folder (gave me /Library/PostgreSQL/9.6/data) (thanks @a_horse_with_no_name)
select name, setting from pg_settings where name = 'data_directory';
For me it returns '/Library/PostgreSQL/9.6/data'
Then
sudo su - postgres
./bin/pg_ctl restart -D /Library/PostgreSQL/9.6/data
Note: postgres' user home dir should be "/Library/PostgreSQL/9.6"
If you used brew
you could find the restart(start|stop) instructions by doing a brew info postgresql
Some issues that happen stem from the fact I've seen the plist not load, on OS startup, for some reason. I always forgot what to do and this helped.
on my Postgres 9.2 brew recipe it had:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
As you want to re-start Postgres I assume the server is already running.
Using the superuser account you can query the location of the data directory through SQL:
select name, setting
from pg_settings
where name = 'data_directory'
With that information you can supply the data directory to the pg_ctl command using the -D
switch (see the manual for details)