man initdb
initdb must be run as the user that will own the server
process, because the server needs to have access to the
files and directories that initdb creates. Since the
server may not be run as root, you must not run initdb as
root either. (It will in fact refuse to do so.)
Although initdb will attempt to create the specified data
directory, often it won't have permission to do so, since
the parent of the desired data directory is often a root-
owned directory. To set up an arrangement like this, cre-
ate an empty data directory as root, then use chown to
hand over ownership of that directory to the database user
account, then su to become the database user, and finally
run initdb as the database user.
Mach also erst ein chown <pguser> <datadir> und dann ein initdb als <pguser>.
HTH