miércoles, 20 de enero de 2010

Instalar PostgreSQL Server + PGAdmin III en Fedora

PostgreSQL es el motor de bases de datos más poderoso del mundo del software libre y cuenta con una gran trayectoria en el mercado empresarial por su robustez y fiabilidad.


Por otra parte, PGAdmin III es una interfaz gráfica para administrar PostgreSQL que si bien no es tan avanzada como algunos administradores quisieran, sin duda es una excelente opción para operar Postgres fuera de la consola de la comandos.

Para instalar PostgreSQL y PGAdmin III en Fedora sólo ejecute en una terminal:

$ su -c 'yum -y install postgresql-server pgadmin3'

Una vez instalado, cambiamos la contraseña del usuario postgres:

$ su -c 'passwd postgres'

Acto seguido inicializamos la base de datos:

$ su -c 'service postgresql initdb'

Y procedemos a editar la configuración de PostgreSQL:

$ su -c 'yum -y install nano && nano /var/lib/pgsql/data/postgresql.conf'

Nota: puede cambiar nano por su editor de texto favorito, por ejemplo gedit o kwrite.

En el archivo de configuración busque edite la línea:

#listen_addresses = 'localhost'

Por

listen_addresses = '*'

Y la línea:

#port = 5432

Por:

port = 5432

A continuación guarde y cierre el editor de texto (Ctrl+O y Ctrl+X en nano). Con éstos cambios, configuramos PostgreSQL server para "escuchar" las conexiones desde cualquier dirección por el puerto 5432.

Ahora procedemos a editar la configuración de autenticación editando el archivo pg_hba.conf:

$ su -c 'nano /var/lib/pgsql/data/pg_hba.conf'

Ubicamos la línea:

host all all 127.0.0.1/32 ident

Y la cambiamos por:

host all all 127.0.0.1/32 md5

Con éste cambio le decimos a PostgreSQL que las conexiones desde el mismo servidor (localhost) deben autenticarse por md5.

Nota: Si desea conectarse desde otro equipo o red remota añada una línea similar con la dirección IP del equipo o red desde el que se conectará. Incluso puede aceptar conexiones desde cualquier lugar con la dirección 0.0.0.0. Consulte http://www.postgresql.org/docs/8.4/static/auth-pg-hba-conf.html para obtener más información del archivo pg_hba.conf.

A continuación guarde el archivo y salga del editor de texto (Ctrl+O y Ctrl+X) en nano. Una vez hecho ésto agregamos PostgreSQL como servicio al arranque para que sea inicializado cada vez que se enciende el equipo:

$ su -c 'chkconfig postgresql on'

Finalmente inicializamos el servicio:

$ su -c '/etc/init.d/postgresql start'

Ahora podemos proceder a cambiar la contraseña propiamente del usuario PostgreSQL en la base de datos (Nos pedirá la constraseña del usuario Postgres de Unix).

$ su postgres
contraseña: 

Una vez como usuario Postgres ejecutamos: (Una instrucción por línea):

psql
ALTER USER postgres WITH PASSWORD 'mypasswd';

Si la instrucción se ejecutó con éxito debe mostrar:

ALTER ROLE

Nota: Reemplaca mypasswd por su contraseña. No olvide el ; al final.

El cambio está hecho. Para salir (Una instrucción por línea):

\q
exit

Conectarse a la Base de datos desde PGAdmin III

Para abrir PGAdmin III vaya al menú Aplicaciones => Programación => pgAdmin III verá la pantalla principal de pgAdmin:


Para conectarse a la base de datos, haga clic sobre la "toma de corriente" o "enchufe" en la parte superior, o en el menú Archivo => Add Server.

Verá el cuadro de diálogo de configuración del servidor:


La información a ingresar será:

Nombre: Mi BD
Host: 127.0.0.1
Port: 5432
Maintenance DB: postgres
Username: postgres
Password: mypasswd

Una vez hecho ésto, haga clic en Aceptar y ¡listo! PGAdmin III y PostgreSQL están preparados para trabajar.

23 comentarios:

  1. Una consulta, todos los pasos me anduvieron bien menos este:

    psql
    alter user postgres with password 'mypasswd';

    porque no entiendo como es, yo cuando lo tipeo me dice ERROR: error de sintaxis en o cerca de «alter». Además cuando escribo psql me figura could not change directory to "/root"
    Welcome to psql 8.3.1, the PostgreSQL interactive terminal.

    Type: \copyright for distribution terms
    \h for help with SQL commands
    \? for help with psql commands
    \g or terminate with semicolon to execute query
    \q to quit

    ResponderEliminar
  2. Hola Proyecto UNC:

    He revisado el post y el contenido está correcto, unícamente modifiqué la instrucción que por convención debería ir en mayúscula, quizás así eso ayude a reducir problemas con el teclado (una tecla de más o una tecla de menos).

    No olvides primero cambiar al usuario Postgres:

    $ su postgres

    Luego si ejecutas PSQL:

    psql

    Y luego sí ejecutas la instrucción en cuestión. No olvides por nada en el mundo que debe ir la contraseña entre comillas sencillas y SIEMPRE finalizar con punto y coma (;).

    Espero te ayude.

    Saludos!

    ResponderEliminar
  3. bueno, gracias por tu post amigo , muy buen aporte , mmmm tube problemas de coneccion pero no era problema del postgres si no del firewall de fedora, lo desabilite y listo, para desabilitar el firewall es

    # /etc/init.d/iptables save
    # /etc/init.d/iptables stop

    espero q le sirva a alguien mas , nunca esta demas.....

    ResponderEliminar
  4. Hola una consulta, cuando coloco el comando psql me arroja este error:

    bash-4.1$ psql
    could not change directory to "/home/Francisco"
    psql (8.4.6)
    Type "help" for help.

    postgres=#

    Si pudieras ayudarme seria genial.
    saludos

    ResponderEliminar
  5. Excelente!... Gracias por el post! Soy nuevo en Fedora y soy diseniador Web y me fue de mucha ayuda tu post

    THANKS THANKS THANKS

    ResponderEliminar
  6. estay muy bien, pero no crees que abrir a todos los ips es un poquito peligroso?

    ResponderEliminar
  7. Hola @sacabuche:

    Claro, en ambientes de producción sería recomendable no poner a PostgreSQL a escuchar en todas las direcciones, sin embargo, ten en cuenta que solo se están recibiendo autenticaciones para el bucle local (localhost) y en el caso de Fedora, siempre cuentas con el Firewall como primera línea de defensa.

    Un saludo y gracias por el comentario.

    ResponderEliminar
  8. excelente... me sacaste del pozo en el que me encontraba, ahora mi servidor de pruebas ya funciona, no quería usar el servidor de produccion para hacer pruebas.

    Gracias! Excelente tutorial.

    ResponderEliminar
  9. buenos dias tardes o noches segun corresponda. estoy siguiendo el tuto y me tira este error

    Data directory is not empty! [FAILED]

    luego de usar el comando

    $ su -c 'service postgresql initdb'

    alguna idea de como solucionarlo¿?

    ResponderEliminar
  10. Hola piojo1989:

    Ese error significa que ya tenías instalado PostgreSQL anteriormente en ese equipo y ya se había inicializado el cluster de la base de datos.

    Podrías continuar con el proceso ignorando ese paso en particular y luego verificando qué bases de datos habrían quedado o mejor te recomiendo eliminar la carpeta data de PostgreSQL.

    Si no me equivoco el directorio es /var/lib/postgresql/data. (Por favor verificalo)

    Lo borras como root:

    # rm -rf /var/lib/postgresql/data

    ResponderEliminar
  11. Corrijo, el directorio sería /var/lib/pgsql/data/

    ResponderEliminar
  12. Hola tengo el mismo problema que proyecto UNC y SikcMan
    "
    bash-4.2$ psql
    could not change directory to "/home/cedp"
    psql (9.0.4)
    Type "help" for help.

    postgres=#

    "

    Alguna solución, gracias.

    ResponderEliminar
  13. hola instale postgres en fedora 16 pero ahora no lo puedo levantar me arroja el siguiente codigo

    error en postJob failed. See system logs and 'systemctl status' for details.


    que puedo hacer???

    ResponderEliminar
    Respuestas
    1. Hola @Luisa Be Free:

      El problema puede ser causado porque no inicialiste correctamente el cluster de las base de datos. Prueba ejecutar como root:

      initdb -D /var/lib/pgsql/data/

      Y luego continúa con los pasos del manual. Espero te sirva. Saludos!

      Eliminar
  14. Me sucede algo parecido, al momento de ejecutar:
    su -c 'service postgresql initdb'
    Dice que no existe el servicio... siempre me ha funcionado con GNome, ahora con KDE aparece este error... ¿Alguna Solución?

    ResponderEliminar
    Respuestas
    1. Hola @Carlin:

      Independientemente del escritorio debería funcionar. ¿Seguro que instalaste correctamente?

      ¿Qué pasa si ejecutas como root?

      /etc/init.d/postgresql start

      Te debe arrojar un error que no existe la BD o algo así pero si te dice que el servicio no existe definitivamente, prueba reinstalar nuevamente ejecutando yum erase postgresql-server (Erase borra todas las configuraciones de la BD que puedan estar causando problema) e intenta nuevamente con los pasos de esta guía.

      Espero te sirva. Un saludo!

      Eliminar
  15. Tenia problemas con el inicio del servicio postgresql


    Redirecting to /bin/systemctl status postgresql.service
    postgresql.service - PostgreSQL database server
    Loaded: loaded (/lib/systemd/system/postgresql.service; disabled)
    Active: failed since Sat, 30 Jun 2012 09:45:35 -0400; 9min ago
    CGroup: name=systemd:/system/postgresql.service

    La solucion la encontre en el siguiente link
    http://www.unixmen.com/postgresql-binsystemctl-initdb-postgresql-service-unknown-operation-initdb-solved/

    saludos

    ResponderEliminar
  16. Tenia el error al iniciar con el siguiente comando:

    Finalmente inicializamos el servicio:

    $ su -c '/etc/init.d/postgresql start'

    me decia q no existia el archivo, y a decir verdad haciendo el seguimiento no existia! XD

    Pude hacerlo correr con el siguiente comando:


    $ service postgresql start

    ya despues de eso segui con

    $su postgres

    .
    .
    .
    .
    por lo demas todo bien ya tengo corriendo mi BD.

    Saludos!!!

    ResponderEliminar
  17. ala hora de conectar el pgadminIII me da el error connecting to the server:FATAL: la autentificacion IDENT fallo para el usuario <>

    ResponderEliminar
  18. Hola el pgadmin no me inicia, si puedo conectarme por la terminal...alguien que me ayudeee por favor...

    ResponderEliminar
    Respuestas
    1. Hola Marcelo, cuál versión de fedora está usando ? yo acabé de configurar todo y también tuve muchos problemas, pero pude contectar todo perfectamente y ya estoy trabajando con mis proyectos. escribame a goyes.yesidp@gmail.com

      Eliminar
  19. Saludos estimado Diego, muchas gracias por este post, me ayudó mucho. Ya pude iniciar con todo bien, y ya tengo varias capas en mi base de datos en 127.0.0.1, ahora la pregunta es, cuál es el procedimiento para que otra persona desde otro computador se conecte a esta base de datos ?? gracias.

    ResponderEliminar