Cómo instalar PostgreSQL 9.3 en Ubuntu 14.04

Abre una terminal y teclea:

sudo apt-get install postgresql postgresql-client postgresql-contrib libpq-dev

Esto instala el cliente y servidor de la base de datos y algunos scripts de utilería. El paquete de libpq-dev nos servirá para poder compilar la gema Ruby para PostgreSQL más adelante.

Confirma que la instalación terminó adecuadamente tecleando:

psql --version

En mi caso la respuesta fue:

psql (PostgreSQL) 9.3.4

PostgreSQL Ruby gem

Si planeas usar PostgreSQL con Ruby, necesitarás esto:

gem install pg

En Rails, puedes crear una aplicación configurada para usar PostgreSQL así:

rails new mi-nueva-aplicacion -d postgresql

Asigna el host en database.yml

Si trabajas con Ruby y Rails, es posible que al ejecutar algunos comandos de base de datos, te encuentres con un error que dice algo como:

FATAL: Peer authentication failed for user “X”

Para evitarlo necesitas editar el archivo config/database.yml en tu aplicación Rails y agregar la línea siguiente en las tres configuraciones (development, test y production):

host: localhost

Cómo crear un usuario en la base de datos para la aplicación Rails

Para crear un usuario llamado usuario_ejemplo que puedas usar en tu database.yml, teclea:

sudo su postgres -c psql
CREATE USER usuario_ejemplo WITH PASSWORD 'xxxxxx';
ALTER ROLE usuario_ejemplo WITH CREATEDB;
\q

Luego en tu database.yml deberás agregar lo siguiente:

production:
 adapter: postgresql
 encoding: unicode
 database: usuario_ejemplo
 pool: 5
 username: usuario_ejemplo
 password: xxxxxx
 host: localhost

¡Listo! :D

Tuneando PostgreSQL

Es importante tunear el servidor PostgreSQL para tener un rendimiento aceptable en un ambiente de producción.
Checa esta excelente guía: PostgreSQL: HW Tunning

Recursos

Install PostgreSQL on Ubuntu 8.04 (cómo acceder a tu DB desde otras máquinas en la red).
Switching Rails to PostgreSQL
PostgreSQL — Guía Ubuntu Wiki
Is there a way to break into a PostgreSQL database if you forgot the password?
Improving the Command-Line Postgres Experience

23 comments

  1. buenas… sabes que al reiniciar la pc, y quise volver a iniciar pgadminIII no me conecta el server…. trato de hacer un “restart” pero me sale esto : “pg_ctl: could not start server” como puedo solventar este problema¿?
    gracias de antemano!

  2. Hey. Ye he hecho todo esto. Y estoy probando guardar unas consultas a un archivo mediante ‘\o salida.txt’
    ‘\i consultas.txt’

    pero no he tenido exito. Al ejecutar el comando \o salida.txt me dice: access denied.
    ¿Podría alguien ayudarme?

      1. Ese era exactamente el problema. Lo he resuelto cambiando los Permisos que tienen ‘Otros’ sobre el directorio y le he puesto ‘Crear y eliminar archivos’.
        Muchas Gracias.

  3. Hola, antes de nada gracias por tu tiempo y por el tutorial.

    Yo ya tenía instalado RoR en un Ubuntu 12.10 y quería crear una nueva aplicación web utilizando postgresql así que seguí tu tutorial. No he tenido ningún problema para la instalación.

    También he cambiado el esquema de autenticación en el archivo pg_hba.conf, y he instalado la gema que comentas.

    Con todo listo, he creado mi aplicación rails configurada para Postgresql. Se me ha generado el directorio y la terminal no me ha devuelto ningún error. Vamos bien.

    Accedo al directorio de la aplicación y arranco el server con ‘rails server’ para ver como ha quedado todo.

    En el navegador voy a la dirección ‘localhost:3000′ y la primera impresión es que ya luce todo un poco distinto, pincho en ‘About your application’s environment’ y me sale este error:

    ‘PG::Error

    FATAL: Peer authentication failed for user “nueva_aplicacion”

    Pensé que ese error se solucionaba modificando el esquema de autenticación. O a lo mejor no tiene nada que ver. Estoy un poco perdido, la verdad y no quiero seguir con el proyecto sin solucionar esto antes. ¿Se te ocurre a que puede ser debido? ¿Cualquier sugerencia es más que bienvenida?

    Muchas gracias y un saludo.

    1. ¿Qué usuario tienes en tu database.yml? Si esa máquina la vas a usar sólo para desarrollo y no para producción entonces tu database.yml debe tener como usuario a postgres y como contraseña la que le pusiste en el procedimiento de cambiar contraseña.

      1. Hola! Qué respuesta tan rápida! Muchísimas gracias!

        He estado trasteando este rato y parece que lo he solucionado. Efectivamente tenía que ver con el nombre de usuario para la base de datos en el entorno de desarrollo. Por defecto me había puesto como usuario ‘nueva_aplicacion’. En vez de cambiarlo por ‘postgres’ como tú dices, lo he cambiado por otro usuario que había creado anteriormente. He dejado ese mismo usuario para ‘prueba’ y ‘producción’.

        Estan siendo mis primeros pasos con todo esto, y encima en Ubuntu, y hay cosas que no acabo de controlar bien, pero por ahora voy haciendo que todo funcione (jajaja, y no tengo nada de mi proyecto).

        He creado también las base de datos para todos los entornos con ‘rake db:create:all’. Y en principio lo tengo todo listo y configurado para empezar con mi aplicación web.

        Me gustaría algo relacionado con estadísticas de fútbol. ¿Sabrías tú algún recurso para algo parecido a la hora de organizar las tablas y luego mostrar la información en el navegador? Ando buscando por ahí pero me pierdo con algunos artículos.

        De todas maneras, muchas gracias por tu super rápida respuesta y enhorabuena por tu blog!

        Un saludo

  4. Jejeje con esa misma página estoy liado. Voy avanzando, la verdad. Pero estaba buscando documentación a la hora de como organizar la base de datos, insertar datos y luego añadirlos a la vista. No he visto todas las guías de esa página, pero, ¿puedo encontrar allí ejercicios como los que comentas?

    La verdad es que los ejemplos que me comentas podrían ser ejercicios igual de válidos para poder entender como manejar postgresql con RoR.

    Gracias, lobo.

        1. Es interesante aunque el GEMFILE que presentan es distinto al mio. Yo no tengo:

          group :development do
          gem ‘sqlite3′, ‘1.3.5’
          end

          group :production do
          gem ‘pg’, ‘0.12.2’
          end

          No se si será porque tengo instalada la gema que tú comentas en tu tutorial.

          gem pg

          Puedo seguir con la guía? O he de instalar alguna cosa?

          1. En el tutorial ellos están usando sqlite3 como base de datos. Tu puedes usar la que sea. Lee más, experimenta, si no jala sigue intentando, desarrolla tus propias conclusiones.

            En rails puedes usar diferentes bases de datos cambiando la configuración en database.yml.

            Si tu quieres usar postgres deberás usar la gema pg, si quieres seguir el tutorial tal cual de ellos, usa sqlite3. Sólo estarás cambiando la base de datos, en todo lo demás no debe haber diferencia alguna.

  5. Buenas tras su intalación para verificar su instalación he probado a escribir todo tipo de cosas y siempre me da error. Como:
    psql PostgreSQL 9.1.11
    psql: FATAL: Peer authentication failed for user “9.1.11”
    psql (PostgreSQL) 9.1.11
    bash: error sintáctico cerca del elemento inesperado `PostgreSQL’
    psql 9.1.11
    psql: FATAL: role “root” does not exist

    Por lo que no puedo llegar a usar el programa.

Deja un comentario