Назначение привилегий и ролей пользователям
В Managed Service for MySQL привилегии — это атомарные полномочия пользователя в отношении отдельных объектов базы данных. Роли — это привилегии, предоставляемые пользователю в отношении всех пользовательских объектов какой-либо базы данных. Пользователи могут иметь разные наборы ролей для разных баз данных. Чтобы узнать подробнее про поддерживаемые роли, см. описание ролей.
Пользователь, создаваемый вместе с кластером Managed Service for MySQL, автоматически получает роль владельца (ALL_PRIVILEGES
) первой базы данных в кластере. После этого вы можете создавать других пользователей и настраивать их права по своему усмотрению:
- Изменить список ролей пользователя.
- Выдать привилегию пользователю.
- Отозвать привилегию у пользователя.
Изменить список ролей пользователя
Чтобы изменить список ролей пользователя:
- Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите значок и выберите пункт Настроить.
- При необходимости добавьте пользователю нужные базы данных:
- Нажмите кнопку Добавить базу данных.
- Выберите базу данных из выпадающего списка.
- Повторите два предыдущих шага, пока не будут выбраны все требуемые базы данных.
- Чтобы отозвать доступ к определенной базе, удалите ее из перечня, нажав значок справа от имени базы данных.
- Задайте нужные роли пользователя для каждой из баз данных пользователя:
- Нажмите значок в столбце Роли.
- Выберите роль, которую вы хотите добавить пользователю из выпадающего списка.
- Повторите два предыдущих шага, пока не будут добавлены все требуемые роли.
- Чтобы отозвать роль, нажмите значок справа от ее имени.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
$ yc managed-mysql user grant-permission <имя пользователя>
--cluster-name <имя кластера>
--database <имя базы данных>
--permissions <набор ролей через запятую>
Имя кластера можно получить при запросе списка кластеров в каталоге, имя базы данных — при запросе списка баз данных в кластере, имя пользователя — при запросе списка пользователей в кластере.
Чтобы выдать пользователю роль ALL_PRIVILEGES
, передайте в качестве названия роли синоним ALL
.
Воспользуйтесь методом API update и передайте в запросе:
- Идентификатор кластера, в котором находится пользователь в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя пользователя в параметре
userName
. Чтобы узнать имя, получите список пользователей в кластере. - Имя базы данных, для которой вы хотите изменить список ролей пользователя в параметре
permissions.databaseName
. Чтобы узнать имя, получите список баз данных в кластере. - Массив нового списка ролей пользователя в параметре
permissions.roles
. - Список полей конфигурации пользователя подлежащих изменению (в данном случае —
permissions
) в параметреupdateMask
.
Важно
Этот метод API сбросит все настройки пользователя, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, обязательно передайте название поля подлежащего изменению (в данном случае — permissions
) в параметре updateMask
.
Выдать привилегию пользователю
- Подключитесь к базе данных с помощью учетной записи владельца базы данных.
- Выполните команду
GRANT
. Подробное описание синтаксиса команды смотрите в документации MySQL.
Примеры:
-
Выдать пользователю
user2
права на чтение таблицыProducts
:GRANT SELECT ON Products TO user2;
-
Выдать пользователю
user2
права на чтение всех таблиц базыdb1
:GRANT SELECT ON db1.* TO user2;
Отозвать привилегию у пользователя
- Подключитесь к базе данных с помощью учетной записи владельца базы данных.
- Выполните команду
REVOKE
. Подробное описание синтаксиса команды смотрите в документации MySQL.
Примеры:
-
Отозвать у пользователя
user2
права на чтение таблицыProducts
:REVOKE SELECT ON Products FROM user2;
-
Отозвать у пользователя
user2
права на чтение всех таблиц базыdb1
:REVOKE SELECT ON db1.* FROM user2;
Описание ролей
ALL_PRIVILEGES
— позволяет совершать любые действия с пользовательскими данными в базе.ALL
— синоним для ролиALL_PRIVILEGES
, используемый при управлении ролями через CLI.ALTER
— позволяет использовать операторALTER TABLE
для изменения структуры любых пользовательских таблиц в базе данных. Требует наличия полномочийCREATE
иINSERT
. А для переименования таблиц —DROP
,CREATE
иINSERT
.ALTER_ROUTINE
— позволяет использовать операторALTER ROUTINE
для изменения или удаления любых пользовательских хранимых процедур и функций в базе данных.CREATE
— позволяет использовать операторCREATE
для создания пользовательских таблиц в базе данных.CREATE_ROUTINE
— позволяет использовать операторCREATE ROUTINE
для создания пользовательских хранимых процедур и функций в базе данных.CREATE_TEMPORARY_TABLES
— позволяет использовать операторCREATE TEMPORARY TABLE
для создания пользовательских временных таблиц в базе данных.CREATE_VIEW
— позволяет использовать операторCREATE VIEW
для создания пользовательских представлений в базе данных.DELETE
— позволяет удалять записи из любых пользовательских таблиц в базе данных.DROP
— позволяет удалять таблицы и представления.EVENT
— позволяет создавать, изменять, удалять или отображать события в Планировщике Событий (Event Scheduler).EXECUTE
— позволяет исполнять любые пользовательские хранимые процедуры и функции.INDEX
— позволяет создавать и удалять индексы у существующих в базе данных таблиц.INSERT
— позволяет вставлять записи в пользовательские таблицы в базе данных.LOCK_TABLES
— позволяет явно использовать операторLOCK_TABLES
для создания блокировок на таблицы в базе данных.SELECT
— позволяет читать данные из таблиц в базе данных.SHOW_VIEW
— позволяет использовать операторSHOW CREATE VIEW
.TRIGGER
— позволяет создавать, удалять, исполнять или отображать триггеры у существующих в базе данных таблиц.UPDATE
— позволяет обновлять записи в таблицах в базе данных.