PostgreSQL, často známý jednoduše jako Postgres, je open source univerzální objektově-relační systém pro správu databází. PostgreSQL má mnoho pokročilých funkcí, jako jsou online zálohy, obnovení v určitém okamžiku, vnořené transakce, dotazování SQL a JSON, řízení souběžnosti více verzí (MVCC), asynchronní replikace a další.
V tomto tutoriálu vám ukážeme, jak nainstalovat PostgreSQL na Debian 9 a prozkoumáme základy základní správy databáze.
Předpoklady #
Než budete pokračovat v tomto tutoriálu, ujistěte se, že uživatel, pod kterým jste přihlášeni, má oprávnění sudo.
Instalace PostgreSQL #
V době psaní tohoto článku byla nejnovější verze PostgreSQL dostupná z repozitářů Debianu PostgreSQL verze 9.6.
Chcete-li nainstalovat PostgreSQL na váš server Debian, proveďte následující kroky:
-
Začněte aktualizací místního indexu balíčků:
sudo apt update
-
Nainstalujte server PostgreSQL a balíček Contrib PostgreSQL, který poskytuje další funkce pro databázi PostgreSQL:
sudo apt install postgresql postgresql-contrib
-
Po dokončení instalace se služba PostgreSQL automaticky spustí. Pro ověření instalace se připojíme k databázovému serveru PostgreSQL pomocí
psql
a vytiskněte verzi serveru:sudo -u postgres psql -c "SELECT version();"
Výstup bude vypadat takto:
Verzeversion ----------------------------------------------------------------------------------------------------------- PostgreSQL 9.6.10 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit (1 row)
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 řadu autentizačních metod. Nejčastěji používané metody jsou:
- Důvěra – S touto metodou se může role připojit bez hesla, pokud jsou splněna kritéria 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 – Tato metoda je podporována 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í pro místní připojení je PostgreSQL nastaveno na použití metody ověřování rovnocennými partnery.
postgres
uživatel se vytvoří automaticky při instalaci PostgreSQL. Tento uživatel je superuživatel pro instanci PostgreSQL a je ekvivalentní root uživateli MySQL.
Chcete-li se přihlásit k serveru PostgreSQL jako uživatel postgres, musíte se nejprve přepnout na userpostgres a poté můžete přistupovat k výzvě PostgreSQL pomocí psql
nástroj:
sudo su - postgres
psql
Odtud můžete komunikovat s vaší instancí PostgreSQL. Chcete-li opustit prostředí PostgreSQL, zadejte:
\q
Můžete použít sudo
příkaz pro přístup k výzvě PostgreSQL bez přepínání uživatelů:
sudo -u postgres psql
postgres
uživatel je obvykle používán pouze z lokálního hostitele a je doporučeno tomuto uživateli nenastavovat heslo.
Vytvoření PostgreSQL role a databáze #
Nové role můžete vytvořit z příkazového řádku pomocí createuser
příkaz. 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.
-
Vytvořte novou roli PostgreSQL
Následující příkaz vytvoří novou roli s názvem „john“:
sudo su - postgres -c "createuser john"
-
Vytvořte novou databázi PostgreSQL
Vytvořte novou databázi s názvem „johndb“ pomocí
createdb
příkaz:sudo su - postgres -c "createdb johndb"
-
Udělit oprávnění
Chcete-li udělit oprávnění
john
uživatel na databázi, kterou jsme vytvořili v předchozím kroku, se připojte 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 #
Ve výchozím nastavení PostgreSQL server 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 vim /etc/postgresql/9.6/main/postgresql.conf
/etc/postgresql/9.6/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 pomocí:
sudo service postgresql restart
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 [::]:*
Jak můžete vidět z výstupu výše, PostgreSQL server naslouchá 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í:
/etc/postgresql/9.6/main/pg_hba.conf# TYPE DATABASE USER ADDRESS METHOD
# The user jane will be able to access all databases from all locations using a md5 password
host all jane 0.0.0.0/0 md5
# The user jane will be able to access only the janedb from all locations using a md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password
host all jane 192.168.1.134 trust