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 vysvětlíme, jak nainstalovat databázový server PostgreSQL na Ubuntu 20.04, a prozkoumáme základy správy 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.
Instalovat PostgreSQL na Ubuntu #
V době psaní tohoto článku je nejnovější verze PostgreSQL dostupná z oficiálních repozitářů Ubuntu PostgreSQL verze 10.4.
Spusťte následující příkazy pro instalaci serveru PostgreSQL na Ubuntu:
sudo apt updatesudo apt install postgresql postgresql-contrib
Instalujeme také balíček Contrib PostgreSQL, který poskytuje několik dalších funkcí pro databázový systém PostgreSQL.
Po dokončení instalace se služba PostgreSQL automaticky spustí. 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 12.2 (Ubuntu 12.2-4) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-8ubuntu1) 9.3.0, 64-bit
A je to. PostgreSQL byl nainstalován a můžete jej začít používat.
Role a metody ověřování PostgreSQL #
Přístupová oprávnění k databázi v rámci PostgreSQL jsou řešena 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.confjsou splněny. - Heslo – Role se může připojit zadáním hesla. Hesla lze uložit jako
scram-sha-256,md5apassword(č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í PostgreSQL používá pro lokální připojení metodu peer autentizace.
postgres uživatel se automaticky vytvoří při instalaci PostgreSQL. Tento uživatel je superuživatel pro instanci PostgreSQL a je ekvivalentní kořenovému 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 - postgrespsql
Odtud můžete komunikovat s vaší instancí PostgreSQL. Chcete-li opustit prostředí PostgreSQL, zadejte:
\q
Dalším způsobem, jak získat přístup k promptu PostgreSQL bez přepínání uživatelů, je použití sudo příkaz:
sudo -u postgres psql
Obecně byste se měli přihlásit k databázovému serveru jako postgres 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.
Následující příklad ukazuje, jak vytvořit novou roli s názvem john databázi s názvem johndb a udělit oprávnění k databázi:
-
Vytvořte novou roli PostgreSQL:
sudo su - postgres -c "createuser john" -
Vytvořte novou databázi PostgreSQL:
sudo su - postgres -c "createdb johndb"
Chcete-li uživateli udělit oprávnění k databázi, připojte se k prostředí PostgreSQL:
sudo -u postgres psql a spusťte následující dotaz:
GRANT ALL PRIVILEGES ON DATABASE johndb TO john; Povolit vzdálený přístup k serveru PostgreSQL #
Server PostgreSQL standardně 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 postgresql.conf a přidejte listen_addresses = '*' v CONNECTIONS AND AUTHENTICATION sekce.
sudo nano /etc/postgresql/12/main/postgresql.conf /etc/postgresql/12/main/postgresql.conf#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on; Uložte soubor a restartujte službu PostgreSQL:
sudo service postgresql restart
Ověřte změny pomocí ss nástroj:
ss -nlt | grep 5432
Výstup ukazuje, že PostgreSQL server naslouchá na všech rozhraních (0.0.0.0 ):
LISTEN 0 244 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 244 [::]:5432 [::]:*
Další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í:
/etc/postgresql/12/main/pg_hba.conf# TYPE DATABASE USER ADDRESS METHOD
# The user jane can access all databases from all locations using md5 password
host all jane 0.0.0.0/0 md5
# The user jane can access only the janedb from all locations using 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
Posledním krokem je otevření portu 5432 ve vašem firewallu.
Za předpokladu, že používáte UFW ke správě firewallu a chcete povolit přístup z 192.168.1.0/24 subnet, spustíte následující příkaz:
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432 Ujistěte se, že je váš firewall nakonfigurován tak, aby přijímal připojení pouze z důvěryhodných rozsahů IP.