-bash: initdb: command not found

8.9k views Asked by At

I have installed PostgreSQL using the EnterpriseDB installation.

I ran sudo ./postgresql-9.3.5-3-osx.app/Contents/MacOS/installbuilder.sh --mode unattended and then ran open /Applications/TextEdit.app .profile to edit my .profile file newly created in /Users/Dhruv to add the line source /Library/PostgreSQL/9.3/pg_env.sh.

Running createuser Dhruv --pwprompt --username=postgres I got

-bash: createuser: command not found

Then running unknown-88-1f-a1-1b-c2-ec:9.3 dhruv$ sudo -u postgres /bin/createuser and various other methods I was able to set up something using some sort of password prompt. I know this later because using sudo -u postgres /Library/PostgreSQL/9.3/bin/createuser I got

createuser: creation of new role failed: ERROR: role "postgres" already exists

Running then initdb -D /Library/PostgreSQL/9.3/data I get

-bash: initdb: command not found.

Similiarly, if I try the same thing but while connected to postgres, sudo su - postgres and then initdb -D /Library/PostgreSQL/9.3/data I get again

-bash: initdb: command not found.

At a loss at what to do. 1) how do I know details of this supposed role "postgres" I created magically and 2) why is initdb not working?

3

There are 3 answers

1
David Elson On

Who are you logged in as?

When you do sudo or su -, it will run init scripts for root, such as .bashrc and .bash_profile.

These may set up difference executable search paths between root, postgres, and you.

Try something like sudo initdb, or su - postgres -c initdb ... whichever user has the paths constructed correctly, so that the path gets set up.

You could also duplicate the path/lib creation code in your own environment, but that will break if it is ever changed.

1
sxypants On

Same thing happened to me. I'm new to OS X coming from Linux, here's what I had to do. I installed postgres via homebrew and when I did so I noticed it put everything it download to: /usr/local/Cellar/postgresql/($postgres_version)/

When I cd'd into that folder I saw a directory named bin so I cd'd and saw initdb right there. So I had to then add this to my path so I could use the command:

$ export PATH=/usr/local/Cellar/postgresql/9.4.4/bin:$PATH

hope that helps you

1
carrotandapple On

How I fixed this is run brew doctor, and you might see the postgresql un der the Warning: that indicates there's unlinked kegs in your Cellar. Try to run brew link postgresql. It will show some symlinks got created. Then run init db ... again.

Hope this help!