Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for MySQL®
  • Начало работы
    • Все инструкции
      • Управление пользователями
      • Управление правами пользователей
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

В этой статье:

  • Изменить привилегии пользователя
  • Примеры
  • Создать пользователя с правами только на чтение
  1. Пошаговые инструкции
  2. Пользователи MySQL®
  3. Управление правами пользователей

Управление правами пользователей

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.
  • Изменить привилегии пользователя
  • Примеры
    • Создать пользователя с правами только на чтение

Вы можете управлять правами пользователей на уровне отдельной базы данных, изменяя привилегии пользователей.

Важно

Чтобы изменить права пользователей на уровне всего кластера или отдельной базы данных, используйте интерфейсы Yandex Cloud. Изменения, внесенные командами SQL, не сохраняются.

Подробнее см. в разделе Права пользователей.

Изменить привилегии пользователяИзменить привилегии пользователя

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.

  2. Нажмите на имя нужного кластера и выберите вкладку Пользователи.

  3. Нажмите значок и выберите пункт Настроить.

  4. При необходимости добавьте пользователю нужные базы данных:

    1. Нажмите кнопку Добавить базу данных.
    2. Выберите базу данных из выпадающего списка.
    3. Повторите два предыдущих шага, пока не будут выбраны все требуемые базы данных.
    4. Чтобы отозвать доступ к определенной базе, удалите ее из перечня, нажав значок справа от имени базы данных.
  5. Задайте нужные привилегии пользователя для каждой из баз данных пользователя:

    1. Нажмите значок в столбце Роли.
    2. Выберите привилегию, которую вы хотите добавить пользователю из выпадающего списка.
    3. Повторите два предыдущих шага, пока не будут добавлены все требуемые привилегии.
  6. Чтобы отозвать привилегию, нажмите значок справа от ее имени.

  7. При необходимости задайте административные привилегии для пользователя.

  8. Нажмите кнопку Сохранить.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  • Добавить привилегии пользователю:

    yc managed-mysql user grant-permission <имя_пользователя> \
      --cluster-name <имя_кластера> \
      --database <имя_БД> \
      --permissions <набор_привилегий_через_запятую>
    

    Имя кластера можно запросить со списком кластеров в каталоге, имя базы данных — со списком баз данных в кластере, имя пользователя — со списком пользователей в кластере.

  • Отозвать привилегии у пользователя:

    yc managed-mysql user revoke-permission <имя_пользователя> \
      --cluster-name <имя_кластера> \
      --database <имя_БД> \
      --permissions <набор_привилегий_через_запятую>
    

    Чтобы добавить или отозвать привилегию ALL_PRIVILEGES, передайте в качестве названия синоним ALL.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера.

  2. Найдите ресурс yandex_mdb_mysql_user нужного пользователя и измените список его привилегий для требуемой БД в параметре roles:

    resource "yandex_mdb_mysql_user" "<имя_пользователя>" {
      cluster_id = "<идентификатор_кластера>"
      name       = "<имя_пользователя>"
      permission {
        database_name = "<имя_БД>"
        roles         = [<список_привилегий>]
      }
      ...
    }
    

    Где:

    • database_name — имя БД, к которой пользователь должен иметь доступ.
    • roles — список привилегий пользователя по отношению к БД.
  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом User.update и выполните запрос, например, с помощью cURL:

    Важно

    Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask (одной строкой через запятую).

    curl \
        --request PATCH \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \
        --data '{
                  "updateMask": "permissions",
                  "permissions": [
                    {
                      "databaseName": "<имя_БД>",
                      "roles": [
                        "<привилегия_1>", "<привилегия_2>", ..., "<привилегия_N>"
                      ]
                    }
                  ]
                }'
    

    Где:

    • updateMask — перечень изменяемых параметров в одну строку через запятую.

      В данном случае передается только один параметр.

    • permissions — настройки разрешений пользователя:

      • databaseName — имя базы данных, к которой пользователь получает доступ.
      • roles — массив привилегий пользователя. Каждая привилегия представлена в виде отдельной строки в массиве. Список доступных значений см. в разделе Привилегии пользователей в кластере.

      Для каждой базы данных добавьте отдельный элемент с настройками разрешений в массив permissions.

    Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя пользователя — со списком пользователей в кластере.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом UserService/Update и выполните запрос, например, с помощью gRPCurl:

    Важно

    Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре update_mask (в виде массива строк paths[]).

    Формат перечисления настроек
    "update_mask": {
        "paths": [
            "<настройка_1>",
            "<настройка_2>",
            ...
            "<настройка_N>"
        ]
    }
    
    grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/user_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d '{
              "cluster_id": "<идентификатор_кластера>",
              "user_name": "<имя_пользователя>",
              "update_mask": {
                "paths": [
                  "permissions"
                ]
              },
              "permissions": [
                {
                  "database_name": "<имя_БД>",
                  "roles": [
                    "<привилегия_1>", "<привилегия_2>", ..., "<привилегия_N>"
                  ]
                }
              ]
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.mysql.v1.UserService.Update
    

    Где:

    • update_mask — перечень изменяемых параметров в виде массива строк paths[].

      В данном случае передается только один параметр.

    • permissions — настройки разрешений пользователя:

      • database_name — имя базы данных, к которой пользователь получает доступ.
      • roles — массив привилегий пользователя. Каждая привилегия представлена в виде отдельной строки в массиве. Список доступных значений см. в разделе Привилегии пользователей в кластере.

      Для каждой базы данных добавьте отдельный элемент с настройками разрешений в массив permissions.

    Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя пользователя — со списком пользователей в кластере.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

ПримерыПримеры

Создать пользователя с правами только на чтениеСоздать пользователя с правами только на чтение

Чтобы в существующем кластере cluster1 создать нового пользователя user2 с паролем SecretPassword и доступом к базе данных db1 только для чтения:

Консоль управления
CLI
Terraform

Создайте пользователя с именем user2. При создании пользователя:

  1. Добавьте базу db1 в список баз данных.
  2. Добавьте роль SELECT для базы db1.
  1. Создайте пользователя user2:

    yc managed-mysql user create "user2" \
      --cluster-name "cluster1" \
      --password "SecretPassword"
    
  2. Добавьте роль SELECT для базы db1:

    yc managed-mysql users grant-permission "user2" \
      --cluster-name "cluster1" \
      --database "db1" \
      --permissions "SELECT"
    
  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера MySQL®.

  2. Добавьте ресурс yandex_mdb_mysql_user:

    resource "yandex_mdb_mysql_user" "user2" {
      cluster_id = yandex_mdb_mysql_cluster.cluster1.id
      name       = "user2"
      password   = "SecretPassword"
      permission {
        database_name = "db1"
        roles         = ["SELECT"]
      ...
      }
    }
    
  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Была ли статья полезна?

Предыдущая
Управление пользователями
Следующая
Просмотр логов кластера
Проект Яндекса
© 2025 ООО «Яндекс.Облако»