PostgreSQL je celosvětově podporovaná databáze s otevřeným zdrojovým kódem. S více než 30 lety služby je PostgreSQL, díky různým dostupným doplňkům, známý svou robustností, škálovatelností a výkonem.
Nejprve se připojte k serveru prostřednictvím připojení SSH. Pokud jste tak ještě neučinili, doporučujeme se podle našeho průvodce bezpečně připojit pomocí SSH. V případě lokálního serveru přejděte k dalšímu kroku a otevřete terminál svého serveru.
Instalace PostgreSQL
Chcete-li pokračovat v instalaci PostgreSQL, použijte správce balíčků apt. Nezapomeňte aktualizovat mezipaměť:
$ sudo apt update && sudo apt install postgresql postgresql-contrib
Po dokončení instalace bude služba okamžitě dostupná. Zkontrolujte soubor protokolu v /var/log/postgresql/postgresql-10-main.log, abyste se ujistili
# tail /var/log/postgresql/postgresql-10-main.log
...LOG: database system is ready to accept connections
...
Pokud vše funguje správně, výše uvedený text bude na posledních řádcích souboru protokolu.
Ověřování instalace
Pro ověření úspěšné instalace PostgreSQL použijte klienta příkazového řádku s názvem psql. Nejprve použijte výchozího uživatele nainstalovaného službou. Pro přístup k databázi používá proces ověřování výchozí konfigurace PostgreSQL stejné systémové uživatele.
Chcete-li se přihlásit pomocí výchozího uživatele , z příkazového řádku spusťte
$ sudo -i -u postgres
Nyní spusťte klienta a pomocí příkazu \l zobrazte seznam dostupných databází:
$ sudo -i -u postgres
$ psql
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
postgres=# \q
[email protected]:~$ exit
Po dokončení ukončete klienta příkazem \q a vraťte se k původnímu uživateli zadáním „exit“.
Správa uživatelů a oprávnění
Jak již bylo zmíněno, PostgreSQL předpokládá, že každý uživatel přítomný v jeho službě je také přítomen v systému. Chcete-li vytvořit nového uživatele, nejprve jej přidejte do systému pomocí adduser:
$ sudo adduser tutorial
Adding user `tutorial' ...
Adding new group `tutorial' (1000) ...
Adding new user `tutorial' (1000) with group `tutorial' ...
Creating home directory `/home/tutorial' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for tutorial
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
V následujícím příkladu se vytváří uživatel s názvem „výukový program“, aniž by byly zadány další informace, jako je jméno nebo telefonní číslo. Po dokončení lze vytvořit uživatele PostgreSQL. nejprve se přihlásíte s uživatelem postgres:
$ sudo -i -u postgres
$ createuser --interactive
Enter name of role to add: tutorial
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Po vytvoření uživatele nastavte heslo, přihlaste se přes superuser postgres a změňte uživatele, kterého jste právě vytvořili:
$ psql
postgres=# ALTER USER tutorial PASSWORD 'password'; ALTER ROLE;
Databázi pro nově vytvořeného uživatele lze také vytvořit spuštěním příkazu:
$ createdb tutorial
Po dokončení se odhlaste a zkuste se přihlásit pomocí nově vytvořeného uživatele:
$ sudo -i -u tutorial
[email protected]:~$ psql
psql (10.9 (Ubuntu 10.9-0ubuntu0.18.04.1))
Type "help" for help.
tutorial=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
tutorial | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
Povolení přístupu k externím klientům
V některých případech může být nutné povolit přístup externím klientům (například vašemu počítači) k jedné nebo více databázím na serveru. Normálně není PostgreSQL nakonfigurován tak, aby přijímal připojení, která nejsou lokální, takže změňte některé konfigurační soubory.
Prvním souborem, který má být upraven, je hlavní konfigurační soubor v /etc/postgresql/10/main/postgresql.conf.
Ujistěte se, že upravujete následující řádek z:
listen_addresses = 'localhost'
S:
listen_addresses = '*'
Tímto způsobem informujete PostgreSQL, aby očekával příchozí připojení z libovolného síťového rozhraní.
Ujistěte se, že jste změny uložili. Nyní přejděte k úpravě souboru, který spravuje pravidla přístupu k serveru v /etc/postgresql/10/main/pg_hba.conf, přidáním následujícího řádku:
host tutorial tutorial 0.0.0.0/0 md5
Tato úprava umožňuje uživateli "výukového" programu přistupovat ke své databázi z libovolného hostitele. Konkrétně jsou označena pole:
hostitel:typ připojení, které přijímáte. Možné hodnoty jsou:
- místní:nesíťová připojení ze systému
- hostitel:jakýkoli typ připojení TCP/IP
- hostssl:TCP/IP připojení pouze pod protokolem SSL
- hostnossl:Připojení TCP/IP NENÍ pod protokolem SSL
výukový program:název databáze pro povolení přístupu, pro odkaz na všechny databáze použijte "all"
výukový program:uživatelské jméno pro udělení přístupu
0.0.0.0/0:IP adresa, ve vašem případě autorizujete přístup k jakékoli adrese IPv4
md5:uznávaná metodika ověřování, některé z nejdůležitějších jsou:
- md5:ověření hesla
- důvěra:bezpodmínečně přijímá připojení bezpodmínečně
- peer:používá systémové uživatelské jméno pro připojení pouze ke stejnojmenné databázi.
Další informace naleznete na adrese https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html nebo v oficiálním dokumentu PostgreSQL.
Po ukončení restartujte službu, aby se všechny změny projevily:
$ sudo systemctl restart postgresql