Postgresql je open source objektově relační databázový systém s více než 30 lety aktivního vývoje, který mu vynesl silnou pověst díky spolehlivosti, robustnosti funkcí a výkonu. Postgres je bezplatný a otevřený systém pro správu relačních databází, který klade důraz na rozšiřitelnost a shodu s SQL. Původně se jmenovala POSTGRES, odkazující na svůj původ jako nástupce databáze Ingres vyvinuté na Kalifornské univerzitě v Berkeley. PostgreSQL se používá jako primární datové úložiště nebo datové skladiště pro mnoho webových, mobilních, geoprostorových a analytických aplikací. PostgreSQL může ukládat strukturovaná i nestrukturovaná data v jediném produktu.
Zkontrolujte také:
- Jak používat Ansible k instalaci a konfiguraci Postgres 14 na Ubuntu 20.04
- Jak nainstalovat a nakonfigurovat Postgres 14 na FreeBSD 13
- Oprávnění Postgres – vytvářet, aktualizovat, mazat uživatele databáze
- Jak nainstalovat a nakonfigurovat Postgres 14 na Debian 11
- Jak nainstalovat a nakonfigurovat Postgres 14 na Centos 8
- Jak nainstalovat a nakonfigurovat Postgres 13 na Centos 8
- Spuštění Postgresql 14 pomocí Docker a Docker-Compose
- Jak nainstalovat a nakonfigurovat Postgres 13 Ubuntu 20.04
- Jak nainstalovat a nakonfigurovat Postgres 14 na Fedoře 34
- Jak nainstalovat a nakonfigurovat Postgres 14 na OpenSUSE Leap 15.3
Předpoklady
Chcete-li pokračovat, ujistěte se, že máte následující:
- Server Ubuntu 20.04
- Přístup uživatele root k serveru nebo uživateli s přístupem root
- Přístup k internetu ze serveru
- Znalost terminálu Linux
Obsah
- Ujistěte se, že jsou vaše systémové balíčky aktuální
- Instalace Postgres 14
- Role PostgreSQL a metody ověřování databází
- Připojování k databázi Postgres
- Konfigurace postgres instance pro vzdálený přístup
- Správa uživatelů
- Připojení k instanci ze vzdáleného hostitele
1. Ujistěte se, že vaše systémové balíčky jsou aktuální
Obnovme místní index balíčků vašeho serveru pomocí tohoto příkazu:
sudo apt update
Pak upgradujeme balíčky v našem systému tímto:
sudo apt -y upgrade
2. Instalace Postgres 14
Postgres je poskytován ve výchozích repozitářích Ubuntu. Chcete-li zkontrolovat verzi, kterou poskytuje, použijte tento příkaz:
sudo apt-cache search postgresql | grep postgresql
Výchozí balíčky poskytované výchozími repozitáři jsou postgres 12. Pokud máte zájem o Postgres 12, můžete nainstalovat pomocí následujících příkazů. -contrib
balíček, který přidává některé další nástroje a funkce:
sudo apt install postgresql postgresql-contrib
Protože se chystáme nainstalovat Postgres 14, budeme muset přidat další úložiště, které poskytuje balíčky
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Poté importujte podpisový klíč úložiště:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Nyní aktualizujeme seznamy balíčků:
sudo apt -y update
Poté nainstalujeme konkrétní verzi postgres, kterou chceme. Použijte postgresql-14
místo postgresql
:
sudo apt -y install postgresql-14
Jakmile bude instalace úspěšná, spustí se Postgres 14.
Tento příkaz použijte ke kontrole stavu služby:
$ sudo systemctl status postgresql ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Thu 2021-10-14 09:32:22 UTC; 55s ago Main PID: 204727 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 4710) Memory: 0B CGroup: /system.slice/postgresql.service Oct 14 09:32:22 ip-172-26-11-229 systemd[1]: Starting PostgreSQL RDBMS... Oct 14 09:32:22 ip-172-26-11-229 systemd[1]: Finished PostgreSQL RDBMS.
Dále ověřte instalaci připojením k databázovému serveru PostgreSQL a kontrolou jeho verze. Použijte tento příkaz:
sudo -u postgres psql -c "SELECT version();"
Výstup:
version ---------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 14.0 (Ubuntu 14.0-1.pgdg20.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bi (1 row)
3. PostgreSQL role a metody autentizace databází
PostgreSQL používá koncept zvaný roles
pro zpracování autentizace a autorizace klienta. Ve výchozím nastavení je Postgres nastaven na používání ident authentication
, což znamená, že přidružuje role Postgres k odpovídajícímu systémovému účtu Unix/Linux. Pokud role v Postgresu existuje, může se pomocí této role přihlásit uživatelské jméno Unix/Linux se stejným jménem.
Instalační procedura vytvořila uživatelský účet s názvem postgres, který je přidružen k výchozí postgresové roli. Chcete-li používat PostgreSQL, můžete se přihlásit k tomuto účtu.
PostgreSQL podporuje více metod ověřování. Nejčastěji používané metody jsou:
Trust
– Role se může připojit bez hesla, pokud jsou splněny podmínky definované vpg_hba.conf
jsou splněny.Password
– Role se může připojit zadáním hesla. Hesla lze uložit jakoscram-sha-256
,md5
apassword
(clear-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í.
4. Připojování k databázi postgres
1. Přepnutím na postres
uživatel
Přepněte se na účet postgres na vašem serveru zadáním:
sudo -i -u postgres
Nyní můžete okamžitě otevřít výzvu Postgres zadáním:
$ psql
psql (14.0 (Ubuntu 14.0-1.pgdg20.04+1))
Type "help" for help.
postgres=#
Tím se přihlásíte do příkazového řádku PostgreSQL a odtud můžete okamžitě pracovat se systémem správy databáze.
2. Spuštěním příkazu jako uživatel postgres
Použijte toto ke spuštění příkazu přímo jako postgres
uživatel pomocí sudo
$ sudo -u postgres psql
psql (14.0 (Ubuntu 14.0-1.pgdg20.04+1))
Type "help" for help.
postgres=#
5. Konfigurace instance postgres pro vzdálený přístup
Ve výchozím nastavení je postgres nastaven pouze pro místní přístup. To není ideální, pokud chceme k našemu serveru přistupovat z jiného hostitele. V této sekci nakonfigurujeme postgres tak, aby umožňoval přístup ze vzdálených hostitelů.
Konfigurační soubor Postgres 14 lze nalézt v této cestě/etc/postgresql/14/main/pg_hba.conf
$ sudo file /etc/postgresql/14/main/pg_hba.conf
/etc/postgresql/14/main/pg_hba.conf: ReStructuredText file, ASCII text
Změnit identifikaci partnera na důvěryhodnost
Tento příkaz použijte ke změně peer
trust
sed -i '/^local/s/peer/trust/' /etc/postgresql/14/main/pg_hba.conf
Tím se řádek v konfiguračním souboru aktualizuje na tento:
# "local" is for Unix domain socket connections only
local all all trust
Přidejte blok, abyste umožnili přístup odkudkoli
Přidejte tento obsah do souboru /etc/postgresql/14/main/pg_hba.conf
pro povolení přístupu heslem všem hostitelům:
vim /etc/postgresql/14/main/pg_hba.conf
Pak přidejte toto:
host all all 0.0.0.0/0 md5
Ujistěte se, že PostgreSQL naslouchá na *
Přidejte tento řádek do konfigurace zde /etc/postgresql/14/main/postgresql.conf
aby postgres mohl poslouchat na všech hostitelích
listen_addresses='*'
Abychom mohli použít konfigurace, musíme restartovat službu postgres 14.
Povolte a restartujte server postgresql, aby se znovu načetly konfigurace:
sudo systemctl restart postgresql
sudo systemctl enable postgresql
6. Správa uživatelů
Vytvořit superuživatele:
Bylo by lepší, kdybychom vytvořili superuživatele pro správu postgresové služby. Jedná se o jednoho uživatele, který má oprávnění ke správě ostatních uživatelů a databází.
Připojte se k DB jako postres
role
$ sudo -u postgres psql
could not change directory to "/root": Permission denied
psql (14.0 (Ubuntu 14.0-1.pgdg20.04+1))
Type "help" for help.
postgres=#
Vytvořte superuživatele se jménem root
pomocí tohoto příkazu:
CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
Zkontrolujte, zda byl uživatel vytvořen a byla mu udělena nezbytná oprávnění:
postgres=# CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
CREATE ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | Superuser, Create role, Create DB | {}
postgres=#
Správa uživatelů aplikace
Toto použijte k vytvoření databáze, vytvoření uživatele a udělení všech přístupů tomuto uživateli k této databázi:
create database app_db_name;
create user app_user with encrypted password 'dbpassword';
grant all privileges on database app_db_name to app_user;
Prohlédněte si tohoto komplexního průvodce správou uživatelů a oprávnění v postgres zde.
7. Připojení k instanci ze vzdáleného hostitele
Pomocí tohoto příkazu otestujte, zda se můžete připojit:
psql 'postgres://<username>:<password>@<host>:<port>/<db>?sslmode=disable'
# like
psql 'postgres://root:[email protected]:5432/postgres?sslmode=disable'
Závěr
Do této chvíle se nám podařilo nainstalovat Postgresql 14 na server Ubuntu, provést několik základních konfigurací a poté provést základní správu uživatelů.