Ejecutando el servidor PostgreSQL en Void Linux. Después de la instalación, ejecutó initdb como usuario del sistema operativo «postgres»:

[user@host]$ sudo -u postgres -i $ initdb -D "/var/lib/postgresql/data" 

Salida recibida:

creando directorio / var / lib / postgresql / data … ok creando subdirectorios … ok seleccionando max_connections predeterminado … 100 seleccionando shared_buffers predeterminados … 128MB seleccionando dinámico compartido implementación de memoria … posix creando archivos de configuración … ok ejecutando el script de arranque … ok realizando la inicialización posterior al arranque … locale: No se puede configurar LC_MESSAGES a la configuración regional predeterminada: no existe tal archivo o directorio ok sincronizando datos con el disco … ok

ADVERTENCIA: habilitar la autenticación de «confianza» para las conexiones locales Puede cambiar esto editando pg_hba.conf o usando la opción -A, o –auth-local y –auth-host, la próxima vez ejecuta initdb.

Correcto. Ahora puede iniciar el servidor de la base de datos usando: pg_ctl -D / var / lib / postgresql / data -l inicio del archivo de registro

Luego procedí a crear el servicio, otorgar la propiedad a «postgres» e iniciarlo:

[user@host]$ ln -s /etc/sv/postgresql /var/service [user@host]$ sudo chown postgres: /var/service/postgresql [user@host]$ sudo sv start postgresql [user@host]$ ls -l /var/service/postgresql lrwxrwxrwx 1 postgres postgres 18 nov 2 17:05 /var/service/postgresql -> /etc/sv/postgresql 

Ejecutando:

[user@host]$ sudo -u postgres psql ... 

me dará el siguiente error:

psql: FATAL: role "postgres" does not exist 

He intentado conceder la propiedad de /etc/sv/postgresql a «postgres», pero no hubo suerte.

Estas fueron mis fuentes:

https://wiki.voidlinux.eu/PostgreSQL

Error de PostgreSQL: fatal: la función «nombre de usuario» no existe

No sé qué hacer a continuación.

EDITAR: Tropecé con psql: FATAL: el rol «postgres» no existen . No puedo ejecutar psql -l porque obtengo el mismo error, independientemente del usuario que ejecute psql como.

Comentarios

  • Díganos qué versión de Postgres está intentando instalar y dónde obtuvo el paquete. El mensaje de error es lo suficientemente claro: role "postgres" does not exist: no hay un rol de base de datos llamado " postgres ". ¿Es la única instalación de Postgres en la misma máquina? (¿Así que está seguro de conectarse a la instancia correcta?) Si es así, la pregunta es: qué función de base de datos configura su instalación. No ' no conozco Void Linux o el administrador de paquetes XPBS lo suficiente como para decir más. Podría ser más adecuado para superuser.SE o unix.SE.
  • La versión es postgresql-9.6.10_1. Sí, ' es la única instalación de PostgreSQL en mi sistema y solo hay una instancia del servidor en ejecución. ¿Debería mover la pregunta entonces? No ' no sé …
  • No estoy seguro de que haya expertos en VOID Linux o XPBS por aquí … La clave es encontrar el nombre del Rol de Postgres creado por initdb, y luego conéctese con el usuario del sistema operativo del mismo nombre para que el " trust " método de autenticación. Obviamente no " postgres " (que sería el valor predeterminado).
  • Pensé tanto, pero ' no hemos logrado encontrar el rol. Como mencioné en la pregunta, no puedo ' t psql, por lo que no puedo ' enumerar los roles existentes. ¿Hay algo de relevancia escrito en el archivo postgresql.conf quizás? ¿Algo que debería buscar? ' he obtenido el rol codificado y obtuve session_replication_role = 'origin'. Creo que eso no sirve de mucho.
  • :%s/XPBS/XBPS/g

Responder

No es una respuesta completa, pero considere el manual sobre initdb aquí :

-U username
--username= username

Selecciona el nombre de usuario del superusuario de la base de datos. Este valor predeterminado es el nombre del usuario efectivo que ejecuta initdb. Realmente no es importante cuál es el nombre del superusuario, pero se puede optar por mantener el nombre habitual postgres, incluso si el nombre del usuario del sistema operativo es diferente.

Significado …

  1. Cuando se ejecuta initdb como usuario del SO postgres, el rol de superusuario de base de datos inicial es postgres también, en Postgres estándar. He oído hablar de sistemas que modifican esta regla …

  2. Debería poder forzar el nombre postgres con --username=postgres para el superusuario inicial, a menos que su paquete se haya metido en serio con todo esto.

Comentarios

  • Wow , esto me indicó la dirección correcta, está bien. Sabía que vi esa marca -U en algún lugar y era desde aquí: stackoverflow.com/questions/50746147/… Es posible que haya leído mal la respuesta de Laurenz ' allí, pero ejecuté initdb -U UTF8 -D /var/lib/postgresql/data y adivina qué el rol de superusuario de base de datos inicial era. De todos modos, terminé casi colapsando todo mi sistema debido al agotamiento. Un día bastante productivo. Gracias por tu dedicación Erwin, tu ayuda es muy apreciada.
  • @Jakov: -U UTF8. Ay. Supongo que estaba destinado a ser -E UTF8. Perdón por tu día perdido debido a una carta engañosa y revuelta. Por otra parte: si hubiera mostrado su comando real en la pregunta para empezar, podríamos haber ahorrado la mitad de su día …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *