PostgreSQL es una base de datos de código abierto admitida en todo el mundo. Con más de 30 años de servicio, PostgreSQL, gracias a los diversos complementos disponibles, es famoso por su solidez, escalabilidad y rendimiento.
Primero, conéctese a su servidor a través de una conexión SSH. Si aún no lo ha hecho, se recomienda seguir nuestra guía para conectarse de forma segura con SSH. En caso de un servidor local, vaya al siguiente paso y abra la terminal de su servidor.
Instalación de PostgreSQL
Para continuar con la instalación de PostgreSQL, use el administrador de paquetes apt. Asegúrate de actualizar el caché:
$ sudo apt update && sudo apt install postgresql postgresql-contrib
Una vez completada la instalación, el servicio estará disponible de inmediato. Verifique el archivo de registro en /var/log/postgresql/postgresql-10-main.log solo para asegurarse
# tail /var/log/postgresql/postgresql-10-main.log
...LOG: database system is ready to accept connections
...
Si todo funciona correctamente, el texto anterior estará en las últimas líneas del archivo de registro.
Verificando la instalación
Para verificar la instalación exitosa de PostgreSQL, use el cliente de línea de comando llamado psql. Primero, use el usuario predeterminado instalado por el servicio. Para acceder a la base de datos, el proceso de autenticación de la configuración por defecto de PostgreSQL utiliza los mismos usuarios del sistema.
Para iniciar sesión con el usuario predeterminado, desde la línea de comandos, ejecute
$ sudo -i -u postgres
Ahora, inicie el cliente y use el comando \l para ver la lista de las bases de datos disponibles:
$ sudo -i -u postgres
$ psql
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
postgres=# \q
[email protected]:~$ exit
Una vez completado, salga del cliente con el comando \q y regrese al usuario original escribiendo 'salir'.
Administración de usuarios y permisos
Como se mencionó anteriormente, PostgreSQL asume que cada usuario presente en su servicio también está presente en el sistema. Para crear un nuevo usuario, primero agréguelo al sistema a través de adduser:
$ sudo adduser tutorial
Adding user `tutorial' ...
Adding new group `tutorial' (1000) ...
Adding new user `tutorial' (1000) with group `tutorial' ...
Creating home directory `/home/tutorial' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for tutorial
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
En el siguiente ejemplo se está creando un usuario llamado "tutorial", sin especificar otra información, como el nombre o el número de teléfono. Una vez completado, se puede crear el usuario de PostgreSQL. iniciando sesión primero con el usuario de postgres:
$ sudo -i -u postgres
$ createuser --interactive
Enter name of role to add: tutorial
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Después de crear el usuario, establezca una contraseña, inicie sesión a través del superusuario postgres y modifique el usuario que acaba de crear:
$ psql
postgres=# ALTER USER tutorial PASSWORD 'password'; ALTER ROLE;
También se puede crear una base de datos para el usuario recién creado ejecutando el comando:
$ createdb tutorial
Una vez completado, cierre la sesión e intente iniciar sesión con el usuario recién creado:
$ sudo -i -u tutorial
[email protected]:~$ psql
psql (10.9 (Ubuntu 10.9-0ubuntu0.18.04.1))
Type "help" for help.
tutorial=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
tutorial | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
Habilitación del acceso a clientes externos
En algunos casos, puede ser necesario permitir el acceso de clientes externos (por ejemplo, su máquina) a una o más bases de datos en el servidor. Normalmente, PostgreSQL no está configurado para aceptar conexiones que no sean locales, así que modifique algunos archivos de configuración.
El primer archivo que se modificará es el archivo de configuración principal, en /etc/postgresql/10/main/postgresql.conf.
Asegúrese de editar la siguiente línea de:
listen_addresses = 'localhost'
Con:
listen_addresses = '*'
De esta manera le informa a PostgreSQL que espere conexiones entrantes desde cualquier interfaz de red.
Asegúrese de guardar su cambio. Ahora pase a editar el archivo que administra las reglas de acceso al servidor en /etc/postgresql/10/main/pg_hba.conf, agregando la siguiente línea:
host tutorial tutorial 0.0.0.0/0 md5
Esta modificación permite al usuario "tutorial" acceder a su base de datos desde cualquier host. En concreto, los campos indicados son:
host:el tipo de conexión que está aceptando. Los valores posibles son:
- local:conexiones que no son de red del sistema
- host:cualquier tipo de conexión TCP/IP
- hostssl:Conexiones TCP/IP solo bajo protocolo SSL
- hostnossl:Conexiones TCP/IP NO bajo protocolo SSL
tutorial:nombre de la base de datos para permitir el acceso, use "all" para referirse a todas las bases de datos
tutorial:nombre de usuario para otorgar acceso
0.0.0.0/0:dirección IP, en su caso está autorizando el acceso a cualquier dirección IPv4
md5:metodología de autenticación aceptada, algunas de las más importantes son:
- md5:autenticación de contraseña
- confianza:acepta incondicionalmente la conexión incondicionalmente
- peer:usa el nombre de usuario del sistema para conectarse solo a la base de datos del mismo nombre.
Para más información acceda a la dirección https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html o al documento oficial de PostgreSQL.
Una vez finalizado, reinicie el servicio para aplicar todos los cambios:
$ sudo systemctl restart postgresql