#!/bin/sh # # postgresql-setup Initialization operation for PostgreSQL # For SELinux we need to use 'runuser' not 'su' if [ -x /sbin/runuser ] then SU=runuser else SU=su fi PGENGINE=/usr/bin PGDATA=/var/lib/postgresql/data PGLOG=/var/lib/postgresql/pgstartup.log script_result=0 initdb(){ if [ -f "$PGDATA/PG_VERSION" ] then echo -n "Data directory is not empty!" echo -n " [FAILED] " echo script_result=1 else echo -n "Initializing database: " if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ] then mkdir -p "$PGDATA" || exit 1 chown postgres:postgres "$PGDATA" chmod go-rwx "$PGDATA" fi # Clean up SELinux tagging for PGDATA [ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA" # Make sure the startup-time log file is OK, too if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ] then touch "$PGLOG" || exit 1 chown postgres:postgres "$PGLOG" chmod go-rwx "$PGLOG" [ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG" fi # Initialize the database $SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null # Create directory for postmaster log mkdir "$PGDATA/pg_log" chown postgres:postgres "$PGDATA/pg_log" chmod go-rwx "$PGDATA/pg_log" if [ -f "$PGDATA/PG_VERSION" ] then echo -n " [ OK ] " else echo -n " [FAILED] " script_result=1 fi echo fi } case "$1" in initdb) initdb ;; *) echo "Usage: $0 initdb" exit 2 esac exit $script_result