Skip to content

Instantly share code, notes, and snippets.

@ljaraque
Last active December 3, 2020 15:55
Show Gist options
  • Save ljaraque/afc7314928732f6347bd62786f135bc8 to your computer and use it in GitHub Desktop.
Save ljaraque/afc7314928732f6347bd62786f135bc8 to your computer and use it in GitHub Desktop.

Introducción a Postgres

1. Instalación Postgres

Debemos crear el script install_postgres_12.sh con el siguiente contenido:

# Ref: https://www.postgresql.org/download/linux/ubuntu/
# Create the file repository configuration:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Update the package lists:
sudo apt-get update

# Install the latest version of PostgreSQL.
# If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql':
sudo apt-get -y install postgresql-12 postgresql-client-12

La instalación habrá creado el usuario de administración postgres.

Posteriormente, creamos una password para el usuario postgres:

sudo -i -u postgres
psql -c "alter user postgres with password 'nuestra_password'"

Podemos revisar la versión de Postgres en funcionamiento:

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
12  main    5433 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
13  main    5434 online postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log

2. Entrando a la Consola Postgres

Cambio a usuario postgres en sistema operativo:

sudo -i -u postgres
psql

o en un sólo paso:

sudo -u postgres psql

3. Importando una BD existente

Si deseamos importar una base de datos llamada nombre_db.sql ejecutamos en el terminal del sistema operativo:

createdb "mibasededatos"
psql "mibasededatos" < mibasededatos.sql

or

createdb "mibasededatos"
pg_restore -c -d "mibasededatos" mibasededatos.sql

3. Comandos recurrentes en Postgres

Comando Descripción
\l Muestra todas las bases de datos
\c mibasededatos Conecta a base de datos mibasededatos
\d Muestra todas las tablas
\d nombretabla Describe la tabla nombretabla
\du Muestra todos los usuarios y roles
SELECT version(); Muestra la versión en uso de Postgres
\q Salir de Postgres

4. Creando un dump de una BD

pg_dump mibasededatos > mibasededatos.sql

5. Exploración Básica de la BD

pass

6. Creación de una BD

pass

7. Reiniciar postgres

pg_ctl -D <directorio_de_trabajo> -l logfile start

8. Instalar PGAdmin4

Debemos obtener el código oficial de Pgadmin4 desde el repositorio oficial:

git clone https://github.com/postgres/pgadmin4.git

Luego creamos el ambiente virtual para instalar las dependencias Python de Pgadmin4.

virtualenv -p python3.8 venv3.8
. venv3.8/bin/activate
pip install --upgrade pip
pip install -U wheel
sudo apt install python3.8-dev
sudo apt install libpq-dev
pip install -r requirements.txt

Debemos crear dos directorios en /var/:

sudo mkdir /var/lib/pgadmin
sudo mkdir /var/log/pgadmin

Debemos dar autorización de escritura (O propiedad) al usuario que ejecuta Pgadmin4, que a modo ilustrativo llamaremos usuario:

sudo chown usuario:usuario /var/lib/pgadmin/
sudo chown usuario:usuario /var/log/pgadmin/

Para ejecutar Pgadmin4 en nuestro ambiente local necesitamos crear el archivo web/config_local.py con un contenido como el que se muestra a continuación:

from config import *

# Debug mode
DEBUG = True

# App mode
SERVER_MODE = True

# Enable the test module
MODULE_BLACKLIST.remove('test')

# Log
CONSOLE_LOG_LEVEL = DEBUG
FILE_LOG_LEVEL = DEBUG

DEFAULT_SERVER = '127.0.0.1'

UPGRADE_CHECK_ENABLED = True

# Use a different config DB for each server mode.
if SERVER_MODE == False:
    SQLITE_PATH = os.path.join(
        DATA_DIR,
        'pgadmin4-desktop.db'
    )
else:
    SQLITE_PATH = os.path.join(
        DATA_DIR,
        'pgadmin4-server.db'
    )

Para ejecutar Pgadmin4 necesitaremos un conjunto de paquetes de node instalados.

En esta guía estamos utilizando nvm para el control de versiones de node. Para instalar nvm (Última versión 0.35.3 al momento de escribir este documento) ejecutamos:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

En caso de no tener la última versión de node, podemos instalarla con (En este caso es v12.18.3):

nvm install 12.18.3

Además necesitaremos el manejador de paquetes yarn, que podemos instalar con:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update
sudo apt install --no-install-recommends yarn

Luego de esto, podemos realizar la instalación de los paquetes de node ejecutando en el directorio principal del repositorio:

make install-node

En caso de existir notificaciones de vulnerabilidades, tales como:

found 1 low severity vulnerability
  run `npm audit fix` to fix them, or `npm audit` for details

durante la instalación podemos resolverlas, entrando al directorio web con:

npm i --package-lock-only
npm audit fix

Luego, volviendo al directorio raíz del proyecto, continuamos con:

make bundle

Finalmente, podemos ejecutar Pgadmin4 con:

python web/pgAdmin4.py

Durante la ejecución, Pgadmin4 nos solicitará un username y password que nos servirá para acceder a éste como administrador. Podemos usar, por ejemplo, admin@admin.comy admin4, respectivamente:

Con esto, podremos acceder a Pgadmin4 desde el navegador web de nuestra elección.

En este momento debemos proceder a agregar un servidor, con los siguiente datos:

General    --> Name               = un_nombre
Connection --> Host Name/Address  = localhost
Connection --> Username           = usuario_postgres
Connection --> Username           = password_postgres

En caso de no tener definida una password para nuestro usuario postgres podemos hacerlo con:

sudo -u usuario_postgres psql
usuario_postgres=# alter user postgres password 'password_postgres';
usuario_postgres=# \q
@ljaraque
Copy link
Author

Ok actualizado

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment