Instal.lació i configuració del Postgres

De Wikijoan
Dreceres ràpides: navegació, cerca

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

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines