Introducción
PostgreSQL, o Postgres, es un sistema de gestión de bases de datos relacionales. Tiene la ventaja de ser compatible con los estándares y con muchas funciones avanzadas.
En este tutorial explicaremos cómo instalar Postgres en un VPS con Debian 9 Stretch.
Instalar PostgresSQL
Puede instalar PostgresSQL usando el repositorio oficial de Debian con apt.
Actualice la lista de paquetes:
sudo apt update
Instalar PostgresSQL
sudo apt install postgresql postgresql-contrib
Utilice PostgresSQL
Por defecto, Postgres usa un concepto llamado " roles " para manejar la autenticación y autorización, similar a las cuentas normales de estilo Unix.
En la instalación, Postgres está configurado para usar la autenticación de identificación, lo que significa que asocia los roles de Postgres con un usuario del sistema Linux correspondiente. Si hay un rol dentro de Postgres, con el mismo nombre que un usuario de Linux, podrán iniciar sesión como ese rol.
El procedimiento de instalación creó una cuenta de usuario llamada postgres asociada con el rol predeterminado de Postgres.
Hay varios procedimientos para usar esta cuenta y acceder a postgres.
Para iniciar sesión con el usuario de postgres, desde la terminal:
sudo -i -u postgres
Luego, para acceder al indicador de Postgres y administrar la base de datos, escriba;
psql
Para salir del indicador de Postgres, escriba:
\q
Crear un nuevo rol
Actualmente, solo tiene el rol de postgres configurado dentro de la base de datos. Puede crear nuevos roles desde la línea de comando con el comando crearlos. La opción --interactive le pedirá el nombre del nuevo rol y si debe habilitar los permisos de superusuario.
Si aún tiene el indicador de postgres activo, escriba:
\q
Si ha iniciado sesión con la cuenta de postgres, puede crear un nuevo usuario con el siguiente comando:
createuser --interactive
Si ha iniciado sesión con otra cuenta que aún no está asociada con postgres, use el siguiente comando:
sudo -u postgres createuser --interactive
Se le pedirá que ingrese un nombre para el nuevo rol y que le asigne privilegios de superusuario.
Enter name of role to add: noviello
Shall the new role be a superuser? (y/n) y
Crea una nueva base de datos
El sistema de autenticación de Postgres asocia de forma predeterminada el rol con una base de datos con el mismo nombre.
Entonces, si el usuario creado anteriormente se llama noviello, ese rol intentará conectarse a una base de datos que también se llama noviello por defecto. Puede crear la base de datos adecuada con el comando createdb.
Si ha iniciado sesión con la cuenta de postgres, puede crear una nueva base de datos con el siguiente comando:
createdb noviello
Si ha iniciado sesión con otra cuenta que aún no está asociada con postgres, use el siguiente comando:
sudo -u postgres createdb noviello
Para acceder al indicador de Postgres con el nuevo rol que se acaba de crear, debe existir un usuario de Linux, en este caso en Debian, con el mismo nombre que se le dio al rol y a la base de datos.
Si no hay ningún usuario con este nombre, puede crear uno con el comando adduser.
Realice este procedimiento con una cuenta de usuario que no sea postgres.
Para crear un nuevo usuario:
sudo adduser noviello
Ahora podemos conectarnos con el nuevo usuario a la base de datos y usar el indicador de postgres:
sudo -i -u noviello
psql
Para conectarse a una base de datos diferente con el usuario actual:
psql -d postgres
Para obtener información sobre la conexión actual:
\conninfo
Debería ver un mensaje de respuesta similar a este:
You are connected to database "noviello" as user "noviello" via socket in "/var/run/postgresql" at port "5432".
Agregar y eliminar datos en tablas
El siguiente es un ejemplo de creación de una tabla:
CREATE TABLE test (
id serial PRIMARY KEY,
esempio_1 varchar (50) NOT NULL,
esempio_2 varchar (25) NOT NULL,
esempio_3 varchar(25) check (esempio_3 in ('valore_1', 'valore_2', 'valore_3', 'valore_4', 'valore_5', 'valore_6', 'valore_7', 'valore_8')),
data_ins date
);
Para ver la tabla recién creada:
\d
Debería ver un mensaje de respuesta similar a este:
List of relations
Schema | Name | Type | Owner
--------+-------------------------+----------+---------
public | test | table | noviello
public | test_id_seq | sequence | noviello
(2 rows)
Para ver la tabla sin más información:
\dt
Debería ver un mensaje de respuesta similar a este:
List of relations
Schema | Name | Type | Owner
--------+------------+-------+---------
public | test | table | noviello
(1 rows)
Para insertar nuevos valores en la tabla:
INSERT INTO test (esempio_1, esempio_2, esempio_3, data_ins) VALUES ('valore_1', 'valore_2', 'valore_3', '2018-06-29');
INSERT INTO test (esempio_1, esempio_2, esempio_3, data_ins) VALUES ('valore_4', 'valore_5', 'valore_6', '2018-06-29');
Para recuperar la información que acaba de ingresar:
SELECT * FROM test;
Debería ver un mensaje de respuesta similar a este:
id | esempio_1 | esempio_2 | esempio_3 | data_ins
----+-----------+-----------+-----------+------------
1 | valore_1 | valore_2 | valore_3 | 2018-06-29
2 | valore_4 | valore_5 | valore_6 | 2018-06-29
(2 row)
Para eliminar una fila de la base de datos:
DELETE FROM test WHERE esempio_1 = 'valore_1';
Recupere la información de la base de datos nuevamente para verificar que la fila fue eliminada:
SELECT * FROM test;
Debería ver un mensaje de respuesta similar a este:
id | esempio_1 | esempio_2 | esempio_3 | data_ins
----+-----------+-----------+-----------+------------
2 | valore_4 | valore_5 | valore_6 | 2018-06-29
(1 row)
Eliminar y agregar columnas en tablas
Para agregar una columna a la base de datos:
ALTER TABLE test ADD altro date;
Para ver los cambios, repita el siguiente comando:
SELECT * FROM test;
Debería ver un mensaje de respuesta similar a este:
id | esempio_1 | esempio_2 | esempio_3 | data_ins | altro
----+-----------+-----------+-----------+------------+-----------
2 | valore_4 | valore_5 | valore_6 | 2018-06-29 |
(1 row)
Para eliminar una columna:
ALTER TABLE test DROP altro;
Para ver los cambios, repita el siguiente comando:
SELECT * FROM test;
Debería ver un mensaje de respuesta similar a este, por lo que sin la columna creada anteriormente:
id | esempio_1 | esempio_2 | esempio_3 | data_ins
----+-----------+-----------+-----------+------------
2 | valore_4 | valore_5 | valore_6 | 2018-06-29
(1 row)
Cambiar los datos en una tabla
Para modificar los datos, debe especificar el nombre de la base de datos y la columna que desea modificar:
UPDATE test SET esempio_2 = 'nuovo_valore' WHERE esempio_1 = 'valore_4';
Para ver los cambios, repita el siguiente comando:
SELECT * FROM test;
Debería ver un mensaje de respuesta similar a este:
id | esempio_1 | esempio_2 | esempio_3 | data_ins
----+-----------+-----------+-----------+------------
2 | valore_4 | nuovo_valore | valore_6 | 2018-06-29
(1 row)
Conclusión
La instalación de PostgreSQL en Debian 9 Stretch ha finalizado.