Instalación de PostgreSQL
Preparación para Windows
Para trabajar con PostgreSQL en Windows, es necesario habilitar el subsistema de Ubuntu.
Instalación
La instalación de PostgreSQL se realiza a través del terminal. A continuación, se presentan los comandos para MacOS, Windows y Ubuntu:
# Macos
brew install postgresql
# Ubuntu
sudo apt update
sudo apt install postgresql
# Windows Subsystem for Linux (WSL)
sudo apt install postgresql postgresql-contrib
Justo después de instalar PostgreSQL, se inicia automáticamente en la mayoría de los sistemas operativos en nombre del usuario recién creado, excepto en Windows Subsystem for Linux (WSL). Más adelante, necesitaremos el usuario `postgres`. También se creará una base de datos con el nombre `postgres`.
Iniciar PostgreSQL en Windows (WSL)
Al principio, será necesario establecer una contraseña para el usuario `postgres` recién creado. Esto se puede hacer con el siguiente comando:sudo passwd postgres
Además, a diferencia de Linux y MacOS, en Windows (WSL) PostgreSQL no se inicia automáticamente. Las siguientes comandos ayudan a corregir esto:
# Verifica el estado actual del servicio de la base de datos, es decir,
# muestra si PostgreSQL está en ejecución o no
sudo service postgresql status
# Comando para iniciar PostgreSQL
sudo service postgresql start
# Comando para detener PostgreSQL
sudo service postgresql stop
Verificación de la correcta instalación
Ahora, asegurémonos de que la instalación de PostgreSQL se haya realizado correctamente. Verifiquemos desde la línea de comandos si PostgreSQL está en ejecución:
ps aux | grep postgres
# La salida puede variar
# Lo importante es que encuentre una línea con el texto bin/postgres
postgres 3437 0.0 2.3 295008 24160 ? S 12:01 0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf
En su caso, la salida puede variar, pero lo más importante es ver la línea en la que se muestra el inicio de la base de datos. Si la base de datos está en ejecución, entonces debe intentar conectarse a ella. PostgreSQL viene con un programa especial llamado psql, que es una interfaz de línea de comandos interactiva (REPL). A través de él, puede administrar PostgreSQL y realizar consultas a las bases de datos directamente desde la terminal:
Conexión a PostgreSQL
La conexión siempre se realiza en nombre de un usuario específico y a una base de datos específica. Si no se especifica lo contrario, psql intentará conectarse en nombre del usuario que está ejecutando psql, a la base de datos con el mismo nombre.
En la base de datos en sí, se utiliza el concepto de rol
, no usuario.
psql
psql: FATAL: role "vagrant" does not exist
Si PostgreSQL aún no se ha configurado, este inicio dará un error, indicando claramente la falta de un rol correspondiente. El único rol que existe en PostgreSQL justo después de la instalación es postgres.
Si estás trabajando en MacOS, la conexión ya está configurada para tu usuario actual (se creará un rol con el mismo nombre durante la instalación). Sin embargo, la conexión utilizando el comando psql tampoco funcionará:
# En MacOS, la salida será diferente, ya que no existe una base de datos con el nombre
# que coincide con el nombre de usuario
psql
psql: FATAL: database "vagrant" does not exist
Para comprender mejor el tema de la conexión, hablemos sobre la autenticación. En PostgreSQL, existen muchos métodos diferentes de conexión. Uno de los métodos más simples se llama Autenticación Peer.
Está basado en la coincidencia de dos nombres:
- El nombre de usuario que se conecta a PostgreSQL.
- El nombre del rol dentro de PostgreSQL.
Como tenemos un usuario postgres por fuera y un rol postgres dentro de la base de datos, este método nos sirve:
# -u - indicador para especificar explícitamente el nombre de usuario
sudo -u postgres psql
postgres=#
Con este inicio de sesión, se realizará la conexión a la base de datos postgres con el rol postgres.
Si estás en MacOS, es suficiente especificar el nombre de la base de datos al iniciar el comando psql:
# Iniciar el programa en nombre del usuario actual para la base de datos postgres
psql postgres
postgres=#
Si tu salida coincide con el ejemplo, ¡felicitaciones! La conexión a PostgreSQL ha sido exitosa. Pero ingresar no lo es todo. También necesitarás saber cómo salir.
Comandos de control
Dentro de psql
, hay varios comandos de control disponibles. Todos ellos siguen un mismo principio: se preceden con una barra invertida \
, por ejemplo:
Para salir, debe escribir \q
- Para ver la lista completa de comandos, debe escribir \?
- El comando \?
carga un paginador que le permite desplazarse utilizando las combinaciones estándar de un editor de texto como Vim:
postgres=# \?
Informational
(options: S = show system objects, + = additional detail)
\d[S+] list tables, views, and sequences
\d[S+] NAME describe table, view, sequence, or index
\da[S] [PATTERN] list aggregates
\dA[+] [PATTERN] list access methods
\db[+] [PATTERN] list tablespaces
\dc[S+] [PATTERN] list conversions
\dC[+] [PATTERN] list casts
\dd[S] [PATTERN] show object descriptions not displayed elsewhere
\dD[S+] [PATTERN] list domains
\ddp [PATTERN] list default privileges
\dE[S+] [PATTERN] list foreign tables
\det[+] [PATTERN] list foreign tables
\des[+] [PATTERN] list foreign servers
\deu[+] [PATTERN] list user mappings
\dew[+] [PATTERN] list foreign-data wrappers
...
Posibles problemas
psql
psql: could not connect to database template1: 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"?
sudo service postgresql start
y volver a intentar la conexión.psql: command not found
. Esto indica que has ingresado un comando que no existe. Esto puede deberse a 3 razones:- Hay un error tipográfico en el nombre del comando.
- PostgreSQL está instalado incorrectamente.
- PostgreSQL no está instalado en absoluto.
Sin Comentarios