
Check the server's log file, or start it by hand (without redirecting standard output or standard error) and see what error messages appear. There are several common reasons the server might fail to start. This is used to prevent multiple server instances from running in the same data directory and can also be used for shutting down the server. While the server is running, its PID is stored in the file postmaster.pid in the data directory. Then, create a symbolic link to it in /etc/rc3.d as S99postgresql. Su - postgres -c "/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data" On Solaris, create a file called /etc/init.d/postgresql that contains the following line: On NetBSD, use either the FreeBSD or Linux start scripts, depending on preference. The suggested value of infinity disables the timeout logic. But a PostgreSQL server that might have to perform crash recovery at startup could take much longer to become ready. systemd has a default timeout of 90 seconds as of this writing and will kill a process that does not report readiness within that time. Using Type=notify requires that the server binary was built with configure -with-systemd.Ĭonsider carefully the timeout setting. When using systemd, you can use the following service unit file (e.g., at /etc/systemd/system/rvice):ĮxecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data To /etc/rc.d/rc.local or /etc/rc.local or look at the file contrib/start-scripts/linux in the PostgreSQL source distribution. usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data Su -l postgres -c '/usr/local/pgsql/bin/pg_ctl start -s -l /var/postgresql/log -D /usr/local/pgsql/data' On OpenBSD, add the following lines to the file /etc/rc.local: (In each case be sure to use the proper installation directory and user name where we show generic values.)įor FreeBSD, look at the file contrib/start-scripts/freebsd in the PostgreSQL source distribution. Here are a few more operating-system-specific suggestions. Su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' Therefore you probably should form your commands using su postgres -c '.'. Whatever you do, the server must be run by the PostgreSQL user account and not by root or any other user. Many systems have a file /etc/rc.local or /etc/rc.d/rc.local. Installing one will require root privileges.ĭifferent systems have different conventions for starting up daemons at boot time. There are a few example scripts distributed with PostgreSQL in the contrib/start-scripts directory.

Autostart scripts are operating-system-specific. Normally, you will want to start the database server when the computer boots. pg_ctl is also capable of stopping the server. The -D option has the same meaning here as for postgres. Will start the server in the background and put the output into the named log file. Therefore the wrapper program pg_ctl is provided to simplify some tasks. This shell syntax can get tedious quickly. For more information, see the postgres reference page and Chapter 20 below. The postgres program also takes a number of other command-line options. (See Section 25.3 for a more thorough discussion of log file handling.) It will help for auditing purposes and to diagnose problems. It is important to store the server's stdout and stderr output somewhere, as shown above. $ postgres -D /usr/local/pgsql/data >logfile 2>&1 & For this, use the usual Unix shell syntax:

Normally it is better to start postgres in the background. If that variable is not provided either, it will fail. Without -D, the server will try to use the data directory named by the environment variable PGDATA. This must be done while logged into the PostgreSQL user account. Which will leave the server running in the foreground.

The bare-bones way to start the server manually is just to invoke postgres directly, specifying the location of the data directory with the -D option, for example: Consult the package-level documentation for details.
#Connect postgres app with anaconda postgres sql how to
Using the package's infrastructure to start the server will be much less work than figuring out how to do this yourself.

If you are using a pre-packaged version of PostgreSQL, it almost certainly includes provisions for running the server as a background task according to the conventions of your operating system. The database server program is called postgres. Client Connection Problemsīefore anyone can access the database, you must start the database server.
