PostgreSQL nebo Postgres je open source univerzální objektově-relační systém správy databází s mnoha pokročilými funkcemi, které vám umožňují vytvářet prostředí nebo složité aplikace odolné proti chybám.
V této příručce probereme, jak nainstalovat databázový server PostgreSQL na CentOS 8. Před výběrem verze k instalaci se ujistěte, že ji vaše aplikace podporují.
Prozkoumáme také základy administrace databáze PostgreSQL.
Předpoklady #
Abyste mohli instalovat balíčky, musíte být přihlášeni jako root nebo uživatel s právy sudo.
Instalace PostgreSQL na CentOS 8 #
V době psaní tohoto článku jsou k dispozici dvě verze serveru PostgreSQL pro instalaci ze standardních repozitářů CentOS:verze 9.6 a 10.0.
Chcete-li zobrazit seznam dostupných streamů modulu PostgreSQL, zadejte:
dnf module list postgresql
Výstup ukazuje, že modul postgresql je k dispozici se dvěma proudy. Každý stream má dva profily:server a klient. Stream 10 s profilovým serverem je výchozí:
CentOS-8 - AppStream
Name Stream Profiles Summary
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 9.6 client, server [d] PostgreSQL server and client module
-
Chcete-li nainstalovat výchozí stream, PostgreSQL server verze 10.0 zadejte:
sudo dnf install @postgresql:10
-
Chcete-li nainstalovat server PostgreSQL verze 9.6, zadejte:
sudo dnf install @postgresql:9.6
Můžete si také nainstalovat balíček contrib, který poskytuje několik dalších funkcí pro databázový systém PostgreSQL.
sudo dnf install postgresql-contrib
Po dokončení instalace inicializujte databázi PostgreSQL následujícím příkazem:
sudo postgresql-setup initdb
Initializing database ... OK
Spusťte službu PostgreSQL a povolte její spuštění při bootování:
sudo systemctl enable --now postgresql
Použijte psql
nástroj pro ověření instalace připojením k databázovému serveru PostgreSQL a vytištěním jeho verze:
sudo -u postgres psql -c "SELECT version();"
PostgreSQL 10.6 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3), 64-bit
Role a metody ověřování PostgreSQL #
PostgreSQL zpracovává přístupová oprávnění k databázi pomocí konceptu rolí. Role může představovat uživatele databáze nebo skupinu uživatelů databáze.
PostgreSQL podporuje více metod ověřování. Nejčastěji používané metody jsou:
- Důvěra – Role se může připojit bez hesla, pokud jsou splněny podmínky definované v
pg_hba.conf
jsou splněny. - Heslo – Role se může připojit zadáním hesla. Hesla lze uložit jako
scram-sha-256
,md5
apassword
(čistý text). - Ident – podporováno pouze u připojení TCP/IP. Funguje tak, že získá uživatelské jméno operačního systému klienta s volitelným mapováním uživatelského jména.
- Peer – Stejné jako Ident, ale je podporováno pouze u místních připojení.
Autentizace klienta PostgreSQL je definována v konfiguračním souboru s názvem pg_hba.conf
. Ve výchozím nastavení je pro místní připojení PostgreSQL nastaveno na použití metody ověřování rovnocennými partnery.
postgres
uživatel se automaticky vytvoří při instalaci serveru PostgreSQL. Tento uživatel je superuživatel pro instanci PostgreSQL. Je ekvivalentní root uživateli MySQL.
Chcete-li se přihlásit k serveru PostgreSQL jako postgres
uživatel, nejprve se přepněte na uživatele a poté pomocí psql
otevřete prompt PostgreSQL nástroj:
sudo su - postgres
psql
Odtud můžete komunikovat s instancí PostgreSQL. Chcete-li ukončit prostředí PostgreSQL, zadejte:
\q
Můžete také přistupovat k výzvě PostgreSQL bez přepínání uživatelů pomocí sudo
příkaz:
sudo -u postgres psql
Typicky postgres
uživatel se používá pouze z localhost.
Vytvoření PostgreSQL role a databáze #
Pouze superuživatelé a role s CREATEROLE
oprávnění může vytvářet nové role.
V následujícím příkladu vytvoříme novou roli s názvem john
, databázi s názvem johndb
a udělit oprávnění k databázi.
-
Nejprve se připojte k prostředí PostgreSQL:
sudo -u postgres psql
-
Vytvořte novou PostgreSQL roli pomocí následujícího příkazu:
CREATE ROLE john;
-
Vytvořte novou databázi:
CREATE DATABASE johndb;
-
Udělte uživateli oprávnění k databázi spuštěním následujícího dotazu:
GRANT ALL PRIVILEGES ON DATABASE johndb TO john;
Povolit vzdálený přístup k serveru PostgreSQL #
Ve výchozím nastavení server PostgreSQL naslouchá pouze na místním rozhraní 127.0.0.1
.
Chcete-li povolit vzdálený přístup k vašemu PostgreSQL serveru, otevřete konfigurační soubor:
sudo nano /var/lib/pgsql/data/postgresql.conf
Přejděte dolů na CONNECTIONS AND AUTHENTICATION
a přidejte/upravte následující řádek:
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
Uložte soubor a restartujte službu PostgreSQL pomocí:
sudo systemctl restart postgresql
Ověřte změny pomocí ss
nástroj:
ss -nlt | grep 5432
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 128 [::]:5432 [::]:*
Výstup výše ukazuje, že PostgreSQL server naslouchá na výchozím portu na všech rozhraních (0.0.0.0).
Posledním krokem je nakonfigurovat server tak, aby přijímal vzdálená připojení, úpravou souboru pg_hba.conf
soubor.
Níže je několik příkladů ukazujících různé případy použití:
/var/lib/pgsql/data/pg_hba.conf# TYPE DATABASE USER ADDRESS METHOD
# The user jane can access all databases from all locations using an md5 password
host all jane 0.0.0.0/0 md5
# The user jane can access only the janedb database from all locations using an md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane can access all databases from a trusted location (192.168.1.134) without a password
host all jane 192.168.1.134 trust