Управление правами пользователей
Вы можете управлять правами пользователей на уровне отдельной базы данных, изменяя привилегии пользователей.
Важно
Чтобы изменить права пользователей на уровне всего кластера или отдельной базы данных, используйте интерфейсы Yandex Cloud. Изменения, внесенные командами SQL, не сохраняются.
Подробнее см. в разделе Права пользователей.
Изменить привилегии пользователя
-
Перейдите на страницу каталога
и выберите сервис Managed Service for MySQL. -
Нажмите на имя нужного кластера и выберите вкладку
-
Нажмите значок
-
При необходимости добавьте пользователю нужные базы данных:
- Нажмите кнопку Добавить базу данных.
- Выберите базу данных из выпадающего списка.
- Повторите два предыдущих шага, пока не будут выбраны все требуемые базы данных.
- Чтобы отозвать доступ к определенной базе, удалите ее из перечня, нажав значок
-
Задайте нужные привилегии пользователя для каждой из баз данных пользователя:
- Нажмите значок
- Выберите привилегию, которую вы хотите добавить пользователю из выпадающего списка.
- Повторите два предыдущих шага, пока не будут добавлены все требуемые привилегии.
- Нажмите значок
-
Чтобы отозвать привилегию, нажмите значок
-
При необходимости задайте административные привилегии для пользователя.
-
Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --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
.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание MySQL-кластера.
-
Найдите ресурс
yandex_mdb_mysql_user
нужного пользователя и измените список его привилегий для требуемой БД в параметреroles
:resource "yandex_mdb_mysql_user" "<имя_пользователя>" { cluster_id = "<идентификатор_кластера>" name = "<имя_пользователя>" permission { database_name = "<имя_БД>" roles = [<список_привилегий>] } ... }
Где:
database_name
— имя БД, к которой пользователь должен иметь доступ.roles
— список привилегий пользователя по отношению к БД.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Чтобы изменить привилегии пользователя, воспользуйтесь методом REST API update для ресурса User или вызовом gRPC API UserService/Update и передайте в запросе:
- Идентификатор кластера, в котором находится пользователь, в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя пользователя в параметре
userName
. Чтобы узнать имя, получите список пользователей в кластере. - Имя базы данных, для которой вы хотите изменить список привилегий пользователя, в параметре
permissions.databaseName
. Чтобы узнать имя, получите список баз данных в кластере. - Новый список привилегий пользователя, представленный в виде массива, в параметре
permissions.roles
. - Список полей конфигурации пользователя, которые необходимо изменить (в данном случае —
permissions
), в параметреupdateMask
.
Важно
Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Примеры
Создать пользователя с правами только на чтение
Чтобы в существующем кластере cluster1
создать нового пользователя user2
с паролем SecretPassword
и доступом к базе данных db1
только для чтения:
Создайте пользователя с именем user2
. При создании пользователя:
- Добавьте базу
db1
в список баз данных. - Добавьте роль
SELECT
для базыdb1
.
-
Создайте пользователя
user2
:yc managed-mysql user create "user2" \ --cluster-name "cluster1" \ --password "SecretPassword"
-
Добавьте роль
SELECT
для базыdb1
:yc managed-mysql users grant-permission "user2" \ --cluster-name "cluster1" \ --database "db1" \ --permissions "SELECT"
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание MySQL-кластера.
-
Добавьте ресурс
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"] ... } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform