2017-10-24 4 views
0

PostgreSQL 10dockerfile postgresl Rolle erstellen

Ich versuche, eine Rolle in einem Docker-Container auf Start erstellen

Ich habe versucht, wie so die Rolle zu erstellen:

gosu postgres pg_ctl start -D /var/lib/postgresql/data 

if [ "${PGUSER}" != 'postgres' ]; then 
    gosu postgres psql --command="CREATE USER ${PGUSER} SUPERUSER WITH PASSWORD '${PGPASSWORD}';" --echo-hidden --echo-queries 
fi 

gosu postgres pg_ctl stop -w -D /var/lib/postgresql/data 

Diese noch gibt mir FATAL: Rolle "Grafadmin" existiert nicht

Beim Versuch, eine Datenbank mit erstellen:

gosu postgres createdb -O grafadmin grafana 

Ich habe auch versucht:

cat > ${HOMEDIR}/user.sql <<SQL 
DO 
$body$ 
BEGIN 
    IF NOT EXISTS (
     SELECT 
     FROM pg_catalog.pg_user 
     WHERE username = '${PGUSER}') THEN 
     CREATE ROLE ${PGUSER} WITH SUPERUSER PASSWORD '${PGPASSWORD}'; 
    END IF; 
END 
$body$; 
SQL 
cat ${HOMEDIR}/user.sql 
gosu postgres psql --file="${HOMEDIR}/user.sql" --echo-hidden --echo-queries 

ich wahrscheinlich einfach ...

etwas mit Blick auf bin

Antwort

0

Bevorzugen CREATE USER statt CREATE ROLE, wenn Sie Benutzer erstellen, die sich anmelden können Sie wird. fügen Sie einen zusätzlichen Parameter LOGIN hinzu. Ohne es können Sie sich nicht anmelden.

cat > ${HOMEDIR}/user.sql <<SQL 
DO 
$body$ 
BEGIN 
    IF NOT EXISTS (
     SELECT 
     FROM pg_catalog.pg_user 
     WHERE username = '${PGUSER}') THEN 
     CREATE USER ${PGUSER} WITH SUPERUSER PASSWORD '${PGPASSWORD}'; 
    END IF; 
END 
$body$; 
SQL 
cat ${HOMEDIR}/user.sql 
gosu postgres psql --file="${HOMEDIR}/user.sql" --echo-hidden --echo-queries 

für mehr siehe: https://www.postgresql.org/docs/10/static/sql-createuser.html