PostgreSQL es un sistema de gestión de bases de datos relacional orientada a objetos, es un proyecto de código abierto dirigido por una comunidad de desarrolladores, publicada bajo la licencia BSD. Aquí es donde PostgreSQL saca amplia ventaja frente a MySQL, que es patrocinado por una empresa privada, que posee el copyright de la mayor parte del código.
Es multiplataforma, PostgreSQL corre en prácticamente cualquier sistema operativo y arquitectura actual.
Pero nosotros lo instalaremos en nuestro CentOS 6, donde encontraremos en los repositorios oficiales la versión 8.4, mas específicamente al día de hoy, la versión 8.4.7.
Instalar PostgreSQL
Es multiplataforma, PostgreSQL corre en prácticamente cualquier sistema operativo y arquitectura actual.
Pero nosotros lo instalaremos en nuestro CentOS 6, donde encontraremos en los repositorios oficiales la versión 8.4, mas específicamente al día de hoy, la versión 8.4.7.
Instalar PostgreSQL
yum install postgresql-server
Inicializar la base de datos
service postgresql initdb
Iniciar PostgreSQL
service postgresql start
Configurar para que se ejecute al inicio del sistema
chkconfig postgresql on
Las bases se alojan en /var/lib/pgsql/data
Cuando inicializamos PostgreSQL se crean los ficheros de configuración postgresql.con y pg_hba.conf que lo editaremos mas adelante
El usuario administrador de PostgreSQL es posgres y no posee contraseña, por seguridad le asignamos uno. Primeros nos logueamos con el usuario postgres
Cuando inicializamos PostgreSQL se crean los ficheros de configuración postgresql.con y pg_hba.conf que lo editaremos mas adelante
El usuario administrador de PostgreSQL es posgres y no posee contraseña, por seguridad le asignamos uno. Primeros nos logueamos con el usuario postgres
su - postgres
psql -c "ALTER user postgres WITH password 'contraseña'"
Crear una base de datos.
createdb midb
Para listar las bases existentes
psql -l
Listado de base de datos
Nombre | Dueño | Codificación | Collation | Ctype | Privilegios
-----------+----------+--------------+-------------+-------------+-----------------------
midb | postgres | UTF8 | es_ES.UTF-8 | es_ES.UTF-8 |
postgres | postgres | UTF8 | es_ES.UTF-8 | es_ES.UTF-8 |
template0 | postgres | UTF8 | es_ES.UTF-8 | es_ES.UTF-8 | =c/postgres
: postgres=CTc/postgres
template1 | postgres | UTF8 | es_ES.UTF-8 | es_ES.UTF-8 | =c/postgres
: postgres=CTc/postgres
(4 filas)
Para acceder a la base de datos
psql midb
psql (8.4.7)
Digite «help» para obtener ayuda.
midb=#
Pruebe la siguiente consulta
midb=# SELECT version();
version
-------------------------------------------------------------------------------------------------------------------
PostgreSQL 8.4.7 on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.4.4 20100726 (Red Hat 4.4.4-13), 64-bit
(1 fila)
Para salir de psql
midb=# \q
Editamos el fichero /var/lib/pgsql/data/postgresql.conf en la sección Connection Settings. El puerto por defecto de PostgreSQL es 5432 y por defecto viene comentado así como el parámetro listen_addresses, que su opción por defecto es localhost, lo que significa que solo escuchará conexiones desde el propio servidor.
#------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - #listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost', '*' = all # (change requires restart) #port = 5432 # (change requires restart)
En nuestro caso queremos que se conecten los clientes desde cualquier lado, por lo tanto la opción es un asterico. Editamos para que quede de esta manera:
#------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - listen_addresses = '*' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost', '*' = all # (change requires restart) port = 5432 # (change requires restart)
Editamos el fichero pg_hba.conf para especificar el método de autenficación de los clientes. Por defecto solo se habilita al propio servidor con la opción ident.
# 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
Agregamos nuestra red local para que cualquier usuario acceda a cualquiera de las bases con autentificación md5. También cambiamos ident por md5 para el propio servidor
# 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 # Red Local host all all 192.168.0.0/16 md5
Debemos reiniciar PostgreSQL
service postgresql restart
Dependiendo del método que utilicemos para configurar nuestro firewall, debemos permitir el acceso al puerto 5432 a nuestro servidor.
iptables -A INPUT -m tcp -p tcp --dport 5432 -j ACCEPT
Para acceder desde una maquina remota a la base de datos donde dbserver es el host (nombre del servidor o IP), postgres es el usuario y midb la base de datos al que quiero acceder.
psql -h dbserver -U postgres -d midb
Ya tenemos instalado PostgreSQL con una configuración básica donde podemos acceder remotamente a las bases de datos.
HOLA