mirror of https://github.com/postgres/postgres
Add docs for initdb --auth.
This commit is contained in:
parent
e7029b2127
commit
ca9540d34f
|
@ -12063,11 +12063,6 @@ LIBOBJS="$LIBOBJS open.$ac_objext"
|
|||
LIBOBJS="$LIBOBJS rand.$ac_objext" ;;
|
||||
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
|
||||
echo "$as_me:$LINENO: checking for rl_completion_append_character" >&5
|
||||
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 $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 Developers, please strive to achieve this order:
|
||||
dnl
|
||||
|
@ -911,11 +911,6 @@ AC_LIBOBJ(open)
|
|||
AC_LIBOBJ(rand) ;;
|
||||
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
|
||||
PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER
|
||||
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
|
||||
-->
|
||||
|
||||
|
@ -98,6 +98,19 @@ PostgreSQL documentation
|
|||
|
||||
<para>
|
||||
<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>
|
||||
<term><option>-D <replaceable class="parameter">directory</replaceable></option></term>
|
||||
<term><option>--pgdata=<replaceable class="parameter">directory</replaceable></option></term>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# -*-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,
|
||||
|
@ -347,7 +347,7 @@ endif
|
|||
#
|
||||
# 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))
|
||||
LIBS := -lpgport $(LIBS)
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
*
|
||||
*
|
||||
* 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;
|
||||
HeapScanDesc scan;
|
||||
HeapTuple tuple;
|
||||
char buf[MAXPGPATH + 100];
|
||||
|
||||
rel = heap_openr(TableSpaceRelationName, AccessShareLock);
|
||||
scan = heap_beginscan(rel, SnapshotNow, 0, NULL);
|
||||
|
@ -938,17 +937,11 @@ remove_dbtablespaces(Oid db_id)
|
|||
continue;
|
||||
}
|
||||
|
||||
#ifndef WIN32
|
||||
snprintf(buf, sizeof(buf), "rm -rf '%s'", dstpath);
|
||||
#else
|
||||
snprintf(buf, sizeof(buf), "rmdir /s /q \"%s\"", dstpath);
|
||||
#endif
|
||||
if (system(buf) != 0)
|
||||
if (!rmtree(dstpath, true))
|
||||
{
|
||||
ereport(WARNING,
|
||||
(errmsg("could not remove database directory \"%s\"",
|
||||
dstpath),
|
||||
errdetail("Failing system command was: %s", buf),
|
||||
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) 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)
|
||||
|
||||
OBJS= initdb.o exec.o
|
||||
OBJS= initdb.o dirmod.o exec.o
|
||||
|
||||
all: submake-libpq submake-libpgport initdb
|
||||
|
||||
initdb: $(OBJS) $(libpq_builddir)/libpq.a
|
||||
$(CC) $(CFLAGS) $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
|
||||
|
||||
dirmod.c: % : $(top_srcdir)/src/port/%
|
||||
rm -f $@ && $(LN_S) $< .
|
||||
|
||||
exec.c: % : $(top_srcdir)/src/port/%
|
||||
rm -f $@ && $(LN_S) $< .
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
* 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 char *xstrdup(const char *s);
|
||||
static bool rmtree(char *path, bool rmtopdir);
|
||||
static char **replace_token(char **lines, char *token, char *replacement);
|
||||
static char **readfile(char *path);
|
||||
static void writefile(char *path, char **lines);
|
||||
|
@ -251,30 +250,6 @@ xstrdup(const char *s)
|
|||
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
|
||||
* the first time it occurs on each line.
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
|
||||
* 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)
|
||||
#endif
|
||||
|
||||
extern bool rmtree(char *path, bool rmtopdir);
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
/* open() replacement to allow delete of held files */
|
||||
|
|
|
@ -10,21 +10,28 @@
|
|||
* Win32 (NT, Win2k, XP). replace() doesn't work on Win95/98/Me.
|
||||
*
|
||||
* 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
|
||||
#include "postgres.h"
|
||||
#else
|
||||
#include "postgres_fe.h"
|
||||
#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"
|
||||
|
||||
#undef rename
|
||||
|
@ -82,7 +89,7 @@ pgunlink(const char *path)
|
|||
if (errno != EACCES)
|
||||
/* set errno? */
|
||||
return -1;
|
||||
pg_usleep(100000); /* us */
|
||||
pg_usleep(100000); /* us */
|
||||
if (loops == 30)
|
||||
#ifndef FRONTEND
|
||||
elog(LOG, "could not unlink \"%s\", continuing to try",
|
||||
|
@ -105,6 +112,165 @@ pgunlink(const char *path)
|
|||
|
||||
#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
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue