El comando initdb en PostgreSQL

Bilal Shahid 20 junio 2023
  1. el comando initdb en PostgreSQL
  2. Uso del Comando initdb en PostgreSQL
El comando initdb en PostgreSQL

El usuario puede configurar manualmente el servidor PostgreSQL usando diferentes comandos. Primero, necesitaría configurar un clúster de base de datos, que se ha explicado a lo largo del artículo.

Uno de los comandos BASH más cruciales en el proceso de inicialización es el comando initdb. Por lo tanto, este artículo pone especial énfasis en la comprensión del comando initdb.

Es crucial comprender el comando initdb antes de configurar PostgreSQL manualmente. Si PostgreSQL no está configurado correctamente en la etapa inicial, no ejecutará consultas en la etapa posterior.

En el peor de los casos, es posible que el servidor PostgreSQL no pueda detectar la ruta del directorio de datos y no se inicie. Por lo tanto, este artículo explica el comando initdb y un poco más de detalle sobre el clúster de la base de datos.

el comando initdb en PostgreSQL

El comando initdb se utiliza en el proceso de inicialización de un clúster de base de datos. Después del proceso de inicialización con el comando initdb, se creará una base de datos llamada postgres dentro del clúster de la base de datos.

El postgres funciona como una base de datos predeterminada utilizada por los usuarios, las utilidades y las aplicaciones de terceros. Además de crear la base de datos postgres dentro del clúster, también se crea otra base de datos llamada template1 dentro de cada clúster.

La base de datos template1 funciona como plantilla para bases de datos creadas posteriormente dentro del clúster. Recuerde, un clúster de base de datos es el directorio de datos bajo los sistemas de archivos.

El clúster de la base de datos es un directorio único donde se almacenan todos los datos. Por lo tanto, el comando initdb toma una ubicación como argumento donde inicializa el clúster de la base de datos.

Se puede proporcionar cualquier ubicación como argumento para el clúster de la base de datos. Los datos se almacenan en la ubicación deseada proporcionada con el comando initdb.

Se utiliza una opción -D con el comando initdb para designar la ubicación deseada para el clúster de la base de datos. Por lo tanto, se debe seleccionar cuidadosamente la ubicación del clúster de la base de datos.

Uso del Comando initdb en PostgreSQL

La definición del comando initdb se ha explicado en la sección anterior. Además de la descripción, el trabajo detrás del comando se ha descrito en detalle en la sección anterior.

Esta sección cubre la ejecución del comando initdb a fondo. Primero, asegúrese de haber iniciado sesión en la cuenta de usuario de PostgreSQL antes de ejecutar el comando initdb.

El comando initdb funciona de la siguiente manera:

> initdb -D /usr/local/pgsql/data

El pg_ctl se utiliza para iniciar o detener el servidor. También podemos usarlo para ejecutar el comando initdb como se muestra a continuación:

> pg_ctl -D /usr/local/pgsql/data initdb

El comando initdb inicializa la configuración regional predeterminada para el clúster de la base de datos. Además, el comando initdb también especifica la configuración del entorno local y la codificación del conjunto de caracteres predeterminado.

Aunque, el usuario también puede especificar una configuración regional diferente. El comando initdb crea un directorio en la ubicación especificada pero falla si:

  • No tiene permiso para escribir en el directorio padre.
  • El directorio de datos ya existe en esa ubicación.

Se prefiere que el usuario de PostgreSQL sea propietario del directorio principal además del directorio de datos. Sin embargo, si el directorio principal no existe, debe ser creado por el usuario.

Si no se puede escribir en el directorio principal, podemos usar el privilegio de raíz para crear el directorio principal y secundario dentro del directorio principal. Podemos usar los siguientes comandos:

> root# mkdir /usr/local/pgsql
> root# chown postgres /usr/local/pgsql
> root# su postgres
> postgres$ initdb -D /usr/local/pgsql/data

Garantizar el acceso autorizado al clúster de la base de datos

El comando initdb utiliza la configuración de autenticación de cliente predeterminada al inicializar y crear el clúster de la base de datos. Luego, permite que todos los usuarios locales se conecten a la base de datos.

Los usuarios locales también pueden convertirse en superusuarios de la base de datos. Es ideal establecer una contraseña para el superusuario de la base de datos para evitar el acceso no autorizado a una base de datos.

Se puede hacer usando cualquiera de los siguientes comandos:

  • El comando initdb con la extensión -W
  • El comando --pwprompt
  • El comando pwfile

Podemos usar los comandos anteriores para establecer una contraseña para la base de datos. Permite que solo los usuarios autorizados accedan a la base de datos.

Error de inicialización de dependencias

Si se enfrenta a algún error de dependencia de inicialización, como el Error de bus o el Error del código de salida 135, inicialice el clúster de la base de datos utilizando el procedimiento que se menciona a continuación.

Una vez que se han instalado las herramientas de servidor y cliente de PostgreSQL, el usuario debe ejecutar los siguientes comandos como ROOT(su). Comience con el comando service postgresql initdb.

Inicializa la base de datos PostgreSQL. Los siguientes comandos aseguran que el servidor PostgreSQL se está ejecutando correctamente:

> service postgresql initdb
> systemctl enable postgresql
> systemctl start postgresql

Los comandos inicializan la base de datos PostgreSQL. Pero, primero, debemos verificar que el servidor PostgreSQL se encuentre en el directorio /var/lib/pgsql.

Además, asegúrese de que el servidor PostgreSQL se esté ejecutando. Por ejemplo, el comando ps -ef | grep postgres se puede usar para verificar el estado de ejecución del servidor PostgreSQL.

Si los errores no se resuelven, pruebe los siguientes métodos:

  • Deberíamos eliminar los directorios de datos de instalación vacíos.
  • Todos los archivos de registro deben leerse con precisión.
  • Podemos modificar el usuario o contraseña del servidor PostgreSQL.
  • Podemos limpiar el directorio de datos del servidor PostgreSQL.

Recuerde que el comando initdb en el servidor PostgreSQL inicializa el clúster de la base de datos y lo establece en la ubicación deseada por el usuario. La base de datos se inicializa con la configuración del entorno local y se puede cambiar a petición del usuario.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub