![]() If you do not trust other local users, we recommend you use one of initdb's -W, -pwprompt or -pwfile options to assign a password to the database superuser. However, while the directory contents are secure, the default client authentication setup allows any local user to connect to the database and even become the database superuser. For clusters that also allow reads by the group, the appropriate modes are 0750 for directories and 0640 for files. For clusters that allow access only by the owner, the appropriate modes are 0700 for directories and 0600 for files. Otherwise, a mix of modes might exist in the data directory. Note that enabling or disabling group access on an existing cluster requires the cluster to be shut down and the appropriate mode to be set on all directories and files before restarting PostgreSQL. This allows an unprivileged user in the same group as the cluster owner to take a backup of the cluster data or perform other operations that only require read access. Group access, when enabled, is read-only. initdb therefore revokes access permissions from everyone but the PostgreSQL user, and optionally, group. Initdb will refuse to run if the data directory exists and already contains files this is to prevent accidentally overwriting an existing installation.īecause the data directory contains all the data stored in the database, it is essential that it be secured from unauthorized access. Postgres$ initdb -D /usr/local/pgsql/data If the desired parent directory doesn't exist either, you will need to create it first, using root privileges if the grandparent directory isn't writable. It's generally recommendable that the PostgreSQL user own not just the data directory but its parent directory as well, so that this should not be a problem. Of course, this will fail if initdb does not have permissions to write in the parent directory. Initdb will attempt to create the directory you specify if it does not already exist. This may be more intuitive if you are using pg_ctl for starting and stopping the server (see Section 19.3), so that pg_ctl would be the sole command you use for managing the database server instance. ![]() Note that you must execute this command while logged into the PostgreSQL user account, which is described in the previous section.Īs an alternative to the -D option, you can set the environment variable PGDATA.Īlternatively, you can run initdb via the pg_ctl program like so: $ pg_ctl -D /usr/local/pgsql/data initdb To initialize a database cluster manually, run initdb and specify the desired file system location of the database cluster with the -D option, for example: $ initdb -D /usr/local/pgsql/data Consult the package-level documentation for details. In that case you should use that script in preference to running initdb directly. If you are using a pre-packaged version of PostgreSQL, it may well have a specific convention for where to place the data directory, and it may also provide a script for creating the data directory. The data directory must be initialized before being used, using the program initdb which is installed with PostgreSQL. There is no default, although locations such as /usr/local/pgsql/data or /var/lib/pgsql/data are popular. It is completely up to you where you choose to store your data. We call this the data directory or data area. In file system terms, a database cluster is a single directory under which all data will be stored. (See Chapter 23 for information about creating new databases within a cluster.) As the names suggest, these will be used as templates for subsequently-created databases they should not be used for actual work. There are two more databases created within each cluster during initialization, named template1 and template0. ![]() The database server itself does not require the postgres database to exist, but many external utility programs assume it exists. After initialization, a database cluster will contain a database named postgres, which is meant as a default database for use by utilities, users and third party applications. (The SQL standard uses the term catalog cluster.) A database cluster is a collection of databases that is managed by a single instance of a running database server. File Systemsīefore you can do anything, you must initialize a database storage area on disk.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |