PostgreSQL je populární open-source systém pro správu relačních databází. Známý pro svou spolehlivost, získává na popularitě díky své robustnosti, flexibilitě a výkonu. PostgreSQL se používá pro správu databází a četných webových a analytických aplikací. V době psaní tohoto článku je PostgreSQL 13 nejnovější verzí. Tato verze přichází s významnými vylepšeními indexovacího a vyhledávacího systému, která jsou přínosem pro velké databáze.
V tomto příspěvku vám ukážeme, jak nainstalovat a zabezpečit PostgreSQL na Rocky Linux 8.
Předpoklady
- Server se systémem Rocky Linux 8 na cloudové platformě Atlantic.Net
- Heslo uživatele root nakonfigurované na vašem serveru
Krok 1 – Vytvořte cloudový server Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte Rocky Linux 8 s alespoň 2 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte na svůj server, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
dnf update -y
Krok 2 – Přidejte úložiště PostgreSQL 13
dnf module list postgresql
Měli byste vidět, že je k dispozici pouze PostgreSQL verze 10:
Rocky Linux 8 - AppStream Name Stream Profiles Summary postgresql 9.6 client, server [d] PostgreSQL server and client module postgresql 10 [d] client, server [d] PostgreSQL server and client module postgresql 12 client, server [d] PostgreSQL server and client module postgresql 13 client, server [d] PostgreSQL server and client module
Abyste mohli nainstalovat nejnovější verzi PostgreSQL, budete muset do svého systému nainstalovat repo PostgreSQL.
Můžete jej nainstalovat pomocí následujícího příkazu:
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Jakmile je repo vytvořeno, můžete přejít k dalšímu kroku.
Krok 3 – Instalace PostgreSQL 13 na Rocky Linux 8
Nyní aktualizujte své úložiště pomocí následujícího příkazu:
dnf update -y
Dále deaktivujte výchozí úložiště PostgreSQL pomocí následujícího příkazu:
dnf -qy module disable postgresql
Dále nainstalujte nejnovější verzi PostgreSQL spuštěním následujícího příkazu:
dnf install postgresql13 postgresql13-server
Po instalaci PostgreSQL 13 získáte následující výstup:
Last metadata expiration check: 0:00:08 ago on Fri 22 Oct 2021 08:38:58 AM UTC. Dependencies resolved. =============================================================================================================================================== Package Architecture Version Repository Size =============================================================================================================================================== Installing: postgresql13 x86_64 13.4-1PGDG.rhel8 pgdg13 1.5 M postgresql13-server x86_64 13.4-1PGDG.rhel8 pgdg13 5.5 M Installing dependencies: postgresql13-libs x86_64 13.4-1PGDG.rhel8 pgdg13 414 k Transaction Summary =============================================================================================================================================== Install 3 Packages Total download size: 7.4 M Installed size: 31 M Is this ok [y/N]: y
Dále inicializujte PostgreSQL databázi pomocí následujícího příkazu:
/usr/pgsql-13/bin/postgresql-13-setup initdb
Ukázkový výstup:
Initializing database ... OK
Dále spusťte službu PostgreSQL a povolte její spuštění při restartu systému pomocí následujícího příkazu:
systemctl start postgresql-13 systemctl enable postgresql-13
Stav PostgreSQL můžete zkontrolovat pomocí následujícího příkazu:
systemctl status postgresql-13
Měli byste získat následující výstup:
● postgresql-13.service - PostgreSQL 13 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-10-22 08:39:47 UTC; 7s ago Docs: https://www.postgresql.org/docs/13/static/ Process: 36412 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 36417 (postmaster) Tasks: 8 (limit: 11411) Memory: 16.8M CGroup: /system.slice/postgresql-13.service ├─36417 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/ ├─36419 postgres: logger ├─36421 postgres: checkpointer ├─36422 postgres: background writer ├─36423 postgres: walwriter ├─36424 postgres: autovacuum launcher ├─36425 postgres: stats collector └─36426 postgres: logical replication launcher
ss -antpl | grep 5432
Získáte následující výstup:
LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* users:(("postmaster",pid=36417,fd=7)) LISTEN 0 128 [::1]:5432 [::]:* users:(("postmaster",pid=36417,fd=6))
Krok 4 – Nastavte heslo pro uživatele Postgres
Chcete-li nastavit heslo, přihlaste se do PostgreSQL pomocí následujícího příkazu:
su - postgres
Dále nastavte bezpečné heslo pomocí následujícího příkazu:
psql -c "alter user postgres with password 'securepassword'"
Dále ukončete prostředí PostgreSQL pomocí následujícího příkazu:
exit
Krok 5 – Změňte metodu autentizace PostgreSQL
Můžete to změnit úpravou hlavního konfiguračního souboru PostgreSQL:
nano /var/lib/pgsql/13/data/pg_hba.conf
Najděte následující řádek:
local all all peer
A nahraďte jej následujícím řádkem:
local all all scram-sha-256
Uložte a zavřete soubor a poté restartujte službu PostgreSQL, aby se změny projevily.
systemctl restart postgresql-13
Krok 6 – Vytvoření databáze a uživatele v PostgreSQL
Nejprve se přihlaste do prostředí PostgreSQL pomocí následujícího příkazu:
sudo -u postgres psql
Získáte následující výstup:
could not change directory to "/root": Permission denied psql (13.4) Type "help" for help. postgres=#
Dále vytvořte nového PostgreSQL uživatele s názvem user1 pomocí následujícího příkazu:
CREATE USER user1 WITH CREATEDB CREATEROLE PASSWORD 'passoword';
Chcete-li ověřit uživatele PostgreSQL, spusťte:
\du
Získáte následující výstup:
List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} user1 | Create role, Create DB | {}
Chcete-li vytvořit novou databázi PostgreSQL s názvem user1db, spusťte:
CREATE DATABASE user1db OWNER user1;
Chcete-li ověřit databáze PostgreSQL, spusťte:
\l
Získáte následující výstup:
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 user1db | user1 | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Závěr
Gratulujeme! Úspěšně jste nainstalovali a zabezpečili PostgreSQL na Rocky Linux 8. Z bezpečnostních důvodů se vždy doporučuje nainstalovat nejnovější verzi PostgreSQL v produkčním prostředí. Vyzkoušejte to na hostingu VPS od Atlantic.Net!