Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for PostgreSQL
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Обновление версии PostgreSQL
    • Изменение настроек кластера и базы данных
    • Подключение к DataLens
    • Управление хостами PostgreSQL
    • Управление базами данных
    • Расширения PostgreSQL
    • Управление пользователями БД
    • Назначение привилегий и ролей
    • Управление резервными копиями
    • Просмотр логов кластера
    • Удаление кластера
    • Диагностика производительности
    • Мониторинг состояния кластера и хостов
    • Управление слотами репликации
  • Практические руководства
  • Концепции
  • Управление доступом
  • Правила тарификации
  • Справочник API
  • История изменений
  • Вопросы и ответы
  1. Пошаговые инструкции
  2. Управление пользователями БД

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

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

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

Важно

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

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

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

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

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

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

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

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

Воспользуйтесь методом API list и передайте в запросе идентификатор кластера в параметре clusterId.

Идентификатор кластера можно получить со списком кластеров в каталоге.

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

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

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

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

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

    Примечание

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

    Имена admin, repl, monitor, postgres, mdb_admin, mdb_monitor, 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_monitor, mdb_replication зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать пользователей с этими именами нельзя.

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

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

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

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

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

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

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

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

    Примечание

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

    Имена admin, repl, monitor, postgres, mdb_admin, mdb_monitor, 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. Дождитесь завершения операции.

Воспользуйтесь методом API create и передайте в запросе:

  • Идентификатор кластера, в котором вы хотите создать пользователя, в параметре clusterId. Чтобы узнать идентификатор, получите список кластеров в каталоге.

  • Имя пользователя в параметре userSpec.name.

  • Пароль пользователя в параметре userSpec.password.

    Примечание

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

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

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

  • Одну или несколько баз данных, к которым должен иметь доступ пользователь, в одном или нескольких параметрах userSpec.permissions.databaseName.

  • Максимальное количество соединений для пользователя в параметре userSpec.connLimit.

Примечание

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

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

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

Примечание

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

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

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

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

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

Примечание

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

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

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

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

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

  2. Найдите ресурс yandex_mdb_postgresql_user нужного пользователя.

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

    resource "yandex_mdb_postgresql_user" "<имя пользователя>" {
      ...
      name     = "<имя пользователя>"
      password = "<новый пароль>"
      ...
    }
    

    Примечание

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

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

Воспользуйтесь методом API update и передайте в запросе:

  • Идентификатор кластера, в котором находится пользователь, в параметре clusterId. Чтобы узнать идентификатор, получите список кластеров в каталоге.

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

  • Новый пароль пользователя в параметре password.

    Примечание

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

  • Список полей конфигурации пользователя, подлежащих изменению (в данном случае — password), в параметре updateMask.

Важно

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

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

Примечание

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

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

Консоль управления
CLI
Terraform
API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
  2. Нажмите на имя нужного кластера и выберите вкладку Пользователи.
  3. Нажмите значок и выберите пункт Настроить.
  4. Настройте права пользователя на доступ к определенным базам данных:
    1. Чтобы предоставить доступ к требуемым базам данных:
      1. Выберите базу данных из выпадающего списка База данных.
      2. Нажмите кнопку Добавить справа от выпадающего списка.
      3. Повторите два предыдущих шага, пока не будут выбраны все требуемые базы данных.
    2. Чтобы отозвать доступ к определенной базе, удалите ее из перечня Права, нажав значок справа от имени базы.
  5. Нажмите Настройки СУБД, чтобы изменить максимальное допустимое количество соединений пользователя (Conn limit), возможность подключения к кластеру (Login) или другие настройки 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>=<список значений>
         ...
    

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

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

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

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

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

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

    1. Найдите ресурс yandex_mdb_postgresql_user нужного пользователя.

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

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

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

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

Воспользуйтесь методом API update и передайте в запросе:

  • Идентификатор кластера, в котором находится пользователь, в параметре clusterId. Чтобы узнать идентификатор, получите список кластеров в каталоге.
  • Имя пользователя в параметре userName. Чтобы узнать имя пользователя, получите список пользователей в кластере.
  • Новые значения настроек пользователя.
  • Список полей конфигурации пользователя, подлежащих изменению, в параметре updateMask.

Важно

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

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

Консоль управления
CLI
Terraform
API
  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. Удалите ресурс yandex_mdb_postgresql_user с описанием нужного пользователя.

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

Воспользуйтесь методом API delete и передайте в запросе:

  • Идентификатор кластера, в котором находится пользователь, в параметре clusterId. Чтобы узнать идентификатор, получите список кластеров в каталоге.
  • Имя пользователя в параметре userName. Чтобы узнать имя пользователя, получите список пользователей в кластере.

Примеры

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

Чтобы добавить в существующий кластер нового пользователя 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
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Получить список пользователей
  • Добавить пользователя
  • Изменить пароль
  • Изменить настройки пользователя
  • Удалить пользователя
  • Примеры
  • Добавить пользователя с правами только на чтение