| #!/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 |