PostgreSQL, často známý jednoduše jako Postgres, je open source univerzální objektově-relační systém pro správu databází. Má mnoho výkonný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ší.
Tento tutoriál vás provede kroky instalace databázového serveru PostgreSQL na Debian 10. Prozkoumáme také základy základní správy databáze.
Instalace PostgreSQL #
V době psaní tohoto článku byla nejnovější verze PostgreSQL dostupná z výchozích repozitářů Debianu PostgreSQL verze 11.5.
Chcete-li nainstalovat PostgreSQL na váš server Debian, proveďte následující kroky jako root nebo uživatel s právy sudo:
-
Začněte aktualizací indexu balíků APT:
sudo apt update
-
Nainstalujte server PostgreSQL a balíček contrib, který poskytuje další funkce pro databázi PostgreSQL:
sudo apt install postgresql postgresql-contrib
-
Po dokončení instalace se spustí služba PostgreSQL. Pro ověření instalace použijte
psql
nástroj pro tisk verze serveru:sudo -u postgres psql -c "SELECT version();"
Výstup by měl vypadat nějak takto:
PostgreSQL 11.5 (Debian 11.5-1+deb10u1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
psql
je interaktivní terminálový program, který umožňuje interakci se serverem PostgreSQL. Role a metody ověřování PostgreSQL #
PostgreSQL zpracovává přístupová oprávnění k databázi pomocí konceptu rolí. V závislosti na tom, jak roli nastavíte, může představovat uživatele databáze nebo skupinu uživatelů databáze.
PostgreSQL podporuje několik 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ě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 – Podporováno pouze pro 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
. Pro lokální připojení je PostgreSQL nastaveno na použití metody peer autentizace.
Uživatel „postgres“ 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“, přepněte na userpostgres a pomocí psql
otevřete výzvu PostgreSQL nástroj:
sudo su - postgres
psql
Odtud můžete komunikovat se serverem 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 se obvykle používá pouze z localhost.
Vytvoření PostgreSQL role a databáze #
createuser
umožňuje vytvářet nové role z příkazového řádku. 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 kylo
, databázi s názvem kylodb
a udělte roli oprávnění k databázi.
-
Nejprve vytvořte roli zadáním následujícího příkazu:
sudo su - postgres -c "createuser kylo"
-
Dále vytvořte databázi pomocí
createdb
příkaz:sudo su - postgres -c "createdb kylodb"
-
Chcete-li uživateli udělit oprávnění k databázi, připojte se k prostředí PostgreSQL:
sudo -u postgres psql
Spusťte následující dotaz:
GRANT ALL PRIVILEGES ON DATABASE kylodb TO kylo;
Povolení vzdáleného přístupu k serveru PostgreSQL #
Ve výchozím nastavení PostgreSQL, server naslouchá pouze na lokálním rozhraní 127.0.0.1
.
Pokud se chcete připojit k serveru PostgreSQL ze vzdálených umístění, musíte server nastavit tak, aby naslouchal na veřejném rozhraní, a upravit konfiguraci tak, aby přijímala vzdálená připojení.
Otevřete konfigurační soubor postgresql.conf
a přidejte listen_addresses = '*'
v CONNECTIONS AND AUTHENTICATION
sekce. Tím dá serveru pokyn, aby naslouchal na všech síťových rozhraních.
sudo nano /etc/postgresql/11/main/postgresql.conf
/etc/postgresql/11/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, aby se změny projevily:
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 [::]:*
Výstup by měl ukazovat, že PostgreSQL server naslouchá všem rozhraním (0.0.0.0).
Posledním krokem je nakonfigurovat server tak, aby přijímal vzdálená přihlášení, úpravou souboru pg_hba.conf
soubor.
Níže je několik příkladů ukazujících různé případy použití:
/etc/postgresql/11/main/pg_hba.conf# TYPE DATABASE USER ADDRESS METHOD
# The user jane will be able to access all databases from all locations using an 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 an 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