Add docs for initdb --auth.
This commit is contained in:
parent
e7029b2127
commit
ca9540d34f
5
configure
vendored
5
configure
vendored
@ -12063,11 +12063,6 @@ LIBOBJS="$LIBOBJS open.$ac_objext"
|
|||||||
LIBOBJS="$LIBOBJS rand.$ac_objext" ;;
|
LIBOBJS="$LIBOBJS rand.$ac_objext" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Win32 can't do rename or unlink on an open file
|
|
||||||
case $host_os in mingw*|cygwin*)
|
|
||||||
LIBOBJS="$LIBOBJS dirmod.$ac_objext" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if test "$with_readline" = yes; then
|
if test "$with_readline" = yes; then
|
||||||
echo "$as_me:$LINENO: checking for rl_completion_append_character" >&5
|
echo "$as_me:$LINENO: checking for rl_completion_append_character" >&5
|
||||||
echo $ECHO_N "checking for rl_completion_append_character... $ECHO_C" >&6
|
echo $ECHO_N "checking for rl_completion_append_character... $ECHO_C" >&6
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
dnl Process this file with autoconf to produce a configure script.
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
dnl $PostgreSQL: pgsql/configure.in,v 1.369 2004/07/20 20:37:13 momjian Exp $
|
dnl $PostgreSQL: pgsql/configure.in,v 1.370 2004/08/01 06:19:16 momjian Exp $
|
||||||
dnl
|
dnl
|
||||||
dnl Developers, please strive to achieve this order:
|
dnl Developers, please strive to achieve this order:
|
||||||
dnl
|
dnl
|
||||||
@ -911,11 +911,6 @@ AC_LIBOBJ(open)
|
|||||||
AC_LIBOBJ(rand) ;;
|
AC_LIBOBJ(rand) ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Win32 can't do rename or unlink on an open file
|
|
||||||
case $host_os in mingw*|cygwin*)
|
|
||||||
AC_LIBOBJ(dirmod) ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if test "$with_readline" = yes; then
|
if test "$with_readline" = yes; then
|
||||||
PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER
|
PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER
|
||||||
AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function])
|
AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function])
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/initdb.sgml,v 1.31 2004/07/14 17:55:09 petere Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/initdb.sgml,v 1.32 2004/08/01 06:19:18 momjian Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -98,6 +98,19 @@ PostgreSQL documentation
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
<variablelist>
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-A <replaceable class="parameter">authmethod</replaceable></option></term>
|
||||||
|
<term><option>--auth=<replaceable class="parameter">authmethod</replaceable></option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
This option specifies the authentication method for local users
|
||||||
|
used in <filename>pg_hba.conf</>. Do not use <literal>trust</>
|
||||||
|
unless you trust all local users on your system. <literal>Trust</>
|
||||||
|
is the default for ease of installation.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>-D <replaceable class="parameter">directory</replaceable></option></term>
|
<term><option>-D <replaceable class="parameter">directory</replaceable></option></term>
|
||||||
<term><option>--pgdata=<replaceable class="parameter">directory</replaceable></option></term>
|
<term><option>--pgdata=<replaceable class="parameter">directory</replaceable></option></term>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# -*-makefile-*-
|
# -*-makefile-*-
|
||||||
# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.190 2004/07/30 12:26:40 petere Exp $
|
# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.191 2004/08/01 06:19:19 momjian Exp $
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# All PostgreSQL makefiles include this file and use the variables it sets,
|
# All PostgreSQL makefiles include this file and use the variables it sets,
|
||||||
@ -347,7 +347,7 @@ endif
|
|||||||
#
|
#
|
||||||
# substitute implementations of the C library
|
# substitute implementations of the C library
|
||||||
|
|
||||||
LIBOBJS = @LIBOBJS@ exec.o noblock.o path.o pipe.o pgsleep.o pgstrcasecmp.o sprompt.o thread.o
|
LIBOBJS = @LIBOBJS@ dirmod.o exec.o noblock.o path.o pipe.o pgsleep.o pgstrcasecmp.o sprompt.o thread.o
|
||||||
|
|
||||||
ifneq (,$(LIBOBJS))
|
ifneq (,$(LIBOBJS))
|
||||||
LIBS := -lpgport $(LIBS)
|
LIBS := -lpgport $(LIBS)
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.137 2004/06/25 21:55:53 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.138 2004/08/01 06:19:22 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -915,7 +915,6 @@ remove_dbtablespaces(Oid db_id)
|
|||||||
Relation rel;
|
Relation rel;
|
||||||
HeapScanDesc scan;
|
HeapScanDesc scan;
|
||||||
HeapTuple tuple;
|
HeapTuple tuple;
|
||||||
char buf[MAXPGPATH + 100];
|
|
||||||
|
|
||||||
rel = heap_openr(TableSpaceRelationName, AccessShareLock);
|
rel = heap_openr(TableSpaceRelationName, AccessShareLock);
|
||||||
scan = heap_beginscan(rel, SnapshotNow, 0, NULL);
|
scan = heap_beginscan(rel, SnapshotNow, 0, NULL);
|
||||||
@ -938,17 +937,11 @@ remove_dbtablespaces(Oid db_id)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef WIN32
|
if (!rmtree(dstpath, true))
|
||||||
snprintf(buf, sizeof(buf), "rm -rf '%s'", dstpath);
|
|
||||||
#else
|
|
||||||
snprintf(buf, sizeof(buf), "rmdir /s /q \"%s\"", dstpath);
|
|
||||||
#endif
|
|
||||||
if (system(buf) != 0)
|
|
||||||
{
|
{
|
||||||
ereport(WARNING,
|
ereport(WARNING,
|
||||||
(errmsg("could not remove database directory \"%s\"",
|
(errmsg("could not remove database directory \"%s\"",
|
||||||
dstpath),
|
dstpath),
|
||||||
errdetail("Failing system command was: %s", buf),
|
|
||||||
errhint("Look in the postmaster's stderr log for more information.")));
|
errhint("Look in the postmaster's stderr log for more information.")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
# Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
|
# Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
|
||||||
# Portions Copyright (c) 1994, Regents of the University of California
|
# Portions Copyright (c) 1994, Regents of the University of California
|
||||||
#
|
#
|
||||||
# $PostgreSQL: pgsql/src/bin/initdb/Makefile,v 1.41 2004/05/24 01:01:37 momjian Exp $
|
# $PostgreSQL: pgsql/src/bin/initdb/Makefile,v 1.42 2004/08/01 06:19:23 momjian Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -15,13 +15,16 @@ include $(top_builddir)/src/Makefile.global
|
|||||||
|
|
||||||
override CPPFLAGS := -DFRONTEND -I$(libpq_srcdir) $(CPPFLAGS)
|
override CPPFLAGS := -DFRONTEND -I$(libpq_srcdir) $(CPPFLAGS)
|
||||||
|
|
||||||
OBJS= initdb.o exec.o
|
OBJS= initdb.o dirmod.o exec.o
|
||||||
|
|
||||||
all: submake-libpq submake-libpgport initdb
|
all: submake-libpq submake-libpgport initdb
|
||||||
|
|
||||||
initdb: $(OBJS) $(libpq_builddir)/libpq.a
|
initdb: $(OBJS) $(libpq_builddir)/libpq.a
|
||||||
$(CC) $(CFLAGS) $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
|
$(CC) $(CFLAGS) $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
|
||||||
|
|
||||||
|
dirmod.c: % : $(top_srcdir)/src/port/%
|
||||||
|
rm -f $@ && $(LN_S) $< .
|
||||||
|
|
||||||
exec.c: % : $(top_srcdir)/src/port/%
|
exec.c: % : $(top_srcdir)/src/port/%
|
||||||
rm -f $@ && $(LN_S) $< .
|
rm -f $@ && $(LN_S) $< .
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
* Portions taken from FreeBSD.
|
* Portions taken from FreeBSD.
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.45 2004/08/01 05:59:13 momjian Exp $
|
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.46 2004/08/01 06:19:23 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -146,7 +146,6 @@ char backend_exec[MAXPGPATH];
|
|||||||
|
|
||||||
static void *xmalloc(size_t size);
|
static void *xmalloc(size_t size);
|
||||||
static char *xstrdup(const char *s);
|
static char *xstrdup(const char *s);
|
||||||
static bool rmtree(char *path, bool rmtopdir);
|
|
||||||
static char **replace_token(char **lines, char *token, char *replacement);
|
static char **replace_token(char **lines, char *token, char *replacement);
|
||||||
static char **readfile(char *path);
|
static char **readfile(char *path);
|
||||||
static void writefile(char *path, char **lines);
|
static void writefile(char *path, char **lines);
|
||||||
@ -251,30 +250,6 @@ xstrdup(const char *s)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* delete a directory tree recursively
|
|
||||||
* assumes path points to a valid directory
|
|
||||||
* deletes everything under path
|
|
||||||
* if rmtopdir is true deletes the directory too
|
|
||||||
*/
|
|
||||||
static bool
|
|
||||||
rmtree(char *path, bool rmtopdir)
|
|
||||||
{
|
|
||||||
char buf[MAXPGPATH + 64];
|
|
||||||
|
|
||||||
#ifndef WIN32
|
|
||||||
/* doesn't handle .* files, but we don't make any... */
|
|
||||||
snprintf(buf, sizeof(buf), "rm -rf \"%s\"%s", path,
|
|
||||||
rmtopdir ? "" : "/*");
|
|
||||||
#else
|
|
||||||
snprintf(buf, sizeof(buf), "%s /s /q \"%s\"",
|
|
||||||
rmtopdir ? "rmdir" : "del", path);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return !system(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* make a copy of the array of lines, with token replaced by replacement
|
* make a copy of the array of lines, with token replaced by replacement
|
||||||
* the first time it occurs on each line.
|
* the first time it occurs on each line.
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/port.h,v 1.45 2004/07/23 01:58:36 momjian Exp $
|
* $PostgreSQL: pgsql/src/include/port.h,v 1.46 2004/08/01 06:19:24 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -148,6 +148,8 @@ extern int pgunlink(const char *path);
|
|||||||
#define unlink(path) pgunlink(path)
|
#define unlink(path) pgunlink(path)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern bool rmtree(char *path, bool rmtopdir);
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|
||||||
/* open() replacement to allow delete of held files */
|
/* open() replacement to allow delete of held files */
|
||||||
|
@ -10,21 +10,28 @@
|
|||||||
* Win32 (NT, Win2k, XP). replace() doesn't work on Win95/98/Me.
|
* Win32 (NT, Win2k, XP). replace() doesn't work on Win95/98/Me.
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/port/dirmod.c,v 1.12 2004/02/26 02:59:26 momjian Exp $
|
* $PostgreSQL: pgsql/src/port/dirmod.c,v 1.13 2004/08/01 06:19:26 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef TEST_VERSION
|
|
||||||
|
|
||||||
#if defined(WIN32) || defined(__CYGWIN__)
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef FRONTEND
|
#ifndef FRONTEND
|
||||||
#include "postgres.h"
|
#include "postgres.h"
|
||||||
#else
|
#else
|
||||||
#include "postgres_fe.h"
|
#include "postgres_fe.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
#define _(x) gettext((x))
|
||||||
|
|
||||||
|
#ifndef TEST_VERSION
|
||||||
|
|
||||||
|
#if defined(WIN32) || defined(__CYGWIN__)
|
||||||
|
|
||||||
|
|
||||||
#include "miscadmin.h"
|
#include "miscadmin.h"
|
||||||
|
|
||||||
#undef rename
|
#undef rename
|
||||||
@ -82,7 +89,7 @@ pgunlink(const char *path)
|
|||||||
if (errno != EACCES)
|
if (errno != EACCES)
|
||||||
/* set errno? */
|
/* set errno? */
|
||||||
return -1;
|
return -1;
|
||||||
pg_usleep(100000); /* us */
|
pg_usleep(100000); /* us */
|
||||||
if (loops == 30)
|
if (loops == 30)
|
||||||
#ifndef FRONTEND
|
#ifndef FRONTEND
|
||||||
elog(LOG, "could not unlink \"%s\", continuing to try",
|
elog(LOG, "could not unlink \"%s\", continuing to try",
|
||||||
@ -105,6 +112,165 @@ pgunlink(const char *path)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(WIN32) || defined(__CYGWIN__)
|
||||||
|
#define rmt_unlink(path) pgunlink(path)
|
||||||
|
#else
|
||||||
|
#define rmt_unlink(path) unlink(path)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FRONTEND
|
||||||
|
|
||||||
|
static void *
|
||||||
|
xmalloc(size_t size)
|
||||||
|
{
|
||||||
|
void *result;
|
||||||
|
|
||||||
|
result = malloc(size);
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
fprintf(stderr, _("out of memory\n"));
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
xstrdup(const char *s)
|
||||||
|
{
|
||||||
|
char *result;
|
||||||
|
|
||||||
|
result = strdup(s);
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
fprintf(stderr, _("out of memory\n"));
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define xfree(n) free(n)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/* on the backend, use palloc and friends */
|
||||||
|
|
||||||
|
#define xmalloc(n) palloc(n)
|
||||||
|
#define xstrdup(n) pstrdup(n)
|
||||||
|
#define xfree(n) pfree(n)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* deallocate memory used for filenames
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void
|
||||||
|
rmt_cleanup(char ** filenames)
|
||||||
|
{
|
||||||
|
char ** fn;
|
||||||
|
|
||||||
|
for (fn = filenames; *fn; fn++)
|
||||||
|
xfree(*fn);
|
||||||
|
|
||||||
|
xfree(filenames);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* delete a directory tree recursively
|
||||||
|
* assumes path points to a valid directory
|
||||||
|
* deletes everything under path
|
||||||
|
* if rmtopdir is true deletes the directory too
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool
|
||||||
|
rmtree(char *path, bool rmtopdir)
|
||||||
|
{
|
||||||
|
char filepath[MAXPGPATH];
|
||||||
|
DIR *dir;
|
||||||
|
struct dirent *file;
|
||||||
|
char **filenames;
|
||||||
|
char **filename;
|
||||||
|
int numnames = 0;
|
||||||
|
struct stat statbuf;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* we copy all the names out of the directory before we start
|
||||||
|
* modifying it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
dir = opendir(path);
|
||||||
|
if (dir == NULL)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
while ((file = readdir(dir)) != NULL)
|
||||||
|
{
|
||||||
|
if (strcmp(file->d_name, ".") != 0 && strcmp(file->d_name, "..") != 0)
|
||||||
|
numnames++;
|
||||||
|
}
|
||||||
|
|
||||||
|
rewinddir(dir);
|
||||||
|
|
||||||
|
filenames = xmalloc((numnames + 2) * sizeof(char *));
|
||||||
|
numnames = 0;
|
||||||
|
|
||||||
|
while ((file = readdir(dir)) != NULL)
|
||||||
|
{
|
||||||
|
if (strcmp(file->d_name, ".") != 0 && strcmp(file->d_name, "..") != 0)
|
||||||
|
filenames[numnames++] = xstrdup(file->d_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
filenames[numnames] = NULL;
|
||||||
|
|
||||||
|
closedir(dir);
|
||||||
|
|
||||||
|
/* now we have the names we can start removing things */
|
||||||
|
|
||||||
|
for (filename = filenames; *filename; filename++)
|
||||||
|
{
|
||||||
|
snprintf(filepath, MAXPGPATH, "%s/%s", path, *filename);
|
||||||
|
|
||||||
|
if (stat(filepath, &statbuf) != 0)
|
||||||
|
{
|
||||||
|
rmt_cleanup(filenames);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (S_ISDIR(statbuf.st_mode))
|
||||||
|
{
|
||||||
|
/* call ourselves recursively for a directory */
|
||||||
|
if (!rmtree(filepath, true))
|
||||||
|
{
|
||||||
|
rmt_cleanup(filenames);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (rmt_unlink(filepath) != 0)
|
||||||
|
{
|
||||||
|
rmt_cleanup(filenames);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rmtopdir)
|
||||||
|
{
|
||||||
|
if (rmdir(path) != 0)
|
||||||
|
{
|
||||||
|
rmt_cleanup(filenames);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rmt_cleanup(filenames);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user