box.space._user
-
box.space.
_user
¶ _user
– это системный спейс, где хранятся имена пользователей и хеши паролей.Кортежи в данном спейсе включают в себя следующие поля:
- a numeric id of the tuple («id»)
- a numeric id of the tuple’s creator
- a name
- a type: „user“ or „role“
- (optional) a password hash
- (optional) an array of previous authentication data
- (optional) a timestamp of the last password update
В спейсе
_user
есть пять специальных кортежей: „guest“, „admin“, „public“, „replication“ и „super“.Имя ID Тип Описание guest 0 user (пользователь) Default user when connecting remotely. Usually, an untrusted user with few privileges. admin 1 user (пользователь) Default user when using Tarantool as a console. Usually, an administrative user with all privileges. public 2 роль Заданная роль, которая автоматически выдается новым пользователям при их создании методом box.schema.user.create(имя-пользователя)
. Таким образом, лучше всего выдать права на чтение „read“ спейса „t“ каждому когда-либо созданному пользователю с помощьюbox.schema.role.grant('public','read','space','t')
.replication 3 роль Заданная роль, выдаваемая пользователем „admin“ другим пользователям для использования функций репликации. super 31 роль Заданная роль, выдаваемая пользователем „admin“ другим пользователям для получения всех прав на все объекты. Для роли „super“ такие права выданы на „universe“: чтение, запись, выполнение, создание, удаление, изменение. To select a tuple from the
_user
space, usebox.space._user:select()
. In the example below,select
is executed for a user with id = 0. This is the „guest“ user that has no password.tarantool> box.space._user:select{0} --- - - [0, 1, 'guest', 'user'] ...
Предупреждение
To change tuples in the
_user
space, do not use ordinarybox.space
functions for insert, update, or delete. The_user
space is special, so there are special functions that have appropriate error checking.Чтобы создать нового пользователя, используйте box.schema.user.create():
box.schema.user.create(*user-name*) box.schema.user.create(*user-name*, {if_not_exists = true}) box.schema.user.create(*user-name*, {password = *password*})
To change the user’s password, use box.schema.user.passwd():
-- Чтобы изменить пароль текущего пользователя box.schema.user.passwd(*пароль*) -- Чтобы изменить пароль другого пользователя -- (обычно это может делать только 'admin') box.schema.user.passwd(*имя-пользователя*, *пароль*)
Чтобы удалить пользователя, используйте box.schema.user.drop():
box.schema.user.drop(*имя-пользователя*)
Чтобы проверить, существует ли пользователь, воспользуйтесь box.schema.user.exists(), которая вернет
true
(правда) илиfalse
(ложь):box.schema.user.exists(*имя-пользователя*)
Чтобы узнать, какие права есть у пользователя, используйте box.schema.user.info():
box.schema.user.info(*имя-пользователя*)
Примечание
Максимальное количество пользователей – 32.
Пример:
Ниже представлена сессия, в рамках которой создается новый пользователь с надежным паролем, выбирается кортеж из спейса
_user
, а затем пользователь удаляется.tarantool> box.schema.user.create('JeanMartin', {password = 'Iwtso_6_os$$'}) --- ... tarantool> box.space._user.index.name:select{'JeanMartin'} --- - - [17, 1, 'JeanMartin', 'user', {'chap-sha1': 't3xjUpQdrt857O+YRvGbMY5py8Q='}] ... tarantool> box.schema.user.drop('JeanMartin') --- ...
Представление системного спейса
_user
—_vuser
.