[comment]: # ({7af1bbaa-7af1bbaa})
# 1 Tworzenie bazy danych

[comment]: # ({/7af1bbaa-7af1bbaa})

[comment]: # ({e35a4783-fab90562})
#### Przegląd

Baza danych Zabbix musi zostać utworzona podczas instalacji serwera lub proxy Zabbix.

Ta sekcja zawiera instrukcje dotyczące tworzenia bazy danych Zabbix.
Dla każdej obsługiwanej bazy danych dostępny jest osobny zestaw instrukcji.

::: noteclassic
Aby zwiększyć bezpieczeństwo bazy danych przez utworzenie ról/użytkowników bazy danych z minimalnymi uprawnieniami, zobacz najlepsze praktyki tworzenia bazy danych dla każdej obsługiwanej bazy danych:
<br><br>

-   [MySQL/MariaDB](/manual/best_practices/security/access_control/mysql)
-   [PostgreSQL/TimescaleDB](/manual/best_practices/security/access_control/postgresql)

Aby skonfigurować bezpieczne połączenia TLS, zobacz [Bezpieczne połączenie z bazą danych](/manual/appendix/install/db_encrypt).
:::

UTF-8 jest jedynym kodowaniem obsługiwanym przez Zabbix.
Wiadomo, że działa bez żadnych luk bezpieczeństwa.
Użytkownicy powinni mieć świadomość, że w przypadku używania niektórych innych kodowań istnieją znane problemy bezpieczeństwa.
Informacje o przełączeniu na UTF-8 można znaleźć w sekcji [Naprawa zestawu znaków i porównywania bazy danych Zabbix](/manual/appendix/install/db_charset_coll).
Zobacz także [Ograniczenia filtrowania przy użyciu porównań utf8mb4](/manual/installation/known_issues#limits-of-filtering-with-utf8mb4-collations).

[comment]: # ({/e35a4783-fab90562})

[comment]: # ({94aa3a83-fad527fc})
::: noteclassic
Jeśli instalujesz z [repozytorium Git Zabbix](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse?at=refs%2Fheads%2Frelease%2F7.4), przed przejściem do następnych kroków musisz uruchomić następujące polecenie:
<br><br>
`make dbschema`
:::

[comment]: # ({/94aa3a83-fad527fc})

[comment]: # ({ed6803ae-1e36e539})
#### MySQL/MariaDB

Zestawy znaków utf8 (znane także jako utf8mb3) oraz utf8mb4 są obsługiwane (odpowiednio z porównywaniem utf8_bin i utf8mb4_bin), aby serwer/proxy Zabbix działał poprawnie z bazą danych MySQL.
W przypadku nowych instalacji zaleca się użycie utf8mb4.

Deterministyczne wyzwalacze muszą zostać utworzone podczas importu schematu.
W MySQL i MariaDB wymaga to ustawienia `GLOBAL log_bin_trust_function_creators = 1`, jeśli logowanie binarne jest włączone, nie ma uprawnień superusera, a `log_bin_trust_function_creators = 1` nie jest ustawione w pliku konfiguracyjnym MySQL.

Jeśli instalujesz zabbix z **pakietów**, przejdź do [instrukcji](https://www.zabbix.com/download) dla swojej platformy.

Jeśli instalujesz Zabbix ze źródeł: 

* Utwórz i skonfiguruj bazę danych oraz użytkownika.

```bash
mysql -uroot -p<password>

mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix'@'localhost' identified by '<password>';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
mysql> quit;
```

* Zaimportuj dane do bazy danych i ustaw zestaw znaków utf8mb4 jako domyślny (zakładając, że znajdujesz się w katalogu głównym źródeł Zabbix).
W przypadku bazy danych proxy Zabbix należy zaimportować tylko `schema.sql` (bez images.sql ani data.sql).

```bash
cd database/mysql
mysql -uzabbix -p<password> zabbix < schema.sql
# zatrzymaj się tutaj, jeśli tworzysz bazę danych dla proxy Zabbix
mysql -uzabbix -p<password> zabbix < images.sql
mysql -uzabbix -p<password> --default-character-set=utf8mb4 zabbix < data.sql
```

Po pomyślnym zaimportowaniu schematu `log_bin_trust_function_creators` można wyłączyć:

```bash
mysql -uroot -p<password>

mysql> SET GLOBAL log_bin_trust_function_creators = 0;
mysql> quit;
```

[comment]: # ({/ed6803ae-1e36e539})

[comment]: # ({dbad5843-61d6043c})
#### PostgreSQL

Musisz mieć użytkownika bazy danych z uprawnieniami do tworzenia obiektów bazy danych.

Jeśli instalujesz zabbix z **pakietów**, przejdź do [instrukcji](https://www.zabbix.com/download) dla swojej platformy.

Jeśli instalujesz Zabbix ze źródeł:

* Utwórz użytkownika bazy danych.

Poniższe polecenie powłoki utworzy użytkownika `zabbix`.
Po wyświetleniu monitu podaj hasło i powtórz je (uwaga: najpierw możesz zostać poproszony o hasło `sudo`):

```bash
sudo -u postgres createuser --pwprompt zabbix
```

* Utwórz bazę danych.

Poniższe polecenie powłoki utworzy bazę danych `zabbix` (ostatni parametr), a wcześniej utworzony użytkownik będzie jej właścicielem (`-O zabbix`).

```bash
sudo -u postgres createdb -O zabbix -E Unicode -T template0 zabbix
```

* Zaimportuj początkowy schemat i dane (zakładając, że jesteś w katalogu głównym źródeł Zabbix).
Dla bazy danych proxy Zabbix należy zaimportować tylko `schema.sql` (bez images.sql ani data.sql).

```bash
cd database/postgresql
cat schema.sql | sudo -u zabbix psql zabbix
# zatrzymaj się tutaj, jeśli tworzysz bazę danych dla proxy Zabbix
cat images.sql | sudo -u zabbix psql zabbix
cat data.sql | sudo -u zabbix psql zabbix
```

::: noteimportant
Powyższe polecenia podano jako przykład, który będzie działał w większości instalacji GNU/Linux.
Możesz użyć innych poleceń w zależności od konfiguracji systemu/bazy danych, na przykład:
<br><br>
`psql -U <username>`
<br><br>
Jeśli masz jakiekolwiek problemy z konfiguracją bazy danych, skonsultuj się z administratorem bazy danych.
:::

[comment]: # ({/dbad5843-61d6043c})

[comment]: # ({2e49279b-cc68ca58})
#### TimescaleDB

Instrukcje dotyczące tworzenia i konfiguracji TimescaleDB znajdują się w osobnej [sekcji](/manual/appendix/install/timescaledb).

[comment]: # ({/2e49279b-cc68ca58})

[comment]: # ({e8161295-02d49e4f})
#### SQLite

Korzystanie z SQLite jest obsługiwane tylko dla **Zabbix proxy**!

Baza danych zostanie utworzona automatycznie, jeśli nie istnieje.

Wróć do [sekcji instalacji](/manual/installation/install).

[comment]: # ({/e8161295-02d49e4f})
