⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 initdb.sh

📁 关系型数据库 Postgresql 6.5.2
💻 SH
📖 第 1 页 / 共 2 页
字号:
#!/bin/sh#-------------------------------------------------------------------------## initdb.sh--#     Create (initialize) a Postgres database system.  # #     A database system is a collection of Postgres databases all managed#     by the same postmaster.  ##     To create the database system, we create the directory that contains#     all its data, create the files that hold the global classes, create#     a few other control files for it, and create one database:  the#     template database.##     The template database is an ordinary Postgres database.  Its data#     never changes, though.  It exists to make it easy for Postgres to #     create other databases -- it just copies.##     Optionally, we can skip creating the database system and just create#     (or replace) the template database.##     To create all those classes, we run the postgres (backend) program and#     feed it data from bki files that are in the Postgres library directory.## Copyright (c) 1994, Regents of the University of California### IDENTIFICATION#    $Header: /usr/local/cvsroot/pgsql/src/bin/initdb/initdb.sh,v 1.60 1999/05/20 16:50:06 wieck Exp $##-------------------------------------------------------------------------# ----------------#       The OPT_..._PARAM gets set when the script is built (with make)#       from parameters set in the make file.## ----------------CMDNAME=`basename $0`MULTIBYTEID=0MULTIBYTE=__MULTIBYTE__if [  -n "$MULTIBYTE" ];then	MULTIBYTEID=`pg_encoding $MULTIBYTE`fi# Find the default PGLIB directory (the directory that contains miscellaneous # files that are part of Postgres).  The user-written program postconfig# outputs variable settings like "PGLIB=/usr/lib/whatever".  If it doesn't# output a PGLIB value, then there is no default and the user must# specify the pglib option.  Postconfig may validly not exist, in which case# our invocation of it silently fails.# The 2>/dev/null is to swallow the "postconfig: not found" message if there# is no postconfig.postconfig_result="`sh -c postconfig 2>/dev/null`"if [ ! -z "$postconfig_result" ]; then  set -a   # Make the following variable assignment exported to environment  eval "$postconfig_result"  set +a   # back to normalfi# Set defaults:debug=0noclean=0template_only=0POSTGRES_SUPERUSERNAME=$USERwhile [ "$#" -gt 0 ]do# ${ARG#--username=} is not reliable or available on all platforms    case "$1" in        --debug|-d)                debug=1                echo "Running with debug mode on."                ;;        --noclean|-n)                noclean=1                echo "Running with noclean mode on. "                     "Mistakes will not be cleaned up."                ;;        --template|-t)                template_only=1                echo "updating template1 database only."                ;;        --username=*)                POSTGRES_SUPERUSERNAME="`echo $1 | sed 's/^--username=//'`"                ;;        -u)                shift                POSTGRES_SUPERUSERNAME="$1"                ;;        -u*)                POSTGRES_SUPERUSERNAME="`echo $1 | sed 's/^-u//'`"                ;;        --pgdata=*)                PGDATA="`echo $1 | sed 's/^--pgdata=//'`"                ;;        -r)                shift                PGDATA="$1"                ;;        -r*)                PGDATA="`echo $1 | sed 's/^-r//'`"                ;;        --pglib=*)                PGLIB="`echo $1 | sed 's/^--pglib=//'`"                ;;        -l)                shift                PGLIB="$1"                ;;        -l*)                PGLIB="`echo $1 | sed 's/^-l//'`"                ;;        --pgencoding=*)		if [ -z "$MULTIBYTE" ];then			echo "MULTIBYTE support seems to be disabled"			exit 100		fi                mb="`echo $1 | sed 's/^--pgencoding=//'`"		MULTIBYTEID=`pg_encoding $mb`		if [ -z "$MULTIBYTEID" ];then			echo "$mb is not a valid encoding name"			exit 100		fi                ;;        -e)		if [ -z "$MULTIBYTE" ];then			echo "MULTIBYTE support seems to be disabled"			exit 100		fi                shift		MULTIBYTEID=`pg_encoding $1`		if [ -z "$MULTIBYTEID" ];then			echo "$1 is not a valid encoding name"			exit 100		fi                ;;        -e*)		if [ -z "$MULTIBYTE" ];then			echo "MULTIBYTE support seems to be disabled"			exit 100		fi                mb="`echo $1 | sed 's/^-e//'`"		MULTIBYTEID=`pg_encoding $mb`		if [ -z "$MULTIBYTEID" ];then			echo "$mb is not a valid encoding name"			exit 100		fi                ;;        *)                echo "Unrecognized option '$1'.  Syntax is:"		if [ -z "$MULTIBYTE" ];then                echo "initdb [-t | --template] [-d | --debug]" \                     "[-n | --noclean]" \                     "[-u SUPERUSER | --username=SUPERUSER]" \                     "[-r DATADIR | --pgdata=DATADIR]" \                     "[-l LIBDIR | --pglib=LIBDIR]"		else                echo "initdb [-t | --template] [-d | --debug]" \                     "[-n | --noclean]" \                     "[-u SUPERUSER | --username=SUPERUSER]" \                     "[-r DATADIR | --pgdata=DATADIR]" \                     "[-l LIBDIR | --pglib=LIBDIR]" \                     "[-e ENCODING | --pgencoding=ENCODING]"		fi                exit 100        esac        shiftdone#-------------------------------------------------------------------------# Make sure he told us where to find the Postgres files.#-------------------------------------------------------------------------if [ -z "$PGLIB" ]; then    echo "$CMDNAME does not know where to find the files that make up "    echo "Postgres (the PGLIB directory).  You must identify the PGLIB "    echo "directory either with a --pglib invocation option, or by "    echo "setting the PGLIB environment variable, or by having a program "    echo "called 'postconfig' in your search path that outputs an asignment "    echo "for PGLIB."    exit 20fi#-------------------------------------------------------------------------# Make sure he told us where to build the database system#-------------------------------------------------------------------------if [ -z "$PGDATA" ]; then    echo "$CMDNAME: You must identify the PGDATA directory, where the data"    echo "for this database system will reside.  Do this with either a"    echo "--pgdata invocation option or a PGDATA environment variable."    echo    exit 20fiTEMPLATE=$PGLIB/local1_template1.bki.sourceGLOBAL=$PGLIB/global1.bki.sourceTEMPLATE_DESCR=$PGLIB/local1_template1.descriptionGLOBAL_DESCR=$PGLIB/global1.descriptionPG_HBA_SAMPLE=$PGLIB/pg_hba.conf.samplePG_GEQO_SAMPLE=$PGLIB/pg_geqo.sample#-------------------------------------------------------------------------# Find the input files#-------------------------------------------------------------------------for PREREQ_FILE in $TEMPLATE $GLOBAL $PG_HBA_SAMPLE; do    if [ ! -f $PREREQ_FILE ]; then         echo "$CMDNAME does not find the file '$PREREQ_FILE'."        echo "This means you have identified an invalid PGLIB directory."        echo "You specify a PGLIB directory with a --pglib invocation "        echo "option, a PGLIB environment variable, or a postconfig program."        exit 1    fidone[ "$debug" -ne 0 ] && echo "$CMDNAME: using $TEMPLATE as input to create the template database."if [ $template_only -eq 0 ]; then    [ "$debug" -ne 0 ] && echo "$CMDNAME: using $GLOBAL as input to create the global classes."    [ "$debug" -ne 0 ] && echo "$CMDNAME: using $PG_HBA_SAMPLE as the host-based authentication" \         "control file."    echofi  #---------------------------------------------------------------------------# Figure out who the Postgres superuser for the new database system will be.#---------------------------------------------------------------------------if [ -z "$POSTGRES_SUPERUSERNAME" ]; then     echo "Can't tell what username to use.  You don't have the USER"    echo "environment variable set to your username and didn't specify the "    echo "--username option"    exit 1fiPOSTGRES_SUPERUID=`pg_id $POSTGRES_SUPERUSERNAME`if [ ${POSTGRES_SUPERUID:=-1} -eq -1 ]; then    echo "Unable to determine a valid username.  If you are running"    echo "initdb without an explicit username specified, then there"    echo "may be a problem with finding the Postgres shared library"    echo "and/or the pg_id utility."    exit 10fi

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -