Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Managed Service for PostgreSQL
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Обновление версии PostgreSQL
    • Изменение настроек кластера и базы данных
    • Подключение к DataLens
    • Управление хостами PostgreSQL
    • Управление базами данных
    • Управление PostgreSQL-расширениями
    • Управление пользователями БД
    • Назначение привилегий и ролей
    • Управление резервными копиями
    • Удаление кластера
    • Диагностика производительности
    • Мониторинг состояния кластера и хостов
  • Практические руководства
    • Создание кластера PostgreSQL для 1С
    • Выгрузка базы данных в Yandex Data Proc
    • Анализ производительности и оптимизация
    • Репликация и миграция
      • Логическая репликация PostgreSQL
      • Миграция базы данных в Managed Service for PostgreSQL
      • Миграция базы данных из Managed Service for PostgreSQL
      • Создание логической реплики Amazon RDS для PostgreSQL в Managed Service for PostgreSQL
    • Поставка данных с помощью Debezium
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for PostgreSQL
    • Квоты и лимиты
    • Хранилище в Managed Service for PostgreSQL
    • Резервные копии
    • Назначение ролей
    • Управление соединениями
    • Репликация
    • Техническое обслуживание
    • Поддерживаемые клиенты
    • Настройки PostgreSQL
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
      • С 1 марта 2019 года до 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • DatabaseService
      • ResourcePresetService
      • UserService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • get
        • list
      • Cluster
        • Overview
        • addHosts
        • backup
        • create
        • delete
        • deleteHosts
        • get
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • move
        • rescheduleMaintenance
        • restore
        • start
        • startFailover
        • stop
        • streamLogs
        • update
        • updateHosts
      • Database
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • ResourcePreset
        • Overview
        • get
        • list
      • User
        • Overview
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
    • Подключение
    • Изменение кластера
    • Настройки параметров кластера
    • Перемещение и восстановление кластера
    • Мониторинг и логи
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Управление пользователями БД

Управление пользователями БД

Статья создана
Yandex Cloud
  • Получить список пользователей
  • Добавить пользователя
  • Изменить пароль
  • Изменить настройки пользователя
  • Удалить пользователя
  • Примеры
    • Добавить пользователя с правами только на чтение

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

Важно

С помощью команд SQL вы можете назначать пользователям привилегии, но не можете добавлять и изменять пользователей. Подробнее см. в разделе Назначение привилегий и ролей пользователям.

Получить список пользователей

Консоль управления
CLI
  1. Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
  2. Нажмите на имя нужного кластера, затем выберите вкладку Пользователи.

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы получить список пользователей кластера, выполните команду:

$ yc managed-postgresql user list
     --cluster-name <имя кластера>

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

Добавить пользователя

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

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

  3. Нажмите кнопку Добавить.

  4. Введите имя пользователя базы данных и пароль.

    Примечание

    Имя пользователя может содержать латинские буквы, цифры, дефис и нижнее подчеркивание, но должно начинаться с буквы (кроме сочетания pg_), цифры или нижнего подчеркивания. Максимальная длина имени 63 символа.

    Имена admin, repl, monitor, postgres, mdb_admin, mdb_replication зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать пользователей с этими именами нельзя.

    Длина пароля от 8 до 128 символов.

  5. Выберите одну или несколько баз данных, к которым должен иметь доступ пользователь:

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

  7. Нажмите кнопку Добавить.

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы создать пользователя в кластере, выполните команду:

$ yc managed-postgresql user create <имя пользователя>
     --cluster-name <имя кластера>
     --password=<пароль для пользователя>
     --permissions=<список баз, к которым пользователь должен иметь доступ>
     --conn-limit=<максимальное количество соединений для пользователя>

В этой команде указаны только основные настройки пользователя.

Примечание

Имя пользователя может содержать латинские буквы, цифры, дефис и нижнее подчеркивание, но должно начинаться с буквы (кроме сочетания pg_), цифры или нижнего подчеркивания. Максимальная длина имени 63 символа.

Имена admin, repl, monitor, postgres, mdb_admin, mdb_replication зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать пользователей с этими именами нельзя.

Длина пароля от 8 до 128 символов.

Чтобы задать настройки СУБД для пользователя, воспользуйтесь параметрами, описанными в разделе Пользовательские настройки.

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

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

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

    Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.

  2. Добавьте к описанию кластера Managed Service for PostgreSQL блок user:

    resource "yandex_mdb_postgresql_cluster" "<имя кластера>" {
      ...
      user {
        name       = "<имя пользователя>"
        password   = "<пароль>"
        grants     = [ "<список привилегий>" ]
        login      = <разрешить выполнять вход в БД: true или false>
        conn_limit = <максимальное количество соединений>
        settings   = [ "<список настроек базы данных>" ]
        permission {
          database_name = "<имя базы данных>"
        }
      }
    }
    

    Примечание

    Имя пользователя может содержать латинские буквы, цифры, дефис и нижнее подчеркивание, но должно начинаться с буквы (кроме сочетания pg_), цифры или нижнего подчеркивания. Максимальная длина имени 63 символа.

    Имена admin, repl, monitor, postgres, mdb_admin, mdb_replication зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать пользователей с этими именами нельзя.

    Длина пароля от 8 до 128 символов.

  3. Проверьте корректность настроек.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

    Ограничения по времени

    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for PostgreSQL:

    • создание, в том числе путем восстановления из резервной копии, — 30 минут;
    • обновление — 60 минут;
    • удаление — 15 минут.

    Операции, длящиеся дольше указанного времени, прерываются.

    Как изменить эти ограничения?

    Добавьте к описанию кластера блок timeouts, например:

    resource "yandex_mdb_postgresql_cluster" "<имя кластера>" {
      ...
      timeouts {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    

Примечание

Сразу после создания пользователь получает только привилегию CONNECT для выбранных баз данных, и не может выполнять никакие операции с базами данных. Чтобы дать пользователю доступ к базам, назначьте ему нужные привилегии или роли.

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

Консоль управления
CLI
Terraform
  1. Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
  2. Нажмите на имя нужного кластера и выберите вкладку Пользователи.
  3. Нажмите значок и выберите пункт Изменить пароль.
  4. Задайте новый пароль и нажмите кнопку Изменить.

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы изменить пароль пользователя, выполните команду:

$ yc managed-postgresql user update <имя пользователя>
     --cluster-name=<имя кластера>
     --password=<новый пароль>

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

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

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

    Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.

  2. Найдите в описании кластера Managed Service for PostgreSQL блок user для нужного пользователя.

  3. Измените значение поля password:

    resource "yandex_mdb_postgresql_cluster" "<имя кластера>" {
      ...
      user {
        name     = "<имя пользователя>"
        password = "<новый пароль>"
        ...
      }
    }
    
  4. Проверьте корректность настроек.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

    Ограничения по времени

    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for PostgreSQL:

    • создание, в том числе путем восстановления из резервной копии, — 30 минут;
    • обновление — 60 минут;
    • удаление — 15 минут.

    Операции, длящиеся дольше указанного времени, прерываются.

    Как изменить эти ограничения?

    Добавьте к описанию кластера блок timeouts, например:

    resource "yandex_mdb_postgresql_cluster" "<имя кластера>" {
      ...
      timeouts {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    

Примечание

Длина пароля от 8 до 128 символов.

Изменить настройки пользователя

Примечание

Привилегии и роли PostgreSQL не затрагиваются этими настройками и настраиваются отдельно.

О том, как задать привилегии и роли для пользователя, читайте в разделе Назначение привилегий и ролей пользователям.

Консоль управления
CLI
Terraform
  1. Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
  2. Нажмите на имя нужного кластера и выберите вкладку Пользователи.
  3. Нажмите значок и выберите пункт Настройки.
  4. Настройте права пользователя на доступ к определенным базам данных:
    1. Чтобы предоставить доступ к требуемым базам данных:
      1. Выберите базу данных из выпадающего списка База данных.
      2. Нажмите кнопку Добавить справа от выпадающего списка.
      3. Повторите два предыдущих шага, пока не будут выбраны все требуемые базы данных.
    2. Чтобы отозвать доступ к определенной базе, удалите ее из перечня Права, нажав значок справа от имени базы.
  5. Измените настройки PostgreSQL для пользователя в разделе Настройки СУБД.
  6. Нажмите кнопку Сохранить.

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

  1. Чтобы настроить права пользователя на доступ к определенным базам данных, выполните команду, перечислив список имен баз данных с помощью параметра --permissions:

    $ yc managed-postgresql user update <имя пользователя>
         --cluster-name=<имя кластера>
         --permissions=<список баз, к которым пользователь должен иметь доступ>
    

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

    Эта команда предоставляет пользователю доступ к базам данных, указанным в списке.

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

  2. Чтобы изменить настройки PostgreSQL для пользователя, передайте параметры, отвечающие за требуемые настройки, в команде:

    $ yc managed-postgresql user update <имя пользователя>
         --cluster-name=<имя кластера>
         --<настройка 1>=<значение 1>
         --<настройка 2>=<значение 2>
         --<настройка 3>=<список значений>
         ...
    

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

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

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

    Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.

  2. Чтобы выдать пользователю права на доступ к определенным базам данных:

    1. Найдите в описании кластера Managed Service for PostgreSQL блок user для нужного пользователя.

    2. Добавьте блоки permission с именами нужных баз данных:

      resource "yandex_mdb_postgresql_cluster" "<имя кластера>" {
        ...
        user {
          name     = "<имя пользователя>"
          permission {
            database_name = "<имя базы данных>"
          }
          permission {
            database_name = "<имя базы данных>"
          }
          ...
        }
      }
      
  3. Чтобы отозвать у пользователя права на доступ к определенной базе, удалите блок permission с ее именем из конфигурационного файла.

  4. Чтобы изменить настройки PostgreSQL для пользователя, передайте параметры, отвечающие за требуемые настройки, в блоке settings:

    resource "yandex_mdb_postgresql_cluster" "<имя кластера>" {
      ...
      user {
        name       = "<имя пользователя>"
        ...
        settings   = [ "<список настроек базы данных>" ]
      }
    }
    
  5. Проверьте корректность настроек.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

    Ограничения по времени

    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for PostgreSQL:

    • создание, в том числе путем восстановления из резервной копии, — 30 минут;
    • обновление — 60 минут;
    • удаление — 15 минут.

    Операции, длящиеся дольше указанного времени, прерываются.

    Как изменить эти ограничения?

    Добавьте к описанию кластера блок timeouts, например:

    resource "yandex_mdb_postgresql_cluster" "<имя кластера>" {
      ...
      timeouts {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    

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

Консоль управления
CLI
Terraform
  1. Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
  2. Нажмите на имя нужного кластера и выберите вкладку Пользователи.
  3. Нажмите значок и выберите пункт Удалить.

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы удалить пользователя, выполните команду:

$ yc managed-postgresql user delete <имя пользователя>
     --cluster-name <имя кластера>

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

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

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

    Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.

  2. Удалите из описания кластера Managed Service for PostgreSQL блок user с описанием нужного пользователя.

  3. Проверьте корректность настроек.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

    Ограничения по времени

    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for PostgreSQL:

    • создание, в том числе путем восстановления из резервной копии, — 30 минут;
    • обновление — 60 минут;
    • удаление — 15 минут.

    Операции, длящиеся дольше указанного времени, прерываются.

    Как изменить эти ограничения?

    Добавьте к описанию кластера блок timeouts, например:

    resource "yandex_mdb_postgresql_cluster" "<имя кластера>" {
      ...
      timeouts {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    

Примеры

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

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

  1. Создайте пользователя с именем user2. При этом выберите базы данных, к которым должен иметь доступ пользователь.

  2. Подключитесь к базе данных db1 с помощью учетной записи владельца БД.

  3. Чтобы выдать права доступа только к таблице Products в схеме по умолчанию public, выполните команду:

    GRANT SELECT ON public.Products TO user2;
    
  4. Чтобы выдать доступ ко всем таблицам схемы myschema, выполните команду:

    GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO user2;
    GRANT USAGE ON SCHEMA myschema TO user2;
    

Для отзыва выданных привилегий выполните команды:

REVOKE SELECT ON public.Products FROM user2;

REVOKE SELECT ON ALL TABLES IN SCHEMA myschema FROM user2;
REVOKE USAGE ON SCHEMA myschema FROM user2;

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Получить список пользователей
  • Добавить пользователя
  • Изменить пароль
  • Изменить настройки пользователя
  • Удалить пользователя
  • Примеры
  • Добавить пользователя с правами только на чтение