Pràctica ASI-C6-ASGBD: PostgreSQL I: instal.lació i consola. Configuració de xarxa. Arquitectura

De wikijoan
Salta a la navegació Salta a la cerca

Instal.lació

apt-get install postgresql-8.1

Configuració

Un cop instal.lat el Postgres hem d'accedir al compte postgres del SO. Com que l'usuari postgres per defecte no té password (no està habilitat, igual que root), només podem fer su postgres si som root (sudo bash) o com a superusuaris (sudo).

joan$ sudo bash # OK Sudo es un comando que permite otorgarle a un usuario normal (no privilegiado) los derechos suficientes para ejecutar ya sea comandos privilegiados o en general para ejecutar programas bajo la identidad de usuario (privilegiado o no) del sistema. 
root$ su postgres #OK
postgres$ psql
postgres => \q
postgres$

també hauríem pogut fer sudo su postgres, i ens demana el password de joan. No cal passar per root

Fixar-se que per connectar-nos com a postgres primer hem hagut de ser root.

Postgres és un usuari, i per defecte també és grup (tots els usuaris per defecte tenen un grup igual que el username). Incloc com a membres del gru postgres els usuaris root i joan.

Una possibilitat per no fer totes aquestes martingales és ficar un password a l'usuari postgres:

 $ sudo passwd postgres

i aleshores ja podem fer su postgres sense haver de passar per el root o el super-admin (sudo)

Hem pogut connectar-nos a Postgres amb l'opció més senzilla: psql. Per defecte vol connectar-se a la base de dades postgres amb el usuari de Postgres postgres. Com que existeixen, la comanda psql sola funciona. Ara bé, la forma més general és

$ psql -h localhost -p 5432 -U postgres -d postgres
postgres=>

on especifico la base de dades a la que vull connectar-me i l'usuari (de Postgres) amb el que vull connectar-me.

La comanda su s'utilitza per tal que un usuari pugui connectar-se temporalment com un altre usuari. Ara bé, en el nostre cas, com que l'usuari postgres no existeix, su postgres significa que volem que l'usuari joan agafi el rol de l'usuari postgres. Però per fer-ho ho he de fer com a super-admin. Per tant:

joan# sudo su postgres 
postgres#

Per assignar un password a l'usuari postgres (en el procés d'instal.lació es crea l'usuari postgres sense password)

postgres=> ALTER USER postgres WITH ENCRYPTED PASSWORD 'secret';

o ens connectem a la bd postgres (que existeix per defecte)

$ psql -h localhost -p 5432 -U postgres -d postgres

podem crear una base de dades (compte amb el charset que utilitzem)

CREATE DATABASE gugel encoding='LATIN1';
$ psql -h localhost -p 5432 -U postgres -d gugel

creació d'usuaris

Si volem connectar-nos amb un altre usuari que no sigui el postgres, l'haurem de crear (respondre que sí a tot) i assignar-li un pwd. Hi ha dues maneres de fer, que són equivalents:

  • primera: comanda createuser que executa l'usuari postgres del SO
joan@ubuntu:~$ sudo bash
root@ubuntu:~# su postgres
postgres@ubuntu:/home/joan$ createuser pere5
Shall the new role be a superuser? (y/n) y
CREATE ROLE
$ psql -h localhost -p 5432 -U postgres -d postgres
postgres# ALTER USER pere5 WITH ENCRYPTED PASSWORD 'pere5';
ALTER ROLE

fixem-nos que per connectar-nos a postgres ho he de fer des de root, perquè no té password assignat

  • segona: comanda CREATE USER que executa l'usuari postgres de Postgres:
$ psql -h localhost -p 5432 -U postgres -d postgres
postgres=> CREATE USER pere6;
ROLE CREATED
postgres=> ALTER USER pere6 WITH ENCRYPTED PASSWORD 'pere6';
ALTER ROLE

També es podia fer:

postgres=> CREATE USER pere6 WITH ENCRYPTED PASSWORD 'pere6';

aquests usuaris són usuaris de postgres (ROLE CREATED), no del SO

i ara ja puc connectar-me a un d'aquests usuaris:

$ psql -h localhost -p 5432 -U pere6
$ #error! es pensa que em vull connectar a una bd que es diu pere6, que no existeix
$ psql -h localhost -p 5432 -U pere6 -d postgres
postgres=>

Configurar els arxius pg_hba.conf i postgresql.conf

els fitxers es troben dins de /etc/postgresql/8.2/main

  • postgresql.conf
#port = 5432
listen_addresses = '*'
  • pg_hba.conf

si hi ha problemes hem de donar permisos sobre l'arxiu (chmod a+rw pg_hba.conf).

a+rw vol dir donar els permisos de lectura i escriputra a tothom (a: user, group, root)

# All IPv4 connections from localhost

host all all 0.0.0.0 0.0.0.0 password

i reiniciem el servei:

joan@ubuntu:/etc/init.d$ sudo ./postgresql-8.2 restart

Accedir des de la xarxa

des de l'equip remot accedim a la bd del servidor:

$ psql -h 192.168.1.130 postgres
postgres=> \c gugel
gugel#

Des de la línia de comandes del postgres també podem canviar la connexió

postgres=> \c  postgres pere6 localhost 5432
You are now connected to database "postgres".

o bé

postgres=> \c  postgres pere6 192.168.1.130 5432

També:

# GRANT ALL PRIVILEGES ON DATABASE yourdatabase TO youruser;

Començar a treballar

postgres => CREATE DATABASE socrathos WITH ENCODING='LATIN1' OWNER=socrathos;
postgres => 
grant all privileges on database socrathos to socrathos;

Anem a executar el script de creació de les taules:

fico el script creacio_taules.txt a /home/joan/Documents

em connecto a la base de dades socrathos:

postgres =>\c socrathos socrathos localhost 5432
socrathos=>

Des de la línia de comandes de la base de dades socrathos

socrathos=> \i /home/joan/Documents/creacio_taules.sql

i funciona!!

Instal·lació a Linkat

http://linkat.xtec.net/portal/index.php?module=pnForum&func=viewtopic&topic=1507&start=0