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.
V této příručce se chystáme nainstalovat Postgresql 14 do Fedory 34.
Související obsah
- Oprávnění Postgres – vytvářet, aktualizovat, mazat uživatele databáze
- 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 Debian 11
- Jak nainstalovat a nakonfigurovat Postgres 14 Ubuntu 20.04
- 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í:
- Aktualizovaný server Fedory 34
- Přístup uživatele root k serveru nebo uživateli s přístupem root
- Přístup k internetu ze serveru
- Základní znalost terminálu Linux
Obsah
- Ujistěte se, že je server aktuální
- Instalace a spuštění serveru Postgres
- Role PostgreSQL a metody ověřování databází
- Připojování k databázi postgres
- Konfigurace instance postgres 14 pro vzdálený přístup
- Správa uživatelů
1. Ujistěte se, že je server aktuální
Než budete pokračovat, ujistěte se, že náš server má aktuální balíčky. Použijte tento příkaz:
$ sudo dnf -y update
Last metadata expiration check: 2:55:24 ago on Tue 26 Oct 2021 12:05:29 PM UTC.
Dependencies resolved.
Nothing to do.
Complete!
2. Instalace a spuštění Postgres Server
Modul fedora dnf postgres obsahuje instalaci Postgres 14, ale není výchozí. Pojďme zkontrolovat modul Postges na Fedoře pomocí tohoto příkazu:
$ sudo dnf module list postgresql
Last metadata expiration check: 2:56:45 ago on Tue 26 Oct 2021 12:05:29 PM UTC.
Fedora Modular 34 - x86_64
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL module
postgresql 10 client, server [d] PostgreSQL module
postgresql 11 client, server [d] PostgreSQL module
postgresql 12 client, server PostgreSQL module
postgresql 13 client, server PostgreSQL module
Fedora Modular 34 - x86_64 - Updates
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL module
postgresql 10 client, server [d] PostgreSQL module
postgresql 11 client, server [d] PostgreSQL module
postgresql 12 client, server PostgreSQL module
postgresql 13 client, server PostgreSQL module
postgresql 14 client, server PostgreSQL module
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
To znamená, že jej chcete používat, musíte jej povolit. Nejprve resetujte modul postgres, abychom neměli výchozí
sudo dnf module reset postgresql
Poté povolte postgres 14 pomocí tohoto příkazu:
$ sudo dnf module enable postgresql:14
Last metadata expiration check: 3:03:33 ago on Tue 26 Oct 2021 12:05:29 PM UTC.
Dependencies resolved.
================================================================================================================================================================================================================================================================================
Package Architecture Version Repository Size
================================================================================================================================================================================================================================================================================
Enabling module streams:
postgresql 14
Transaction Summary
================================================================================================================================================================================================================================================================================
Is this ok [y/N]: y
Complete!
Nyní nainstalujme Postgresql 14 a balíček Contrib, který poskytuje několik dalších funkcí pro databázový systém PostgreSQL:
sudo dnf install -y postgresql-server postgresql-contrib
Po dokončení instalace inicializujte databázi PostgreSQL následujícím příkazem:
$ sudo postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
* Initializing database in '/var/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
Nyní spusťte službu:
sudo systemctl start postgresql
Poté povolte službu, aby se spustila po restartování serveru:
$ sudo systemctl enable postgresql
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.
Potvrďte, že Postgres 14 běží:
$ sudo systemctl status postgresql
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2021-10-26 15:18:53 UTC; 46s ago
Process: 17645 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
Main PID: 17647 (postmaster)
Tasks: 8 (limit: 4603)
Memory: 15.7M
CPU: 47ms
CGroup: /system.slice/postgresql.service
├─17647 /usr/bin/postmaster -D /var/lib/pgsql/data
├─17648 postgres: logger
├─17650 postgres: checkpointer
├─17651 postgres: background writer
├─17652 postgres: walwriter
├─17653 postgres: autovacuum launcher
├─17654 postgres: stats collector
└─17655 postgres: logical replication launcher
Oct 26 15:18:52 ip-10-2-40-182.us-west-2.compute.internal systemd[1]: Starting PostgreSQL database server...
Oct 26 15:18:52 ip-10-2-40-182.us-west-2.compute.internal postmaster[17647]: 2021-10-26 15:18:52.998 UTC [17647] LOG: redirecting log output to logging collector process
Oct 26 15:18:52 ip-10-2-40-182.us-west-2.compute.internal postmaster[17647]: 2021-10-26 15:18:52.998 UTC [17647] HINT: Future log output will appear in directory "log".
Oct 26 15:18:53 ip-10-2-40-182.us-west-2.compute.internal systemd[1]: Started PostgreSQL database server.
Active: active (running)
ukazuje, že služba je v provozu.
Dále ověřte, že instalace proběhla úspěšně, připojením k databázovému serveru PostgreSQL a vytištěním jeho verze:
sudo -u postgres psql -c "SELECT version();"
Výstup:
$ sudo -u postgres psql -c "SELECT version();"
could not change directory to "/home/fedora": Permission denied
version
--------------------------------------------------------------------------------------------------------------
PostgreSQL 14.0 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), 64-bit
(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 spojen s výchozím postgres
role. 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
- Přepnutím na
postres
uživatel
Přepněte se na účet postgres na vašem serveru zadáním tohoto do terminálu;:
sudo -i -u postgres
Nyní můžete okamžitě otevřít výzvu Postgres zadáním:
$ psql
psql (14.0)
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 postgres
uživatel
Použijte toto ke spuštění příkazu přímo jako postgres
uživatel pomocí sudo
sudo -u postgres psql
Výstup:
$ sudo -u postgres psql
psql (14.0)
Type "help" for help.
postgres=#
5. Konfigurace instance postgres 14 pro vzdálený přístup
Abychom toho dosáhli, upravíme konfigurační soubory postgres. Musíme otevřít soubory a upravit požadované konfigurace. Hlavní konfigurační soubor pro Postgresql 14 lze nalézt v této cestě /var/lib/pgsql/14/data/pg_hba.conf
Změňme identifikaci partnera na důvěryhodnost:
sed -i '/^local/s/peer/trust/' /var/lib/pgsql/data/pg_hba.conf
Změňte identifikaci na md5, abyste umožnili přihlášení pomocí hesla.
sed -i '/^host/s/ident/md5/' /var/lib/pgsql/data/pg_hba.conf
Přidejte blok, abyste umožnili přístup odkudkoli:
Přidejte tento obsah do souboru /var/lib/pgsql/data/pg_hba.conf
host all all 0.0.0.0/0 md5
Ujistěte se, že PostgreSQL naslouchá na *
Přidejte tento řádek do konfigurace zde /var/lib/pgsql/data/postgresql.conf
listen_addresses='*'
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ření superuživatele
Nyní, když je vše nastaveno, pojďme vytvořit superuživatele.
Připojte se k DB jako postres role:
$ sudo -u postgres psql
psql (14.0)
Type "help" for help.
postgres=#
Vytvořte superuživatele se jménem root
:
CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
Výstup:
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ů aplikací
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.
Připojení k instanci ze vzdáleného hostitele
Tento příkaz použijte k připojení k postgresové instanci z místního počítače:
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 Fedora 34, provést několik základních konfigurací a poté provést základní správu uživatelů.