:::: MENU ::::

Instalando PostgreSQL 8.4 en CentOS 6.x

El tema de las Bases de Datos Relacionales LIBRES, es bastante extenso, con muchas opciones para elegir, tenemos MySQL de Oracle, MariaDB (Un fork que pretende mantener todas las bondades de MySQL pero en manos de la comunidad, sin depender de lo que Oracle desee hacer con el proyecto), Firebird, PostgreSQL, SQLlite, entre otros… Muchos opinan que MySQL cumple con la mayoría de las exigencias, y por eso vemos la mayoría de los sistemas web en PHP, usando BD relacionales con MySQL, ahora,  y si MySQL queda corto y no deseamos usar BD No Relacionales (NoSQL)?… Pues, la respuesta para mucho es usar PostgreSQL, un motor de base de datos que según opiniones es muy estable y robusto.

PostgreSQL

PosgreSQL es un sistema gestor de base de datos relacional orientado a objetos, tiene licencia BSD (Dato: El proyecto nació en la Universidad de Berkeley), este sistema es desarrollado por la comunidad y no tiene una empresa que dirige el proyecto, pero si hay empresas que aportan para continuar con el desarrollo.

Las características destacable de este SGBD es su alta concurrencia aplicando MVCC (Acceso concurrente multiversión, por sus siglas en inglés), PostgreSQL soporta tipos de datos nativos muy útiles como direcciones IP (v4 y v6), direcciones MAC, Arrays, Texto de largo ilimitado y figuras geométricas.

Al ser libre puede ser usado en cualquier proyecto teniendo en cuenta el tipo de licencia BSD.

PostgreSQL esta disponible para diferentes plataformas.

Instalación

En este caso, instalaré PostgreSQL en CentOS 6, la instalación es sencilla; Hay que mencionar que la versión en los repositorios oficiales es la 8.4, suficiente para trabajar (Actualmente la versión oficial de PostgreSQL es la 9.2) .

Primer paso para la instalación:

[root@localhost ~]# sudo yum install -y postgresql-server
======================================================================================================================================================
 Package                                   Arch                           Version                                  Repository                    Size
======================================================================================================================================================
Installing:
 postgresql-server                         x86_64                         8.4.13-1.el6_3                           base                         3.4 M
Installing for dependencies:
 postgresql                                x86_64                         8.4.13-1.el6_3                           base                         2.8 M
 postgresql-libs                           x86_64                         8.4.13-1.el6_3                           base                         200 k

Transaction Summary
======================================================================================================================================================
Install       3 Package(s)

Inicializar y definir los directorios de datos (PGDATA) de un “cluster” PostgreSQL

[root@localhost ~]# service postgresql initdb
Initializing database:                                     [  OK  ]

Documentación

Iniciar el servicio

[root@localhost ~]# service postgresql start
Starting postgresql service:                               [  OK  ]

Activar el servicio para que inicie con el sistema

[root@localhost ~]# chkconfig postgresql on

Acceder al usuario “root” de PostgreSQL llamado “postgres”

En esta parte del proceso, se accederá al usuario, asignaremos una contraseña y crearemos un usuario llamado “prueba”.

[root@localhost ~]# su - postgres
-bash-4.1$ psql -c "alter user postgres with password '123'"
ALTER ROLE
-bash-4.1$ createuser -P -d prueba
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Password:
-bash-4.1$

El parámetro -P es para asignar una contraseña al usuario y -d permite que el nuevo usuario pueda crear nuevas base de datos del usuario.

Accediendo al cliente de PostgreSQL mediante consola

Para acceder a la consola usamos el cliente psql, y con el comando psql -d base_de_datos -U usuario -W , podemos gestionar una base de datos “X” con un usuario “Y”.

Ahora bien, antes de usar el usuario “prueba” hay que asignarle y/o crearle una BD.

-bash-4.1$ createdb --owner prueba --encoding UNICODE pruebadb
Password:
-bash-4.1$ psql -l
Password:
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges  
-----------+----------+----------+-------------+-------------+-----------------------
 admin     | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 pruebadb  | prueba   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres
(5 rows)
-bash-4.1$ exit
logout

Probamos ahora…

[root@localhost ~]# psql -U prueba -W
Password for user prueba:
psql: FATAL:  Ident authentication failed for user "prueba"

 No se puede acceder con el usuario y contraseña.

Configurando para permitir inicio de sesión con usuario y contraseña.

Abrir el archivo /var/lib/pgsql/data/pg_hba.conf

[root@localhost ~]# vi /var/lib/pgsql/data/pg_hba.conf

Y modificar esto

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
# IPv6 local connections:
host    all         all         ::1/128               ident

Por esto

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               md5  
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

Ahora, se reinicia el servicio e intentamos de nuevo.

[root@localhost ~]# vi /var/lib/pgsql/data/pg_hba.conf
[root@localhost ~]# service postgresql restart
Stopping postgresql service:                               [  OK  ]
Starting postgresql service:                               [  OK  ]
[root@localhost ~]# psql -d pruebadb -U prueba -W
Password for user prueba:
psql (8.4.13)
Type "help" for help.

pruebadb=>

Creando una tabla

Crear una tabla es similar que en otros motores que usan SQL, a diferencia que algunos tipos de datos están o no disponibles para su uso.

pruebadb=>  create table usuarios (
pruebadb(>   nombre varchar(30),
pruebadb(>   clave varchar(10)
pruebadb(>  );

Listar las tablas de la base de datos

pruebadb=> dt
         List of relations
 Schema |   Name   | Type  | Owner  
--------+----------+-------+--------
 public | usuarios | table | prueba
(1 row)

Listando los campos de la tabla usuario

pruebadb=> SELECT table_name,column_name,udt_name,character_maximum_length
pruebadb->   FROM information_schema.columns WHERE table_name = 'usuarios';
 table_name | column_name | udt_name | character_maximum_length
------------+-------------+----------+--------------------------
 usuarios   | nombre      | varchar  |                       30
 usuarios   | clave       | varchar  |                       10

Finalizando

Instalar el servidor de base de datos es sencillo, ahora toca aprender a usar PostgreSQL mas a fondo, jugando con su sintaxis y su forma de manejar las base de datos.

Espero que le sea de gran ayuda este post. Saludos!
:)

Comentarios

comentarios