1*4882a593Smuzhiyun#!/bin/sh 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# postgresql-setup Initialization operation for PostgreSQL 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun# For SELinux we need to use 'runuser' not 'su' 6*4882a593Smuzhiyunif [ -x /sbin/runuser ] 7*4882a593Smuzhiyunthen 8*4882a593Smuzhiyun SU=runuser 9*4882a593Smuzhiyunelse 10*4882a593Smuzhiyun SU=su 11*4882a593Smuzhiyunfi 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunPGENGINE=/usr/bin 14*4882a593SmuzhiyunPGDATA=/var/lib/postgresql/data 15*4882a593SmuzhiyunPGLOG=/var/lib/postgresql/pgstartup.log 16*4882a593Smuzhiyunscript_result=0 17*4882a593Smuzhiyun 18*4882a593Smuzhiyuninitdb(){ 19*4882a593Smuzhiyun if [ -f "$PGDATA/PG_VERSION" ] 20*4882a593Smuzhiyun then 21*4882a593Smuzhiyun echo -n "Data directory is not empty!" 22*4882a593Smuzhiyun echo -n " [FAILED] " 23*4882a593Smuzhiyun echo 24*4882a593Smuzhiyun script_result=1 25*4882a593Smuzhiyun else 26*4882a593Smuzhiyun echo -n "Initializing database: " 27*4882a593Smuzhiyun if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ] 28*4882a593Smuzhiyun then 29*4882a593Smuzhiyun mkdir -p "$PGDATA" || exit 1 30*4882a593Smuzhiyun chown postgres:postgres "$PGDATA" 31*4882a593Smuzhiyun chmod go-rwx "$PGDATA" 32*4882a593Smuzhiyun fi 33*4882a593Smuzhiyun # Clean up SELinux tagging for PGDATA 34*4882a593Smuzhiyun [ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA" 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun # Make sure the startup-time log file is OK, too 37*4882a593Smuzhiyun if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ] 38*4882a593Smuzhiyun then 39*4882a593Smuzhiyun touch "$PGLOG" || exit 1 40*4882a593Smuzhiyun chown postgres:postgres "$PGLOG" 41*4882a593Smuzhiyun chmod go-rwx "$PGLOG" 42*4882a593Smuzhiyun [ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG" 43*4882a593Smuzhiyun fi 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun # Initialize the database 46*4882a593Smuzhiyun $SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun # Create directory for postmaster log 49*4882a593Smuzhiyun mkdir "$PGDATA/pg_log" 50*4882a593Smuzhiyun chown postgres:postgres "$PGDATA/pg_log" 51*4882a593Smuzhiyun chmod go-rwx "$PGDATA/pg_log" 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun if [ -f "$PGDATA/PG_VERSION" ] 54*4882a593Smuzhiyun then 55*4882a593Smuzhiyun echo -n " [ OK ] " 56*4882a593Smuzhiyun else 57*4882a593Smuzhiyun echo -n " [FAILED] " 58*4882a593Smuzhiyun script_result=1 59*4882a593Smuzhiyun fi 60*4882a593Smuzhiyun echo 61*4882a593Smuzhiyun fi 62*4882a593Smuzhiyun} 63*4882a593Smuzhiyun 64*4882a593Smuzhiyuncase "$1" in 65*4882a593Smuzhiyun initdb) 66*4882a593Smuzhiyun initdb 67*4882a593Smuzhiyun ;; 68*4882a593Smuzhiyun *) 69*4882a593Smuzhiyun echo "Usage: $0 initdb" 70*4882a593Smuzhiyun exit 2 71*4882a593Smuzhiyunesac 72*4882a593Smuzhiyun 73*4882a593Smuzhiyunexit $script_result 74