
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 de PostgreSQL más adelante.
Confirma que la instalación terminó adecuadamente tecleando:
psql --version |
En mi caso la respuesta fue:
contains support for command-line editing
Cambia la contraseña del usuario administrador
En la base de datos
Ahora necesitas establecer la contraseña del usuario postgres.
Teclea la siguiente línea en la terminal (cambia la palabra password por la contraseña que desees usar):
sudo su postgres -c psql ALTER USER postgres WITH PASSWORD 'password'; \q |
En el sistema operativo
Después de alterar la contraseña en la base de datos, deberías hacer lo mismo para el usuario postgres del sistema operativo:
sudo passwd -d postgres sudo su postgres -c passwd |
Te aparecerá un prompt, introduce la misma contraseña que pusiste antes.
Cómo crear un usuario y asignarle una base de datos
Para crear un usuario llamado usuario_ejemplo y una base de datos llamada base_ejemplo, teclea:
sudo su postgres -c psql create user usuario_ejemplo with password 'xxxxxx'; create database base_ejemplo owner usuario_ejemplo; \q |
Cambiar el esquema de autenticación de PostgreSQL
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:
Para evitarlo necesitas editar el archivo /etc/postgresql/9.1/main/pg_hba.conf y cambiar el esquema de autenticación. Abre el archivo con privilegios de root:
sudo gedit /etc/postgresql/9.1/main/pg_hba.conf |
Y cambia esto:
1 2 | # Database administrative login by Unix domain socket local all postgres peer |
Por:
1 2 | # Database administrative login by Unix domain socket local all postgres md5 |
Reinicia el servidor de PostgreSQL tecleando en tu terminal:
sudo service postgresql restart |
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 |
¡Listo!
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?
Muy buena guía, perfectamente detallada, a prueba de fallos
¡¡Gracias!!
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!
¿Te puedes conectar sin problema por medio de la terminal?
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?
Es posible que estés en un directorio donde no tengas permisos de escritura. ¿Puedes darle una ruta en tu $HOME?
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.
Pingback: Mi Ubuntu Desktop — Puesta a punto de una Alienware M11x R2 | @lobo_tuerto
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.
¿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.
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
Te recomiendo te des un tiempo para leer las guías de Rails:
http://guides.rubyonrails.org/getting_started.html
No hay algo mejor para aprender que practicar. Prueba con algo sencillo y conforme te vayas sintiendo más cómodo ve haciendo proyectos más complicados.
Podrías comenzar con un directorio teléfonico, una lista de pendientes, etc., para irle agarrando y entendiendo como funciona Rails.
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.
Creo que esto te puede ayudar:
http://ruby.railstutorial.org/chapters/a-demo-app#top
hmmm le voy a echar un vistazo ahora mismo!
Mil gracias, crack!
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?
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.