[comment]: # ({7af1bbaa-7af1bbaa})
# 1. Создание базы данных

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

[comment]: # ({e35a4783-fab90562})
#### Обзор

База данных Zabbix должна быть создана во время установки сервера или прокси Zabbix.

В этом разделе приведены инструкции по созданию базы данных Zabbix.
Для каждой поддерживаемой базы данных доступен отдельный набор инструкций.

::: noteclassic
Чтобы повысить безопасность базы данных путем создания ролей/пользователей базы данных с минимальными привилегиями, см. рекомендации по созданию базы данных для каждой поддерживаемой базы данных:
<br><br>

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

Для настройки защищенных TLS-соединений см. [Безопасное подключение к базе данных](/manual/appendix/install/db_encrypt).
:::

UTF-8 - единственная кодировка, поддерживаемая Zabbix.
Известно, что она работает без каких-либо проблем с безопасностью.
Пользователям следует учитывать, что при использовании некоторых других кодировок известны проблемы с безопасностью.
Для перехода на UTF-8 см. [Восстановление набора символов и сопоставления базы данных Zabbix](/manual/appendix/install/db_charset_coll).
См. также [Ограничения фильтрации с сопоставлениями utf8mb4](/manual/installation/known_issues#limits-of-filtering-with-utf8mb4-collations).

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

[comment]: # ({94aa3a83-fad527fc})
::: noteclassic
Если установка выполняется из [репозитория Zabbix Git](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse?at=refs%2Fheads%2Frelease%2F7.4), перед переходом к следующим шагам необходимо выполнить следующую команду:
<br><br>
`make dbschema`
:::

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

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

Для корректной работы Zabbix сервера/прокси с базой данных MySQL поддерживаются наборы символов utf8 (также известный как utf8mb3) и utf8mb4 (с сопоставлениями utf8\_bin и utf8mb4\_bin соответственно).
Для новых установок рекоммендуется использовать utf8mb4.

Во время импорта схемы необходимо создавать детерминированные триггеры.
В MySQL и MariaDB для этого необходимо установить `GLOBAL log_bin_trust_function_creators = 1`, если включено двоичное ведение журнала (binary logging) и нет привилегий суперпользователя, а параметр `log_bin_trust_function_creators = 1` не выставлен в файле конфигурации MySQL.

Если Вы устанавливаете из Zabbix **пакетов**, следуйте [инструкциям](https://www.zabbix.com/download) для вашей платформы.

Если Вы устанавливаете Zabbix из исходных кодов: 

* Создайте и настройте базу данных и пользователя.

```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;
```

* Импортируйте данные в базу данных и установите кодировку utf8mb4 в качестве кодировки по умолчанию (предполагаем, что Вы находитесь в корневой директории с исходными кодами Zabbix)).
Для базы данных Zabbix прокси нужно импортировать только `schema.sql` (ни images.sql, ни data.sql не нужны).

```bash
cd database/mysql
mysql -uzabbix -p<password> zabbix < schema.sql
# остановитесь здесь, если вы создаёте базу данных для Zabbix прокси
mysql -uzabbix -p<password> zabbix < images.sql
mysql -uzabbix -p<password> --default-character-set=utf8mb4 zabbix < data.sql
```

После успешного импорта схемы параметр `log_bin_trust_function_creators` можно выключить:

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

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

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

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

У Вас должен быть пользователь базы данных с правами на создание объектов базы данных.

Если Вы устанавливаете из **пакетов** Zabbix, следуйте [инструкциям](https://www.zabbix.com/download) для Вашей платформы.

Если Вы устанавливаете Zabbix из исходных кодов:

* Создайте пользователя базы данных.

Следующая команда создаст пользователя `zabbix`.
Задайте пароль при появлении запроса и затем введите пароль повторно (обратите внимание, что в начале может быть запрошен `sudo` пароль):

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

* Создайте базу данных.

Следующая команда оболочки создаст базу данных `zabbix` (последний параметр) с раннее созданным пользователем в качестве владельца (`-O zabbix`).

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

* Импортируйте начальную схему и данные (предполагаем, что Вы находитесь в корневой директории с исходными кодами Zabbix).
Для базы данных Zabbix прокси нужно импортировать только `schema.sql` (ни images.sql, ни data.sql не требуются).

```bash
cd database/postgresql
cat schema.sql | sudo -u zabbix psql zabbix
# остановитесь здесь, если Вы создаёте базу данных для Zabbix прокси
cat images.sql | sudo -u zabbix psql zabbix
cat data.sql | sudo -u zabbix psql zabbix
```

::: noteimportant
Приведённые выше команды предоставлены как пример, который будет работать на большинстве GNU/Linux инсталляций.
В зависимости от того, каким образом настроена Ваша система/база данных, Вы можете использовать и другие команды, например:
<br><br>
`psql -U <username>`
<br><br>
Если у Вас возникли трудности с настройкой базы данных, пожалуйста, проконсультируйтесь с Вашим администратором баз данных.
:::

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

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

Инструкции по созданию и настройке TimescaleDB приведены в отдельном [разделе](/manual/appendix/install/timescaledb).

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

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

Использование SQLite поддерживается только для **прокси Zabbix**!

База данных будет создана автоматически, если она не существует.

Вернитесь к [разделу установки](/manual/installation/install).

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