Instal·lació i configuració del Postgres
Amb el Linkat el Postgres ja està instal.lat i s'engega en l'inici del sistema
Per tal de poder-nos connectar hem de modificar el fitxer /var/lib/pgsql/data/pg_hba.conf. Anem al final, a on diu:
# "local" is for Unix domain socket connections only local all all ident sameuser # IPv4 local connections: host all all 127.0.0.1/32 ident sameuser # IPv6 local connections: host all all ::1/128 ident sameuser
canviem el ident sameuser per un trust, i guardem. (ja estava canviat per defecte)
tant el Postgres com el tomcat no cal arrencar-los, s'arrenquen automàticament amb l'inici del sistema
D'entrada no puc arrencar i em dóna el següent missatge:
$ postgres You must specify the --config-file or -D invocation option or set the PGDATA environment variable. postgres --help
però això és una confusió perquè la comanda per entrar a la consola SQL no és postgres sinó que és psql
la instal.lació del postgres està a /usr/bin/postgres (aquest és el executable) i la instal.lació està a
/var/lib/pgsql
PGDATA és una variable d'entorn que diu on estan les dades de postgres
echo $PGDATA -> no hi ha res
s'ha d'iniciar aquesta variable d'entorn
recordem que després de la instal.lació, l'usuari postgres existeix per defecte
$su postgres $postgres -D /var/lib/pgsql/data
el problema està en què en aquesta carpeta no hi ha res, ni postgresql.conf ni pg_hba.conf i que el servidor de postgres està aturat. el primer que faig és iniciar-lo. com a root,
$cd /etc/init.d $./postgresql start
i es reinicia sense problemes
i automàticament es creen els fitxers que faltaven (s'ha executat un script inicial...)
configuro manualment el fitxer postgresql.conf, fico els directoris on està /data, i reinicio:
sudo /etc/init.d/postgresql restart
per establir una variable d'entorn:
export PGDATA=/var/lib/pgsql/data echo $PGDATA
No funciona:
2008-09-16 17:53:51 CEST FATAL: lock file "postmaster.pid" already exists 2008-09-16 17:53:51 CEST HINT: Is another postmaster (PID 9018) running in data directory "/var/lib/pgsql/data"?
reinicio a veure què passa...
funciona, però després ja no.
Sembla ser que es queden processos oberts...
ps -A -> per veure tots els processos
$kill 5970 per matar el procés
i ara ja funciona, però el que tinc instal.lat és el backend, que és un postgres stand-alone back-end i no sé què fer...
el problema està amb el script initdb, que suposo que l'ha d'executar l'usuari postgres, i abans el devia executar amb l'usuari root. Elimino el directori data i torno a executar initdb amb l'usuari postgres
efectivament, torno a crear tota l'estructura...
Success. You can now start the database server using:
postmaster -D /var/lib/pgsql/data
or
pg_ctl -D /var/lib/pgsql/data -l logfile start
el mateix...
Solució!
Sí que funcionava, el que passa és que per entrar en el Postgres en mode comanda havia de fer $psql i no $postgres
de totes maneres, he seguit aquest tutorial i ha funcionat.
no me n'en surto, segueixo el tutorial de http://www.dbrunas.com.ar/article.php/2007091509464125
acaba la instal.lació correctament. L'usuari postgres no té pwd. Fico com a password postgres (ho faig des del pgAdmin, a posteriori
Configuració del Postgres en mode servidor
(volem que es pugui atacar des de la xarxa)
els fitxers postgresql.conf i pg_hba.conf estan a /var/lib/pgsql/data
postgresql.conf:
listen_addresses='*'
pg_hba.conf:
#host all all 192.168.0.9/32 md5 -> només deixa accedir des de la màquina 192.168.0.9 (màscara de 32 bits, 255.255.255.255) host all all 192.168.0.179 255.255.255.0 md5 -> deixa accedir des de totes les màquines 192.168.0.*
o bé
host all all 192.168.0.179/24
sudo /etc/init.d/postgresql restart
ara podem accedir al Openbravo des de qualsevol màquina de la xarxa local:
psql -h 192.168.0.15 -p 5432 postgres -U tad
pwd tad: tad ->el password es pot canviar des del pgadmin (s'ha de reiniciar)
Aclariment abril 2010
En la màquina 192.168.0.15 es va haver d'eliminar el Postgres que venia per defecte (versió 8.2) i instal.lar la versió 8.3, necessària per instal.lar el Openbravo. Ara ja anem perla versió 8.4 (abril 2010).
Per veure que el Postgres està funcionant, pots comprovar-ho fent:
$ /etc/init.d/postgresql-8.3 start o $ /etc/init.d/postgresql-8.3 restart
Efectivament, el servei està funcionant. Ara bé, per què no funciona
$ psql
Doncs perquè no sap on està. S'ha de posar la ruta en el path. I on està? Si s'edita el fitxer /etc/init.d/postgresql-8.3 es veu clarament on està:
/opt/PostgreSQL/8.3/bin
Per tant,
$ cd /opt/PostgreSQL/8.3/bin $ ./psql -h 192.168.0.15 -U postgres postgres
I el PostgreSQL ha de funcionar.
Aclariment II. Configuració de PostgreSQL amb una instal.lació neta de LINKAT
Instal.lem PostgreSQL amb el gestor de programari (Yast). Instal.lem el paquet postgresql-server, la versió 8.3.7
$ sudo /etc/init.d/postgresql start
joan@LINKAT-BBDD:$ psql psql: FATAL: Ident authentication failed for user "joan"
en instal.lar el LINKAT es crea un usuari del SO que s'anomena postgres, i amb aquest usuari sí que podem entrar al postgres:
joan$ sudo su postgres postgres$ psql postgres=> ALTER USER postgres WITH ENCRYPTED PASSWORD 'postgres'; postgres# \q
encara no ens podem connectar pel mètode tradicional:
$ psql -h localhost -p 5432 postgres -U postgres psql: FATAL: Ident authentication failed for user "postgres"
Fent
$ sudo passwd postgres
tampoc s'arregla la situació.
Els fitxers de configuració postgresql.conf i pg_hba.conf estan a /var/lib/pgsql/data
listen_addresses = 'localhost'
ident sameuser significa:
You're telling postgres to only accept users that exist in Linux, and that they need the Linux password.
i la manera de què funcioni és posar en el fitxer pg_hba.conf:
host all all 127.0.0.1 255.255.255.0 trust (no demana password) o bé host all all 127.0.0.1 255.255.255.0 password (sí demana password)
Recordem de reiniciar el postgres per tal que els canvis sorgeixin efecte:
$ sudo /etc/init.d/postgresql restart
$ psql -h localhost -p 5432 -U postgres postgres postgres#
(també funciona amb l'usuari joan o root)
Ara anem a crear un usuari de la base de dades nou, i aquest usuari crearà una base de dades pròpia.
$ psql -h localhost -p 5432 -U postgres postgres postgres=> CREATE USER pere WITH ENCRYPTED PASSWORD 'pere'; ROLE CREATED postgres => CREATE DATABASE peredb OWNER=pere; postgres => grant all privileges on database peredb to pere; (segurament no cal, doncs pere és el propietari) postgres => \q $ psql -h localhost -p 5432 -U pere peredb peredb =>
creat per Joan Quintana Compte, juny 2008