Volver al blog

Instalar Postgresql utilizando brew

Resumen Técnico & Objetivo

Si vas utilizar una base de datos relacional Postgresql en una buena opción y en esta ocasión vamos a instalarlo utilizando Homebrew. Como breviario cultural homebrew es el mane...


Si vas utilizar una base de datos relacional Postgresql en una buena opción y en esta ocasión vamos a instalarlo utilizando Homebrew.

Como breviario cultural homebrew es el manejador de paquetes para OSX.

Instalamos Postgresql

  1. Como primer paso hay que actualizar brew
$ brew update
$ brew doctor
  1. Intalamos Postgresql
$ brew install postgresql

Listo ya tenemos instalado PostgreSql, y lo verificamos de la siguiente forma.

$ postgres --version
postgres (PostgreSQL) 10.1
  1. Lanzamos el servicio
$ brew services start postgresql

Trabajando con PSQL

PSQL es una terminal interactiva, a partir de aquí vamos hacer algunas operaciones básicas

  1. Creamos una base de datos
$ psql postgres
psql (10.1)
Type "help" for help.
postgres=# CREATE ROLE userdemo WITH LOGIN PASSWORD 'userdemo';
postgres=# CREATE DATABASE mydb;
postgres=# GRANT ALL PRIVILLEGES ON DATABASE mydb TO userdemo

Si no reconoce el comando puedes utilizar la opción siguiente

$ /usr/local/Cellar/postgresql/10.1/bin/createdb mydb
  1. Creamos una tabla
$ psql mydb
mydb=# create table tasks(
mydb(# id int,
mydb(# description varchar(50),
mydb(# status int,
mydb(# active boolean);
  1. Insertamos datos a la tabla creada
mydb=# insert into tasks values (1, 'make a coffe', 2,true);
INSERT 0 1
  1. Consultamos datos
mydb=# select * from tasks;
 id | description  | status | active 
----+--------------+--------+--------
  1 | make a coffe |      2 | t
(1 row)

Logs

Para poder ver los logs

$ tail -f /usr/local/var/log/postgres.log

Comandos básicos

  1. Mostrar la tablas \dt
mydb=# \dt
             List of relations
 Schema | Name  | Type  |      Owner       
--------+-------+-------+------------------
 public | tasks | table | saidmoraleslemus
(1 row)
  1. Mostrar la estructura de una tabla \d tasks
mydb=# \d tasks
                         Table "public.tasks"
   Column    |         Type          | Collation | Nullable | Default 
-------------+-----------------------+-----------+----------+---------
 id          | integer               |           |          | 
 description | character varying(50) |           |          | 
 status      | integer               |           |          | 
 active      | boolean               |           |          | 

Modifcar la configuración

Por default todas las entradas son confiables es decir si entramos a la base de datos no nos pide la contraseña

Si queremos que siempre nos pida la contrasela tenemos que modificar el archivo pg_hba.conf y se debe cambiar el metodo trust por password

$ cat /usr/local/var/postgres/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

Quedando de la siguiente forma

$ cat /usr/local/var/postgres/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     password
# IPv4 local connections:
host    all             all             127.0.0.1/32            password
# IPv6 local connections:
host    all             all             ::1/128                 password
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     password
host    replication     all             127.0.0.1/32            password
host    replication     all             ::1/128                 password

Reiniciamos el server

$ brew services restart postgres

Y listo cuando tratamos de entrar nos pide la contraseña

Password for user userdemo:  

mydb=>