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.
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