This is an old revision of the document!
Instalar Postgres
Desafortunadamente, por defecto, Debian tiene una versión antigua de Postgres, entonces, tenemos que actualizar los Debian packages antes que instalar Postgres.
Para empezar, en el servidor, hay que editar el siguiente archivo:
sudo nano /etc/apt/sources.list.d/pgdg.list
(sudo
dice que va ejecutar el comando con privilegios administrativos (como “root”). La contraseña es la misma que su cuenta SSH. )
En el archivo, hay que agregar la siguiente linea y guardarlo:
deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main
Después, hay que bajar y instalar un signing key para verificar el package nuevo y instalarlo.
cd /home/cc3201/ wget --no-check-certificate --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Así hemos actualizado los packages de instalación de Debian.
Ahora, podemos instalar la versión actual de Postgres (9.6):
sudo apt-get update sudo apt-get install postgresql-9.6
Ahora sí, hay postgres.
El próximo problema es que el usuario de Postgres, por defecto, se llama postgres
y nuestro usuario es cc3201
, entonces si intentas con:
psql
dice
psql: FATAL: role "cc3201" does not exist
Pero, dado que tenemos sudo
, podemos usar el siguiente comando (su
: s
witch u
ser) para ingresar como el usuario postgres
.
sudo su postgres
Entonces podemos crear un usuario para cc3201
en Postgres:
createuser cc3201 -s
La opción -s
significa que cc3201
será un superuser (como postgres
) que tiene poder administrativo. Y tenemos que crear una base de datos para el usuario;
createdb -O cc3201 cc3201
Después, podemos salir de la cuenta de postgres
y regresar al usuario cc3201
:
exit
Ahora, podemos probar Postgres:
psql
cc3201=# SELECT version();
Finalmente, podemos crear un esquema (schema), que es como un grupo de tablas (aquí hay que reemplazar <nombre>
con el nombre del esquema que quieren tener):
cc3201=# CREATE SCHEMA <nombre>;
Para evitar tener que poner el esquema cada vez, se puede agregarlo al path del usuario:
cc3201=# ALTER USER cc3201 SET search_path TO <nombre>, public;
Ahora, se puede dar solo el nombre de una tabla en el esquema y no el nombre del esquema (p.ej. no hay que poner cc3201=# SELECT * FROM <nombre>.tabla
; funciona con SELECT * FROM tabla
).
Ahora están listos para crear tablas, cargar datos, armar indices, hacer consultas …