This is an old revision of the document!
Table of Contents
Configurar Postgres
Su máquina ya tiene Postgres 17 instalado y funcionando, así que no hay que instalar nada. En esta página van a crear su usuario de Postgres, su base de datos y un esquema para las tablas del proyecto. Toma unos 10 minutos.
Todos los comandos de esta página se ejecutan dentro del servidor, después de entrar por SSH (ver Acceso al servidor). En los ejemplos usamos la máquina 40 y un esquema llamado peliculas; ustedes usan su número de grupo y el nombre que quieran.
Qué hay dentro de Postgres
Antes de empezar, conviene tener claro qué es cada cosa que vamos a crear:
| Término | Qué es |
|---|---|
| Postgres (o PostgreSQL) | El sistema de bases de datos del curso. Es un programa que queda corriendo en su máquina y responde consultas SQL. |
| psql | El cliente de Postgres para la terminal. Con él escriben SQL y ven los resultados. |
| rol | Un usuario de Postgres. Es distinto del usuario de Linux, aunque aquí los dos se llamen cc3201. |
| superusuario | Un rol que puede hacer cualquier cosa en Postgres (crear bases, esquemas, otros roles). |
| base de datos | Un contenedor de esquemas. Un mismo Postgres puede tener varias bases; ustedes van a usar una sola, cc3201. |
| esquema (schema) | Una carpeta de tablas dentro de una base. Sirve para agrupar las tablas del proyecto y no mezclarlas con otras. |
| search_path | La lista de esquemas donde Postgres busca una tabla cuando no le dicen el esquema. |
Paso 1: el error inicial
Si entran a psql recién llegados, falla:
psql
Esto es esperable. psql intenta entrar a Postgres con un rol del mismo nombre que su usuario de Linux (cc3201), y ese rol todavía no existe. Postgres viene solo con el rol administrador, que se llama postgres. (La parte del socket del mensaje es la vía interna por la que psql habla con Postgres dentro de la misma máquina; no hay que hacer nada con eso.)
Paso 2: crear su rol y su base de datos
Como tenemos sudo, podemos cambiarnos al usuario postgres de Linux, que sí puede administrar Postgres (su: switch user):
sudo su postgres
sudo pide la contraseña de SSH. La línea de comandos cambia a postgres@cc3201-XX:/home/cc3201$, lo que indica que ahora son el usuario postgres. Entonces creamos el rol cc3201 en Postgres:
createuser cc3201 -s
La opción -s significa que cc3201 será un superuser (como postgres), así no van a tener problemas de permisos durante el proyecto. Ahora creamos una base de datos que se llame igual que el rol, con cc3201 como dueño (-O es owner):
createdb -O cc3201 cc3201
La base se llama igual que el rol porque psql, si no le dicen otra cosa, entra a la base con el nombre del rol. Así basta con escribir psql, sin opciones.
Si ninguno de los dos comandos imprime nada, funcionaron. Después, salimos de la cuenta de postgres y volvemos al usuario cc3201:
exit
Así se ve el paso completo:
Paso 3: probar Postgres y crear su esquema
Ahora psql debería funcionar:
psql
La línea de comandos cambia a cc3201=#. El cc3201 es la base en la que están y el # indica que son superusuario. Dentro de psql, cada instrucción SQL termina en ; (si se les olvida, psql espera más texto y la línea cambia a cc3201-#; escriban ; y Enter). Para salir de psql, \q.
Para ver la versión:
cc3201=# SELECT version();
Debería responder con una línea que empieza con PostgreSQL 17.
Luego creamos un esquema para las tablas del proyecto. Hay que reemplazar <nombre> con el nombre que quieran, en minúsculas y sin espacios ni tildes (por ejemplo peliculas):
cc3201=# CREATE SCHEMA <nombre>;
Sin más, para usar una tabla del esquema habría que escribir siempre <nombre>.tabla. Para no tener que hacerlo, agregamos el esquema al search_path del usuario:
cc3201=# ALTER USER cc3201 SET search_path TO <nombre>, public;
Esto le dice a Postgres: “cuando pida una tabla sin esquema, búscala primero en <nombre> y después en public”. También define dónde quedan las tablas nuevas, porque CREATE TABLE sin esquema crea la tabla en el primero de la lista. public es un esquema que viene creado en toda base de datos.
Paso 4: comprobar el search_path
El cambio de search_path corre desde la próxima vez que entren a psql. Hay que salir con \q y volver a entrar; si no, las tablas que creen en esa misma sesión quedan en el esquema public. En la sesión nueva:
cc3201=# SHOW search_path;
Debería responder <nombre>, public. Si responde “$user”, public, todavía están en la sesión antigua.
Ahora se puede usar el nombre de una tabla sin el esquema (p.ej., SELECT * FROM tabla en vez de SELECT * FROM <nombre>.tabla).
Están listos para crear tablas, cargar datos, armar índices y hacer consultas. Cuando necesiten conectarse desde su notebook o desde la aplicación, sigan con Conexión externa.





