HOWTO · PostgreSQL

Inicie el servidor PostgreSQL en Windows

Este artículo enseña cómo iniciar un servidor PostgreSQL en Windows.

En esta página

Hoy aprenderemos cómo iniciar un servidor PostgreSQL en Windows. En el artículo anterior sobre cómo descargar e instalar PostgreSQL en Windows, ya aprendimos cómo iniciar una sesión, crear un USER, emitir consultas y trabajar con diferentes objetos de la base de datos.

Nuestro tema ahora se centra en intentar ejecutar una sesión del servidor PostgreSQL a la que otros usuarios de un sistema local puedan conectarse.

Comandos básicos de inicialización de PG_CTL en Windows

pg_ctl es la utilidad de línea de comandos que se usa para inicializar, iniciar, detener y reiniciar un servidor PostgreSQL. Le brinda control directo sobre una instancia del servidor: usted lo apunta a una carpeta de datos, y él inicia o detiene el servidor que usa esa carpeta.

Para iniciar un servidor en Windows, abra un símbolo del sistema y ejecute pg_ctl desde la carpeta bin de su instalación de PostgreSQL (o desde cualquier lugar, si esa carpeta está en su PATH), apuntando -D a la carpeta de datos:

pg_ctl start -D "C:\Program Files\PostgreSQL\14\data"

Esto iniciará su servidor PostgreSQL en el puerto predeterminado, 5432. Para ejecutarlo en un puerto diferente de su computadora, en el que desee que otros usuarios escuchen, pase el puerto al servidor mediante la opción -o:

pg_ctl -o "-p 5656" start -D "C:\Program Files\PostgreSQL\14\data"

Reemplace 5656 por el número de puerto que desee, sin corchetes. Esto ayudará a iniciar su servidor y permitirá que otros usuarios se conecten a él en diferentes sistemas. Sin embargo, si su servidor PostgreSQL se detuvo por algún motivo, es mejor que use el comando restart, que detiene el servidor si está en ejecución y luego lo inicia de nuevo:

pg_ctl restart -D "C:\Program Files\PostgreSQL\14\data"

Muchas veces, no habrá necesidad de hacer nada de esto. El instalador estándar de PostgreSQL para Windows registra el servidor como un servicio de Windows que se inicia automáticamente cuando la PC arranca, por lo que normalmente ya hay un servidor en ejecución. pgAdmin y psql son clientes: se conectan a un servidor en ejecución; no inician ninguno.

Especificar rutas al emitir PG_CTL START/RESTART en Windows

A veces, llamar a un simple pg_ctl start/restart no es el camino a seguir. Es posible que necesite especificar la ruta de la carpeta DATA dentro de su instalación de PostgreSQL con -D y luego emitir los comandos de arranque, como en los ejemplos anteriores.

Si un servidor ya está en ejecución en la misma carpeta de datos, un segundo intento de inicio producirá una salida como esta:

Salida:

pg_ctl: another server might be running; trying to start server anyway
waiting for server to start....2022-04-28 19:28:38.766 PKT [3228] LOG:  redirecting log output to logging collector process
2022-04-28 19:28:38.766 PKT [3228] HINT:  Future log output will appear in directory "log".
 stopped waiting
pg_ctl: could not start server
Examine the log output.

La salida anterior ocurre cuando un servidor PostgreSQL ya está en ejecución. Como el servicio iniciado en el arranque ya estaba activo en segundo plano, llamar al comando anterior no pudo inicializar un segundo servidor en la misma carpeta de datos. Sin embargo, hacer lo siguiente ejecutaría un servidor separado en la misma PC: necesita una carpeta de datos propia (una carpeta de datos solo puede ser utilizada por un servidor en ejecución a la vez), inicializada una vez con initdb, y un puerto diferente:

pg_ctl -o "-p 5656" start -D "C:\Program Files\PostgreSQL\14\data2"

Salida:

waiting for server to start....2022-04-28 19:34:04.588 PKT [11784] LOG:  redirecting log output to logging collector process
2022-04-28 19:34:04.588 PKT [11784] HINT:  Future log output will appear in directory "log".
 done
server started

Del mismo modo, también podría emitir los mismos comandos para RESTART.

pg_ctl restart -D "C:\Program Files\PostgreSQL\14\data"

or

pg_ctl -o "-p 5656" restart -D "C:\Program Files\PostgreSQL\14\data"

Salida:

waiting for server to shut down.... done
server stopped
waiting for server to start....2022-04-28 19:35:46.007 PKT [884] LOG:  redirecting log output to logging collector process
2022-04-28 19:35:46.007 PKT [884] HINT:  Future log output will appear in directory "log".
 done
server started

Puede ver en la salida cómo el servidor primero se apaga porque ya está en ejecución, luego se reinicia y se registra para cualquier cambio durante su sesión.

Usar SERVICES.MSC para INICIAR/DETENER una sesión de PostgreSQL en Windows

Como el instalador registra PostgreSQL como un servicio de Windows, podemos controlarlo en SERVICES.MSC, el Administrador de servicios de Windows. Para servicios STOPPED o PAUSED, esta suele ser la ruta más sencilla.

  1. Presione Windows+R y escriba SERVICES.MSC.

  2. Una vez que se haya abierto el Administrador de servicios de Windows, busque el servicio del servidor PostgreSQL en la lista. Puede llamarse como sigue: postgresql-x64-14 - PostgreSQL Server 14.

    Windows Services Manager

  3. Haga clic con el botón derecho sobre él para INICIAR, DETENER, PAUSAR, REANUDAR o REINICIAR su servidor. Incluso puede cambiar el tipo de inicio a AUTOMATIC para que se inicie solo la próxima vez.

El Administrador de servicios también suele indicarnos la causa del fallo de un servicio específico. Para ver la ruta del ejecutable, puede abrir la pestaña General y verla de la siguiente manera.

General tab

Iniciar el servidor PostgreSQL desde el COMMAND PROMPT usando NET START

Podemos usar el comando NET START para iniciar un servicio desde el símbolo del sistema. La sintaxis es la siguiente.

NET START [service_name]

Es posible que necesite encontrar el SERVICE_NAME para su servicio de PostgreSQL. También se menciona en la pestaña General.

General service name

Ahora puede emitir un comando como el siguiente.

net start postgresql-x64-14

Esto arrancará nuestro servidor y mostrará una salida como la siguiente.

Salida:

The postgresql-x64-14 - PostgreSQL Server 14 service is starting.
The postgresql-x64-14 - PostgreSQL Server 14 service was started successfully.

Sin embargo, recuerde que el COMMAND PROMPT debe iniciarse como ADMINISTRATOR y no como un usuario normal. Haga clic con el botón derecho en el archivo ejecutable CMD.EXE y haga clic en Run as Administrator. De lo contrario, obtendrá un error como el siguiente.

Salida:

System error 5 has occurred.

Access is denied.

Así que hoy aprendimos cómo iniciar un servidor PostgreSQL en Windows de diferentes maneras. Esperamos que haya leído este artículo detenidamente y pueda usarlo según sus necesidades.