Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
ac00256c
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ac00256c
编写于
12月 17, 1999
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
initdb.sh fix from Peter.
上级
83bad7c0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
311 addition
and
30 deletion
+311
-30
src/bin/initdb/initdb.sh
src/bin/initdb/initdb.sh
+311
-30
未找到文件。
src/bin/initdb/initdb.sh
浏览文件 @
ac00256c
...
...
@@ -26,7 +26,7 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.6
6 1999/12/17 01:05:30
momjian Exp $
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.6
7 1999/12/17 01:16:03
momjian Exp $
#
#-------------------------------------------------------------------------
...
...
@@ -152,40 +152,27 @@ do
exit
100
fi
;;
--help
)
usage
=
t
;;
-
\?
)
usage
=
t
;;
*
)
echo
"Unrecognized option '
$1
'. Try -? for help."
exit
100
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
shift
done
if
[
"
$usage
"
]
;
then
echo
""
echo
"Usage:
$CMDNAME
[options]"
echo
""
echo
" -t, --template "
echo
" -d, --debug "
echo
" -n, --noclean "
echo
" -u SUPERUSER, --username=SUPERUSER "
echo
" -r DATADIR, --pgdata=DATADIR "
echo
" -l LIBDIR, --pglib=LIBDIR "
if
[
-n
"
$MULTIBYTE
"
]
;
then
echo
" -e ENCODING, --pgencoding=ENCODING"
fi
echo
" -?, --help "
echo
""
exit
100
fi
#-------------------------------------------------------------------------
# Make sure he told us where to find the Postgres files.
#-------------------------------------------------------------------------
...
...
@@ -282,6 +269,300 @@ echo "We are initializing the database system with username" \
echo
"This user will own all the files and must also own the server process."
echo
# -----------------------------------------------------------------------
# Create the data directory if necessary
- 26,318
----
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.67 1999/12/17 01:16:03 momjian Exp $
#
#-------------------------------------------------------------------------
function
exit_nicely
()
{
echo
echo
"
$CMDNAME
failed."
if
[
$noclean
-eq
0
]
;
then
echo
"Removing
$PGDATA
."
rm
-rf
$PGDATA
||
echo
"Failed."
else
echo
"Data directory
$PGDATA
will not be removed at user's request."
fi
exit
1
}
CMDNAME
=
`
basename
$0
`
if
[
$EUID
-eq
0
]
;
then
echo
"You cannot run
$CMDNAME
as root. Please log in (using, e.g., 'su')"
echo
"as the (unprivileged) user that will own the server process."
exit
1
fi
EffectiveUser
=
`
id
-n
-u
2> /dev/null
`
||
EffectiveUser
=
`
whoami
2> /dev/null
`
TEMPFILE
=
"/tmp/initdb.
$$
"
#
# Find out where we're located
#
if
echo
"
$0
"
|
grep
-s
'/'
>
& /dev/null
;
then
# explicit dir name given
PGPATH
=
`
echo
$0
|
sed
's,/[^/]*$,,'
`
# (dirname command is not portable)
else
# look for it in PATH ('which' command is not portable)
for
dir
in
`
echo
$PATH
|
sed
's/:/ /g'
`
;
do
# empty entry in path means current dir
[
-z
"
$dir
"
]
&&
dir
=
'.'
if
[
-f
"
$dir
/
$CMDNAME
"
]
;
then
PGPATH
=
"
$dir
"
break
fi
done
fi
# Check if needed programs actually exist in path
for
prog
in
postgres pg_version
;
do
if
[
!
-x
"
$PGPATH
/
$prog
"
]
;
then
echo
"The program
$prog
needed by
$CMDNAME
could not be found. It was"
echo
"expected at:"
echo
"
$PGPATH
/
$prog
"
echo
"If this is not the correct directory, please start
$CMDNAME
"
echo
"with a full search path. Otherwise make sure that the program"
echo
"was installed successfully."
exit
1
fi
done
# 0 is the default (non-)encoding
MULTIBYTEID
=
0
# This is placed here by configure --with-mb=XXX.
MULTIBYTE
=
__MULTIBYTE__
# Set defaults:
debug
=
0
noclean
=
0
template_only
=
0
# Note: There is a single compelling reason that the name of the database
# superuser be the same as the Unix user owning the server process:
# The single user postgres backend will only connect as the database
# user with the same name as the Unix user running it. That's
# a security measure. It might change in the future (why?), but for
# now the --username option is only a fallback if both id and whoami
# fail, and in that case the argument _must_ be the name of the effective
# user.
POSTGRES_SUPERUSERNAME
=
$EffectiveUser
# Note: The sysid can be freely selected. This will probably confuse matters,
# but if your Unix user postgres is uid 48327 you might chose to start
# at 0 (or 1) in the database.
POSTGRES_SUPERUSERID
=
$EUID
Password
=
'_null_'
while
[
$#
-gt
0
]
do
case
"
$1
"
in
--help
|
-
\?
)
usage
=
t
break
;;
--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."
;;
# The database superuser. See comments above.
--username
|
-u
)
POSTGRES_SUPERUSERNAME
=
"
$2
"
shift
;;
--username
=
*
)
POSTGRES_SUPERUSERNAME
=
`
echo
$1
|
sed
's/^--username=//'
`
;;
-u
*
)
POSTGRES_SUPERUSERNAME
=
`
echo
$1
|
sed
's/^-u//'
`
;;
# The sysid of the database superuser. See comments above.
--sysid
|
-i
)
POSTGRES_SUPERUSERID
=
"
$2
"
shift
;;
--sysid
=
*
)
POSTGRES_SUPERUSERID
=
`
echo
$1
|
sed
's/^--sysid=//'
`
;;
-i
*
)
POSTGRES_SUPERUSERID
=
`
echo
$1
|
sed
's/^-i//'
`
;;
# The default password of the database superuser.
--password
|
-W
)
Password
=
"
$2
"
shift
;;
--password
=
*
)
Password
=
`
echo
$1
|
sed
's/^--password=//'
`
;;
-W
*
)
Password
=
`
echo
$1
|
sed
's/^-W//'
`
;;
# Directory where to install the data. No default, unless the environment
# variable PGDATA is set.
--pgdata
|
-D
)
PGDATA
=
"
$2
"
shift
;;
--pgdata
=
*
)
PGDATA
=
`
echo
$1
|
sed
's/^--pgdata=//'
`
;;
-D
*
)
PGDATA
=
`
echo
$1
|
sed
's/^-D//'
`
;;
# The directory where the database templates are stored (traditionally in
# $prefix/lib). This is now autodetected for the most common layouts.
--pglib
|
-L
)
PGLIB
=
"
$2
"
shift
;;
--pglib
=
*
)
PGLIB
=
`
echo
$1
|
sed
's/^--pglib=//'
`
;;
-L
*
)
PGLIB
=
`
echo
$1
|
sed
's/^-L//'
`
;;
# The encoding of the template1 database. Defaults to what you chose
# at configure time. (see above)
--pgencoding
|
-e
)
MULTIBYTE
=
"
$2
"
shift
;;
--pgencoding
=
*
)
MULTIBYTE
=
`
echo
$1
|
sed
's/^--pgencoding=//'
`
;;
-e
*
)
MULTIBYTE
=
`
echo
$1
|
sed
's/^-e//'
`
;;
*
)
echo
"Unrecognized option '
$1
'. Try -? for help."
exit
1
;;
esac
shift
done
if
[
"
$usage
"
]
;
then
echo
"
$CMDNAME
[-t|--template] [-d|--debug] [-n|--noclean]
\\
"
echo
" [-u|--username SUPERUSER] [-D|--pgdata DATADIR]
\\
"
echo
" [-L|--pglib=LIBDIR] [-e|--pgencoding=ENCODING]"
exit
0
fi
#-------------------------------------------------------------------------
# Resolve the multibyte encoding name
#-------------------------------------------------------------------------
if
[
"
$MULTIBYTE
"
]
;
then
MULTIBYTEID
=
`
$PGPATH
/pg_encoding
$MULTIBYTE
`
if
[
$?
-ne
0
]
;
then
echo
"The program pg_encoding failed. Perhaps you did not configure"
echo
"PostgreSQL for multibyte support or the program was not success-"
echo
"fully installed."
exit
1
fi
if
[
-z
"
$MULTIBYTEID
"
]
;
then
echo
"
$CMDNAME
:
$MULTIBYTE
is not a valid encoding name."
exit
1
fi
fi
#-------------------------------------------------------------------------
# Make sure he told us where to build the database system
#-------------------------------------------------------------------------
if
[
-z
"
$PGDATA
"
]
;
then
echo
"
$CMDNAME
: You must identify where the the data for this database"
echo
"system will reside. Do this with either a --pgdata invocation"
echo
"option or a PGDATA environment variable."
echo
exit
1
fi
# The data path must be absolute, because the backend doesn't like
# '.' and '..' stuff. (Should perhaps be fixed there.)
if
!
echo
$PGDATA
|
grep
-s
'^/'
>
& /dev/null
;
then
echo
"
$CMDNAME
: The data path must be specified as an absolute path."
exit
1
fi
#---------------------------------------------------------------------------
# Figure out who the Postgres superuser for the new database system will be.
#---------------------------------------------------------------------------
# This means they have neither 'id' nor 'whoami'!
if
[
-z
"
$POSTGRES_SUPERUSERNAME
"
]
;
then
echo
"
$CMDNAME
: Could not determine what the name of the database"
echo
"superuser should be. Please use the --username option."
exit
1
fi
echo
"This database system will be initialized with username
\"
$POSTGRES_SUPERUSERNAME
\"
."
echo
"This user will own all the data files and must also own the server process."
echo
#-------------------------------------------------------------------------
# Find the input files
#-------------------------------------------------------------------------
if
[
-z
"
$PGLIB
"
]
;
then
for
dir
in
"
$PGPATH
/../lib"
"
$PGPATH
/../lib/pgsql"
;
do
if
[
-f
"
$dir
/global1.bki.source"
]
;
then
PGLIB
=
$dir
break
fi
done
fi
if
[
-z
"
$PGLIB
"
]
;
then
echo
"
$CMDNAME
: Could not find the
\"
lib
\"
directory, that contains"
echo
"the files needed by initdb. Please specify it with the"
echo
"--pglib option."
exit
1
fi
TEMPLATE
=
$PGLIB
/local1_template1.bki.source
GLOBAL
=
$PGLIB
/global1.bki.source
PG_HBA_SAMPLE
=
$PGLIB
/pg_hba.conf.sample
TEMPLATE_DESCR
=
$PGLIB
/local1_template1.description
GLOBAL_DESCR
=
$PGLIB
/global1.description
PG_GEQO_SAMPLE
=
$PGLIB
/pg_geqo.sample
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 a corrupted installation or identified the"
echo
"wrong directory with the --pglib invocation option."
exit
1
fi
done
[
"
$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 default authentication control file."
fi
trap
'echo "Caught signal." ; exit_nicely'
SIGINT SIGTERM
# -----------------------------------------------------------------------
# Create the data directory if necessary
# -----------------------------------------------------------------------
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录