Introducción

PostgreSQL es un potente sistema de gestión de bases de datos objeto-relacionales, proporcionado bajo una licencia flexible de estilo BSD. PostgreSQL contiene muchas características avanzadas, es muy rápido y cumple con los estándares.

PostgreSQL tiene enlaces para muchos lenguajes de programación como C, C++, Python, Java, PHP, Ruby… Se puede utilizar para alimentar cualquier cosa, desde simples aplicaciones web hasta bases de datos masivas con millones de Registros.,

instalación del cliente

si solo desea conectarse a un servidor PostgreSQL externo, no instale el paquete PostgreSQL principal, sino instale el paquete PostgreSQL client en su lugar. Para hacer esto, use el siguiente comando

 sudo apt-get install postgresql-client

luego se conecta al servidor con el siguiente comando

 psql -h server.domain.org database user

después de insertar la contraseña, accede a PostgreSQL con comandos de línea., Por ejemplo, puede insertar lo siguiente

 SELECT * FROM table WHERE 1;

salga de la conexión con

 \q

instalación

para instalar el servidor localmente use la línea de comandos y escriba:

 sudo apt-get install postgresql postgresql-contrib

instale la última versión disponible en su versión de Ubuntu y los complementos comúnmente utilizados para ella.

consulte «Enlaces externos» a continuación para obtener opciones para obtener versiones más recientes.,

instalación de PostGIS, lenguajes de procedimiento, interfaces de cliente, etc

Los paquetes adicionales contienen tiempos de ejecución de lenguaje de procedimiento, complementos como PostGIS, interfaces de cliente de lenguaje como psycopg2 para Python, etc. Puede obtener un listado con:

 apt-cache search postgres

Administration

pgAdmin III es una GUI útil para PostgreSQL, es esencial para principiantes. Para instalarlo, escriba en la línea de comandos:

 sudo apt-get install pgadmin3

También puede usar el administrador de paquetes Synaptic desde el menú de administración del sistema> para instalar estos paquetes.,

configuración básica del servidor

para comenzar, necesitamos establecer la contraseña del usuario (rol) de PostgreSQL llamado «postgres»; de lo contrario no podremos acceder al servidor externamente. Como usuario local de Linux» postgres», se nos permite conectar y manipular el servidor usando el comando psql.

en un terminal, escriba:

sudo -u postgres psql postgres

esto se conecta como un rol con el mismo nombre que el usuario local, es decir,» postgres», a la base de datos llamada» postgres » (1er argumento para psql).,

establezca una contraseña para el rol de base de datos «postgres» utilizando el comando:

\password postgres

y proporcione su contraseña cuando se le solicite. El texto de la contraseña se ocultará de la consola por motivos de seguridad.

escriba Control+d O \q para salir del prompt de posgreSQL.

Create database

para crear la primera base de datos, que llamaremos «mydb», simplemente escriba:

 sudo -u postgres createdb mydb

Install Server Instrumentation (for PgAdmin) for Postgresql 8.4 or 9.3

PgAdmin requiere la instalación de un complemento para una funcionalidad completa., El complemento» adminpack», al que llama Server Instrumentation, es parte de postgresql-contrib, por lo que debe instalar ese paquete si aún no lo ha hecho:

 sudo apt-get install postgresql-contrib

luego para activar la extensión, para «» Postgresql 8.4″», ejecute el adminpack.script sql, simplemente escriba:

 sudo -u postgres psql < /usr/share/postgresql/8.4/contrib/adminpack.sql

para» Postgresql 9.3 «+ instale la extensión adminpack» en la base de datos «postgres»:

 sudo -u postgres psql CREATE EXTENSION adminpack;

Configuración alternativa del servidor

Si no tiene la intención de conectarse a la base de datos desde otras máquinas, esta configuración alternativa puede ser más simple.,

de forma predeterminada en Ubuntu, Postgresql está configurado para usar la autenticación ‘ident sameuser’ para cualquier conexión desde la misma máquina. Consulte la excelente documentación de Postgresql para obtener más información, pero esencialmente esto significa que si su nombre de usuario de Ubuntu es ‘foo’ y agrega ‘foo’ como usuario de Postgresql, entonces puede conectarse a la base de datos sin necesidad de una contraseña.,

dado que el único usuario que puede conectarse a una instalación nueva es el usuario postgres, aquí está cómo crear usted mismo una cuenta de base de datos (que en este caso también es un superusuario de base de datos) con el mismo nombre que su nombre de inicio de sesión y luego crear una contraseña para el usuario:

 sudo -u postgres createuser --superuser $USER sudo -u postgres psql
 postgres=# \password $USER

usando tu nombre de usuario de Ubuntu y espera encontrar una base de datos con ese nombre también., Así que para hacer las cosas realmente fáciles, utilice sus nuevos privilegios de superusuario otorgados anteriormente para crear una base de datos con el mismo nombre que su nombre de inicio de sesión:

 sudo -u postgres createdb $USER

conectarse a su propia base de datos para probar algo de SQL ahora debería ser tan fácil como:

 psql

crear una base de datos adicional es igual de fácil, así que, por ejemplo, después de ejecutar esto:

 create database amarokdb;

puede seguir adelante y decirle a Amarok que use PostgreSQL para almacenar su catálogo de música., El nombre de la base de datos sería amarokdb, el nombre de usuario sería su propio nombre de inicio de sesión, y ni siquiera necesita una contraseña gracias a ‘ident sameuser’ para que pueda dejarlo en blanco.

usando pgAdmin III GUI

para tener una idea de lo que PostgreSQL puede hacer, puede comenzar activando un cliente gráfico. En un tipo de terminal:

 pgadmin3

se le presentará la interfaz pgAdmin III. Haga clic en el botón» Agregar una conexión a un servidor » (arriba a la izquierda). En el cuadro de diálogo Nuevo, introduzca la dirección 127.0.0.1 (el host Local es el predeterminado, por lo que se puede omitir.,), una descripción del servidor, la base de datos predeterminada («mydb»en el ejemplo anterior), su nombre de usuario («postgres») y su contraseña. Se requiere un paso más para permitir que pgAdmin III se conecte al servidor, y es editar pg_hba.conf y cambie el método de autenticación de peer a md5 (no funcionará si no ha establecido la contraseña):

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

y cambie la línea

# Database administrative login by Unix domain socketlocal all postgres peer

a

ahora debe recargar los cambios de configuración del servidor y conectarse pgAdmin III a su servidor de base de datos PostgreSQL.,

sudo /etc/init.d/postgresql reload

Con esta GUI puede comenzar a crear y administrar bases de datos, consultar la base de datos, ejecutar SQl, etc.

administrar el servidor

para obtener más información sobre la administración de PostgreSQL (pero sin los detalles de Ubuntu), consulte la documentación oficial de PostgreSQL

Administrar usuarios y derechos

La administración de usuarios se discute en detalle en el capítulo de autenticación de cliente de la documentación de PostgreSQL; la siguiente es una introducción para comenzar.

para administrar usuarios, primero tiene que editar /etc/postgresql/current/main/pg_hba.,conf y modifique la configuración predeterminada que está muy bloqueada y segura. Por ejemplo, si desea que postgres administre sus propios usuarios (no vinculados con los usuarios del sistema), agregará la siguiente línea:

8<-------------------------------------------# TYPE DATABASE USER IP-ADDRESS IP-MASK METHODhost all all 10.0.0.0 255.255.255.0 md58<-------------------------------------------

lo que significa que en su red local (10.0.0.0/24 – reemplazar con su propia red local !), los usuarios de postgres pueden conectarse a través de la red a la base de datos proporcionando una pareja clásica de usuario / contraseña.

además de permitir que un usuario se conecte a través de la red a una base de datos en el servidor, debe habilitar PostgreSQL para escuchar a través de diferentes redes., Para ello, abra /etc/postgresql/current/main / postgresql.configue en su editor favorito y modifique las direcciones listen_addresses de la siguiente manera:

listen_addresses = '*'

para escuchar en todas las interfaces de red. Vea los documentos para listen_addresses para otras opciones.

para crear una base de datos con un usuario que tiene derechos completos sobre la base de datos, utilice el siguiente comando:

sudo -u postgres createuser -D -A -P myusersudo -u postgres createdb -O myuser mydb

la primera línea de comandos crea el usuario sin derechos de creación de base de datos (-D) sin derechos de usuario de adición-A) y le pedirá que introduzca una contraseña (-P)., La segunda línea de comandos crea la base de datos ‘mydb con’ myuser ‘ como propietario.

Este pequeño ejemplo probablemente se adapte a la mayoría de sus necesidades. Para más detalles, consulte las páginas de manual correspondientes o la documentación en línea.

reiniciar el servidor

después de configurar la red / usuarios es posible que necesite recargar el servidor, aquí hay un comando sugerido para hacerlo.

sudo /etc/init.d/postgresql reload

algunos cambios de configuración en postgresql.,conf requiere un reinicio completo, que terminará las conexiones activas y abortará las transacciones no comprometidas:

sudo /etc/init.d/postgresql restart

lectura adicional

si no está familiarizado con SQL, puede que desee buscar en este poderoso lenguaje, aunque algunos usos simples de PostgreSQL pueden no requerir este conocimiento (como un proyecto simple de Django).

el Sitio Web de PostgreSQL contiene una gran cantidad de información sobre el uso de esta base de datos. En particular, el tutorial es un punto de partida útil, pero puede omitir el paso de instalación, ya que ya lo ha instalado utilizando paquetes de Ubuntu.,

solución de problemas

fe_sendauth: no se proporciona contraseña

Su pg_hba.conf especifica que la autenticación md5 se utilizará para esta conexión en función del host de origen, el método de conexión y el nombre de usuario/Base de datos solicitados, pero la aplicación no proporcionó una contraseña.

cambie el modo de autenticación o establezca una contraseña para el usuario al que se está conectando y, a continuación, especifique esa contraseña en la configuración de conexión de la aplicación.,

FATAL: el rol «myusername» no existe

por defecto PostgreSQL se conecta al usuario PostgreSQL con el mismo nombre que el usuario unix actual. No ha creado un usuario PostgreSQL con ese nombre en su base de datos.

cree un usuario adecuado o especifique un nombre de usuario diferente para conectarse. En las herramientas de línea de comandos el indicador-U hace esto.

FATAL: base de datos «myusername» no existe

existe un usuario llamado «myusername», pero no hay base de datos con el mismo nombre.,

Por defecto PostgreSQL se conecta a la base de datos con el mismo nombre que el usuario con el que se está conectando, pero no crea automáticamente la base de datos si no existe.

cree la base de datos o especifique una base de datos diferente a la que conectarse.

FATAL: falló la autenticación de pares para el usuario «myusername»

se está conectando a localhost a través de un socket unix. Existe un usuario llamado «myusername», pero su usuario unix actual no es el mismo que ese nombre de usuario., PostgreSQL está configurado para usar autenticación «peer» en sockets unix para este combo Usuario/base de datos, por lo que requiere que sus nombres de usuario unix y postgresql coincidan.

conectar desde el usuario unix que coincide con el usuario PostgreSQL deseado-tal vez con sudo-u el nombre de usuario psql – o cambiar pg_hba.conf para usar un modo de autenticación diferente como » md5 » para este nombre de usuario.,

no se pudo conectar al servidor: No hay tal archivo o directorio

un error como este (posiblemente con una ruta de socket unix diferente, dependiendo de su instalación):

 psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

puede significar varias cosas:

* el servidor no se está ejecutando;

* el servidor tiene un unix_socket_directories diferente al predeterminado en libpq, ya sea debido a diferentes valores predeterminados compilados o a una configuración no coincidente;

* el servidor está escuchando en un «puerto»diferente., PostgreSQL emula puertos TCP / IP en sockets unix usando el número de puerto como sufijo para el archivo de socket, por ejemplo, 5432.

eliminarlos a su vez.

primero asegúrese de que el servidor se está ejecutando. En Ubuntu, ps-u postgres – f le mostrará cualquier proceso que se ejecute como usuario postgres-desea ver varios llamados postgres.

Ahora asegúrese de que el servidor está escuchando donde su cliente piensa que está. Para averiguar el directorio de sockets de su servidor PostgreSQL:

 sudo -u postgres psql -c "SHOW unix_socket_directories;"

o en versiones anteriores de PostgreSQL, unix_socket_directory como parámetro cambió el nombre., Para mostrar el puerto del servidor (que se aplica tanto a los sockets TCP/IP como a los Unix):

 sudo -u postgres psql -c "SHOW port;"

Si ni siquiera puede conectarse con psql bajo el usuario unix postgres puede comprobar el dir del socket con lsof:

 $ sudo lsof -U -a -c postgres COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME postgres 6565 postgres 5u unix 0xffff88005a049f80 0t0 183009 /tmp/.s.PGSQL.5432 postgres 6566 postgres 1u unix 0xffff88013bc22d80 0t0 183695 socket postgres 6566 postgres 2u unix 0xffff88013bc22d80 0t0 183695 socket

en este caso la primera línea es la ubicación del socket. Este servidor tiene el directorio socket / tmp con el puerto 5432.,

si su cliente está buscando en un directorio de sockets diferente, probablemente esté tratando de conectarse a través de sockets unix a la ruta de socket predeterminada y/o al puerto predeterminado, y el libpq al que está vinculada su aplicación cliente tiene una ruta de socket unix compilada y/o puerto diferente que su PostgreSQL en ejecución. Lo más probable es que su LD_LIBRARY_PATH o /etc/ld.so.conf tenga una libpq diferente antes de la que viene con su versión de PostgreSQL. Esto generalmente no importa mucho, solo puede anular el directorio de sockets.,

para especificar un directorio de socket alternativo y /port PUERTO al que conectarse, especifique el DIR de socket como parámetro host en sus opciones de conexión, por ejemplo, para conectarse como usuario bob al servidor que escucha en/tmp en el puerto 5433:

 psql -h /tmp -p 5433 -U bob ...

o en la forma de cadena de conexión:

 psql "host=/tmp port=5433 user=bob ..."

lo mismo funciona con cualquier cliente que use libpq (todas las herramientas del cliente PostgreSQL, más por ejemplo psycopg2, la gema PG en Ruby / Rails, Postgres y PDO de PHP, DBB::PG de Perl, etc.)., No funciona con clientes que no sean libpq como PgJDBC, py-postgresql, etc, pero la mayoría de estos no soportan sockets unix en absoluto. Consulte la documentación del cliente para clientes no basados en libpq.

descargas oficiales de PostgreSQL

El Proyecto PostgreSQL proporciona una lista oficial de ubicaciones de descarga, incluido un repositorio de software de Ubuntu, en su página de descargas. En particular, los usuarios de Ubuntu pueden obtener versiones PostgreSQL más recientes que las empaquetadas en su versión de Ubuntu usando apt-get via apt.postgresql.org.

para soporte y servicios alrededor de PostgreSQL vea la página Servicios y soporte.,

EnterpriseDB

la página de descargas de PostgreSQL Linux contiene una sección Sobre» instalador gráfico » construida por EnterpriseDB. Descargue el instalador, cambie sus propiedades para permitir ejecutarlo como comando (tiene .ejecutar extensión), y ejecutarlo desde el símbolo del sistema como en » sudo whateveritwas.ejecutar».

termina con

  • instancia de servidor DB configurada, que comienza con su servidor
  • aplicación cliente de interfaz de usuario pgAdmin III

tenga en cuenta que el software instalado no se integrará con Ubuntu software center., Como resultado, no recibirá ninguna actualización de seguridad de Ubuntu. Sin embargo, la versión instalada coincidirá estrechamente con la última versión de Ubuntu.

Linux llave en mano

un appliance PostgreSQL basado en Ubuntu es una de las formas más fáciles de ponerse en marcha con PostgreSQL en Ubuntu. Es parte de una familia de dispositivos de software Linux llave en mano preintegrados basados en Ubuntu 10.04.1 (Lucid LTS).