"root" execution of the PostgreSQL server is not permitted

chopper draw lion4 picture chopper draw lion4 · Feb 4, 2015 · Viewed 48k times · Source

When I try to start postgresql I get an error:

postgres

postgres does not know where to find the server configuration file.
You must specify the --config-file or -D invocation option or set the PGDATA environment variable.

So then I try to set my config file:

postgres -D /usr/local/var/postgres

And I get the following error:

postgres cannot access the server configuration file "/usr/local/var/postgres/postgresql.conf": Permission denied

Hmm okay. Next, I try to perform that same action as an admin:

 sudo postgres -D /usr/local/var/postgres

And I receive the following error:

"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user ID to prevent possible system security compromise. See the documentation for more information on how to properly start the server.

I googled around for that error message but cannot find a solution.
Can anyone provide some insight into this?

Answer

Muthukumar picture Muthukumar · Feb 20, 2018

For those trying to run custom command using the official docker image, use the following command. docker-entrypoint.sh handles switching the user and handling other permissions.

docker-entrypoint.sh -c 'shared_buffers=256MB' -c 'max_connections=200'