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 update
sudo 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.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í 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 - postgres
psql
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.