Blog

Instalar OpenERP 7 y acceder a la base de datos

Como algunos de vosotros sabeis estoy enfrascado en un proyecto relacionado con OpenERP que requiere que conozca la estructura de su base de datos.

Mi experiencia previa con MySQL y con *Ubuntu Linux me han permitido desarrollar una guía sobre cómo instalar OpenERP sin necesidad alguna de usar la consola de comandos y posteriormente acceder a la base de datos sin volvernos locos en el intento.

La primera parte: Instalar OpenERP

Consiste en usar los paquetes .deb que en la página web de OpenERP ponen a disposición de los usuarios. El archivo .deb vienen a ser el equivalente a un instalable en Windows (o dicho de otra manera el setup.exe). Si para que funcione OpenERP hace falta algún otro programa o librería ya se encargará el sistema de instalarlos, a modo de “dependencias”. Por tanto nos olvidamos de la idea de compilar el código fuente. Eso para mí hace muchos años que “no existe”.

esquema instalación archivo deb

Pero es que Linux es mejor que eso. En Linux puedes poner en la lista del “software center” las aplicaciones que por el motivo que sea no formen parte de los programas directamente disponibles según la distribución que usas. Con eso ganas que las futuras actualizaciones estén centralizadas y coordinadas con el resto de programas. Mira el horror que supone actualizar Flash, Java, los controladores de Nvidia, etc, cada uno por su lado en Windows. Para volverse loco.

Así que nos decidimos por la opción de meterlo en la lista. Y luego otra cosa. Mejor instalar el servidor de la base de datos PostgreSQL antes de instalar OpenERP. Se ve que la instalación funcionará a la primera si tenemos el servidor corriendo con anterioridad.

Esquema añadir orígenes de software

Vídeo del proceso de instalación en 15 minutos, con subtítulos:

He realizado un vídeo que dura 15 minutos. Es el tiempo real de instalación. Sin cortes. Con subtítulos revisados, para leer lo que voy haciendo, en Español y en Inglés.

Segunda parte: Acceder a la base de datos en PostgreSQL

Podemos observar que la instalación ha creado el usuario openerp para gestionar las tablas del programa.
usuarios instalación openERP
Se requiere un par de comandos para ello:

Para ejecutar órdenes como usuario del sistema postgres

sudo su postgres

Para ver la lista de bases de datos en PostgreSQL

psql –l

El usuario openerp no es un usuario del sistema, es un usuario de base de datos. Para aclararnos un poco he hecho este esquema:
usuarios instalación openERP
Tal y como podemos ver en el archivo de conexión de OpenERP a la base de datos PostgreSQL este usuario no tiene contraseña, a no ser que se la pongamos nosotros.

El hecho de no tener contraseña supone un problema de seguridad para programas de conexión a las bases de datos, como por ejemplo PgAdmin. Así lo indica claramente con sus mensajes:
pgAdmin conexión local y contraseñas

La respuesta es editar como administrador el archivo de configuración de PostgreSQL: pg_hba.conf y ponerle como opción de contraseña “trust” en lugar de “MD5”. De esta manera le pedimos que haga el esfuerzo de confiar en nosotros.
opciones contraseña y conexión pg_hba
Reiniciamos el servicio ejecutando

sudo /etc/init.d/postgresql restart

Y ¡¡ya lo tenemos!!

Las bases de datos:

conexión local openERP pgAdmin

Las tablas:

tablas y datos de openERP pgAdmin

Pero luego resulta que queremos “jugar” desde otras máquinas dentro de la red local. Por lo cual, en vez de decirle que espere conexiones desde la propia máquina o dicho de otra manera, localhost o ip 127.0.0.1, le vamos a poner todas las máquinas del rango 192.168.1.0 al 192.168.1.256, que es como tengo mi red local.

Tal y como indicaba el mensaje anterior de PgAdmin se trata de poner 192.168.1.0/24 (en formato CDIR) en la línea de pg_hba.conf

Sin embargo hay otra cuestión de seguridad. No sólo el hecho que permitamos conexiones desde toda la red local, sino también que el servidor PostgreSQL las esté escuchando.
configuración postgresql.conf

Y ahora los cambios se hacen sobre el archivo postgresql.conf para habilitar una línea que diga

listen_adresses ‘*’

Y ya conectamos a la IP local (192.168.1.178 en este caso). Y desde distintos ordenadores…

Linux

conexión openERP pgAdmin linux LAN

Windows

conexión openERP pgAdmin windows LAN

Pruebas de copia de seguridad de OpenERP

Por último decir que OpenERP tiene integrada la funcionalidad de backup & restore. Hago la prueba con un archivo de respaldo llamado demo_fecha_.dump

Le doy a restaurar, para lo cual me pide el archivo, la contraseña maestra (admin) y el nombre de la nueva base de datos
restaurar base de datos openerp
proceso de restauración de base de datos openERP

Y luego ya no tenemos que hacer ¡¡nada más!!

La elijo
seleccionar base de datos openerp

Y accedo!! (aprende WordPress)
copia de seguridad restaurada openerp

En resumen:

Se trata de trabajar con un programa que te de confianza a la hora de hacer copias de seguridad que te puedas llevar de una máquina a otra con gran facilidad.
También es importante que podamos acceder a la base de datos (los programas comerciales también te lo permiten si lo solicitas).

Acceder a la base de datos da confianza a la hora de poder resolver algún problema concreto «a mano» y te permite averiguar si el programa está bien diseñado.
Por lo que he podido observar las tablas están perfectamente ordenadas en grupos por nombre, lo cual transmite muy buena impresión sobre los desarrolladores.

¡¡Un momento!! ¿Vamos a dejar la base de datos sin contraseña?

Mejor no. En lo descrito anteriormente lo que queríamos era acceder de forma fácil a la base de datos. Sin embargo es muy conveniente que haya una contraseña que la proteja como medida de seguridad adicional y muy importante.

La instalación de OpenERP bajo Windows te solicita una contraseña en el instalador. Pero la instalación en linux genera un usuario openerp, pero no le asigna contraseña. Estos son los tres pasos a seguir para cambiar esto:

Paso 1: Añadir contraseña al usuario openerp en PostgreSQL

1- Cambiar rol de usuario a postgres

sudo su postgres

2- Entrar el interfaz de comandos psql

psql

3- Cambiar la contraseña

alter role openerp with password 'password';

Como resultado del comando obtenemos

ALTER ROLE

4- Salir

\q

Paso 2: Configurar el servidor OpenERP para que use esta nueva contraseña

Editar archivo
/etc/openerp/openerp-server.conf

db_name=laquepone
db_user=openerp
db_password='password'

Paso 3: Configurar PostgreSQL para acceder usando contraseña (como estaba inicialmente)

Editar archivo
pg_hba.conf

host all all 0.0.0.0/0 md5
4/5 - (1 voto)