Pràctica ASI-C6-ASGBD: PostgreSQL I: instal.lació i consola. Configuració de xarxa. Arquitectura
Contingut
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