TDB Documentation portal logo
Помощь
Обновлена 30 июля 2026 г. в 16:49

Пользователи в Tarantool DB

Пользователь – это человек или сервис, взаимодействующий с экземпляром Tarantool DB. Для корректной работы каждому пользователю назначается определенный набор прав доступа — напрямую или с помощью системных ролей (именованных наборов прав). Такой набор прав позволяет управлять доступом к объектам Tarantool DB – например спейсам, функциям или базе данных целиком.

В этом разделе описаны существующие виды пользователей в Tarantool DB, а также типы назначаемых им ролей:

Пример создания пользователей в Tarantool DB описан в разделе Пример конфигурации.

Пользователи Tarantool DB

Пользователи Tarantool DB – это учетные записи для управления кластером Tarantool DB. Для работы с кластером необходимы пользователи с ролями пользователя Администратор БД и Пользователь БД. Дополнительно может использоваться Пользователь словарей.

В этом разделе описаны пользователи Tarantool DB и приведены примеры операций, которые они могут выполнять:

Пример с настройкой конфигурации для таких пользователей описан в разделе Пример конфигурации.

Администратор БД

Администратор БД (пользователь admin) предоставляет клиенту полный доступ ко всем функциям кластера, включая управление ролями пользователей, настройку параметров и репликацию. Администратор БД создает пользователей БД и сущности для работы с данными, назначает права пользователям БД для работы с БД, а также может создавать другие роли, управлять состоянием кластера и настраивать взаимодействие с другими компонентами.

Примеры поддерживаемых операций на управление пользователями (на примере пользователя db_user):

Операция

Пример команды

Описание

Создание пользователя и пароля

box.schema.user.create('db_user', {password = 'dbuser_password'})

Создает нового пользователя с указанным паролем

Изменение пароля

box.schema.user.passwd('db_user', 'new_password')

Задает новый пароль пользователю

Назначение прав

box.schema.user.grant('db_user', 'read,write', 'space', 'bands')

Дает права на чтение и запись в указанный спейс

Отключение прав

box.schema.user.revoke('db_user', 'write', 'universe')

Запрещает запись данных определенному пользователю

Удаление пользователя

box.schema.user.drop('db_user')

Удаляет пользователя из системы

Примеры поддерживаемых операций на работу с данными:

Операция

Пример команды

Создание спейса

box.schema.space.create('bands')

Удаление спейса

box.space.bands:drop()

Создание первичного индекса

box.space.bands:create_index('primary')

Создание вторичного индекса

box.space.bands:create_index('status_index', {parts = {3, 'str'}})

Задание формата данных для спейса

box.space.bands:format(...)

Пользователь БД

Пользователь БД выполняет операции чтения, записи, обновления и удаления данных в указанных спейсах в рамках прав, предоставленных администратором БД (admin). Таких пользователей может быть несколько. В примере ниже пользователь имеет название db_user.

Примеры поддерживаемых операций на работу с данными:

Операция

Пример команды

Чтение спейса целиком

box.space.bands:select{}

Чтение кортежа по ключу

crud.get('bands', 1)

Вставка или замена кортежа

crud.replace('bands', {1, 'Scorpions', 1965}) + box.space.bands:insert{2, 'Ace of Base', 1987}

Обновление кортежа

box.space.bands:update({2}, {{'=', 2, 'Pink Floyd'}})

Удаление кортежа по ключу

box.space.bands:delete{1}

Пользователь словарей

Пользователь словарей выполняет операции чтения, записи, обновления и удаления данных в словарях двумя способами:

  • через API модуля dictionary;
  • напрямую через спейс dictionary_data.

Для корректной работы со словарями требуется назначить такому пользователю в конфигурации встроенную системную роль dictionary_api_executor. Таких пользователей может быть несколько. Узнать больше: Начало работы с модулем dictionary.

В примере ниже пользователь имеет название dictionary_user.

Примеры поддерживаемых операций через API модуля dictionary:

Операция

Пример команды

Добавление нового элемента в словарь

box.schema.func.call('dictionary_router_set', 'categories', '1', 'Shops')

Получение элемента словаря

box.schema.func.call('dictionary_router_get', 'categories', '1')

Удаление элемента из словаря

box.schema.func.call('dictionary_router_del', 'categories', '1')

Получение всех данных словаря

box.schema.func.call('dictionary_router_get_entity', 'categories')

Примеры поддерживаемых операций, которые выполняются напрямую через спейс dictionary_data:

Операция

Пример команды

Добавление нового элемента в словарь

box.space.dictionary_data:insert({'categories', '1', 'Shops'})

Получение элемента словаря

box.space.dictionary_data:get({'categories', '1'})

Удаление элемента из словаря

box.space.dictionary_data:delete({'categories', '1'})

Вставка или замена элемента словаря

box.space.dictionary_data:replace({'categories', '1', 'Food'})

Импорт данных словарей через tt CLI

tt import dictionary_user:dictionary_password@localhost:3101 import_example.csv:dictionary_data --header

Экспорт данных словарей через tt CLI

tt export dictionary_user:dictionary_password@localhost:3101 dictionary_data:out.csv --header

Служебные пользователи

Служебные пользователи – это специальные учетные записи, предназначенные для выполнения системных задач. В Tarantool DB два служебных пользователя:

Для корректной работы Tarantool DB необходимо создать этих пользователей в конфигурации кластера. Эти служебные пользователи получают права через встроенные системные роли replication и sharding соответственно. Эти роли автоматически предоставляют необходимый набор прав на системные спейсы, дополнительная настройка не требуется.

Кроме того, для корректной работы кластера нужно настроить связь между его экземплярами. Параметры подключения задаются в секции iproto.advertise: в опциях iproto.advertise.peer.login и iproto.advertise.sharding указываются имена служебных пользователей с ролями replication и sharding соответственно:

iproto:  advertise:    peer:      login: replicator    sharding:      login: storage

В примере пользователи называются replicator и storage соответственно, подробный пример конфигурации для таких пользователей описан в разделе Пример конфигурации.

Пользователь для репликации внутри кластера

Пользователь используется для репликации данных между экземплярами внутри кластера Tarantool DB и проверки его состояния.

Для корректной работы репликации необходимо создать этого пользователя в конфигурации кластера и назначить ему встроенную системную роль replication. Роль дает минимальные права, достаточные для выполнения репликации данных. Набор параметров и значений в конфигурации пользователя должен быть фиксированным, за исключением параметра password.

Права и действия, разрешенные для пользователя:

  • репликация данных;
  • выполнение операций записи данных;
  • получение информации о состоянии узла.

В примере ниже пользователь имеет название replicator.

Пользователь для работы шардирования

Пользователь обеспечивает работу с данными, которые шардируются между различными узлами в кластере с помощью модуля vshard. Пользователь используется при запросах роутера к экземплярам хранилища.

Для корректной работы модуля необходимо создать этого пользователя в конфигурации кластера и назначить ему встроенную системную роль sharding. Набор параметров и значений в конфигурации пользователя должен быть фиксированным, за исключением параметра password.

Права и действия, разрешенные для пользователя:

  • управление шардированием данных в кластере;
  • выполнение операций чтения и записи для распределенных данных.

В примере ниже пользователь имеет название storage.

Пример конфигурации

Пример создания пользователей в YAML-конфигурации для Tarantool DB:

credentials:  users:    admin:      password: 'secret'      roles: [super]    db_user:      password: 'secret'      privileges:        - permissions: [execute]          universe: true        - permissions: [ read ]          spaces: [_bucket, _cooler, _ddl_sharding_key]        - permissions: [ read, write ]          spaces: [bands]    dictionary_user:      password: 'dictionary_password'      roles: [dictionary_api_executor]      privileges:        - permissions: [ read, write ]          spaces: [ dictionary_data ]    replicator:      password: 'replication_password'      roles: [replication]    storage:      password: 'sharding_password'      roles: [sharding]iproto:  advertise:    peer:      login: replicator    sharding:      login: storage

Пользователи:

  • admin: администратор БД, имеет полный доступ ко всем функциям кластера;
  • db_user: пользователь БД;
  • dictionary_user: пользователь для работы со словарями;
  • replicator: пользователь для репликации между узлами кластера, также указывается в секции iproto.advertise.peer.login;
  • storage: пользователь для работы с модулем шардирования, также указывается в секции iproto.advertise.sharding.login.

Параметры пользователей:

  • password: пароль пользователя;
  • roles: роли, назначенные пользователю. Роль определяет разрешенные действия для пользователя в кластере;
  • privileges: операции, разрешенные пользователю, например чтение и запись данных в указанный спейс, выполнение кода или функции;
    • permissions: разрешения, которые могут быть предоставлены пользователю (например, read, write, execute, create, alter, drop);
    • space: спейс, для которого предоставляются права;
    • lua_call: глобальные пользовательские Lua-функции, которые может вызвать указанный пользователь;
  • iproto.advertise.peer.login: настройка указывает, что другие экземпляры кластера TDB должны подключаться к адресу, определенному в опции iproto.listen, с помощью пользователя replicator;
  • iproto.advertise.sharding.login настройка указывает, что роутер должен подключаться к экземплярам хранилища на адрес, определенный в iproto.listen, с помощью пользователя storage.