Управление пользователями PostgreSQL
Вы можете добавлять и удалять пользователей, а также управлять их индивидуальными настройками.
Важно
С помощью команд SQL вы можете назначать пользователям привилегии, но не можете добавлять и изменять пользователей. Подробнее см. в разделе Назначение привилегий и ролей пользователям PostgreSQL.
Получить список пользователей
- Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера, затем выберите вкладку Пользователи.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список пользователей кластера, выполните команду:
yc managed-postgresql user list
--cluster-name <имя кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
Воспользуйтесь методом API list и передайте в запросе идентификатор кластера в параметре clusterId
.
Идентификатор кластера можно получить со списком кластеров в каталоге.
Добавить пользователя
-
Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
-
Нажмите на имя нужного кластера и выберите вкладку Пользователи.
-
Нажмите кнопку Добавить.
-
Введите имя пользователя базы данных и пароль.
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и нижнее подчеркивание, но должно начинаться с буквы (кроме сочетания
pg_
), цифры или нижнего подчеркивания. Максимальная длина имени 63 символа.Имена
admin
,repl
,monitor
,postgres
,mdb_admin
,mdb_monitor
,mdb_replication
зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать пользователей с этими именами нельзя.Длина пароля от 8 до 128 символов.
-
Выберите одну или несколько баз данных, к которым должен иметь доступ пользователь:
- Выберите базу данных из выпадающего списка База данных.
- Нажмите кнопку Добавить справа от выпадающего списка.
- Повторите два предыдущих шага, пока не будут выбраны все требуемые базы данных.
- Чтобы удалить базу, добавленную по ошибке, нажмите значок
справа от имени базы в перечне Права.
-
Задайте настройки СУБД для пользователя.
-
Нажмите кнопку Добавить.
Если у вас еще нет интерфейса командной строки 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 символов.
Чтобы задать настройки СУБД для пользователя, воспользуйтесь параметрами, описанными в разделе Пользовательские настройки.
Имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание PostgreSQL-кластера.
Полный список доступных для изменения полей конфигурации пользователей кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.
-
Добавьте ресурс
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 символов.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Воспользуйтесь методом 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
для выбранных баз данных, и не может выполнять никакие операции с базами данных. Чтобы дать пользователю доступ к базам, назначьте ему нужные привилегии или роли.
Изменить пароль
- Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите значок
- Задайте новый пароль и нажмите кнопку Изменить.
Примечание
Длина пароля от 8 до 128 символов.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить пароль пользователя, выполните команду:
yc managed-postgresql user update <имя пользователя>
--cluster-name=<имя кластера>
--password=<новый пароль>
Примечание
Длина пароля от 8 до 128 символов.
Имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание PostgreSQL-кластера.
Полный список доступных для изменения полей конфигурации пользователей кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.
-
Найдите ресурс
yandex_mdb_postgresql_user
нужного пользователя. -
Измените значение поля
password
:resource "yandex_mdb_postgresql_user" "<имя пользователя>" { ... name = "<имя пользователя>" password = "<новый пароль>" ... }
Примечание
Длина пароля от 8 до 128 символов.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Воспользуйтесь методом API update и передайте в запросе:
-
Идентификатор кластера, в котором находится пользователь, в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. -
Имя пользователя в параметре
userName
. Чтобы узнать имя пользователя, получите список пользователей в кластере. -
Новый пароль пользователя в параметре
password
.Примечание
Длина пароля от 8 до 128 символов.
-
Список полей конфигурации пользователя, подлежащих изменению (в данном случае —
password
), в параметреupdateMask
.
Важно
Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Изменить настройки пользователя
Примечание
Привилегии и роли PostgreSQL не затрагиваются этими настройками и настраиваются отдельно.
О том, как задать привилегии и роли для пользователя, читайте в разделе Назначение привилегий и ролей пользователям PostgreSQL.
- Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите значок
- Настройте права пользователя на доступ к определенным базам данных:
- Чтобы предоставить доступ к требуемым базам данных:
- Выберите базу данных из выпадающего списка База данных.
- Нажмите кнопку Добавить справа от выпадающего списка.
- Повторите два предыдущих шага, пока не будут выбраны все требуемые базы данных.
- Чтобы отозвать доступ к определенной базе, удалите ее из перечня Права, нажав значок
справа от имени базы.
- Чтобы предоставить доступ к требуемым базам данных:
- Нажмите Настройки СУБД, чтобы изменить максимальное допустимое количество соединений пользователя (Conn limit), возможность подключения к кластеру (Login) или другие настройки PostgreSQL.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Из интерфейса командной строки можно изменить настройки пользователя:
-
Чтобы настроить права пользователя на доступ к определенным базам данных, выполните команду, перечислив список имен баз данных с помощью параметра
--permissions
:yc managed-postgresql user update <имя пользователя> --cluster-name=<имя кластера> --permissions=<список баз, к которым пользователь должен иметь доступ>
Имя кластера можно запросить со списком кластеров в каталоге.
Эта команда предоставляет пользователю доступ к базам данных, указанным в списке.
Чтобы отозвать доступ к определенной базе, исключите ее имя из списка и передайте команде обновленный список.
-
Чтобы изменить настройки PostgreSQL для пользователя, передайте параметры, отвечающие за требуемые настройки, в команде:
yc managed-postgresql user update <имя пользователя> --cluster-name=<имя кластера> --<настройка 1>=<значение 1> --<настройка 2>=<значение 2> --<настройка 3>=<список значений> ...
Чтобы изменить лимит подключений пользователя, используйте параметр
--conn-limit
.Имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание PostgreSQL-кластера.
Полный список доступных для изменения полей конфигурации пользователей кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.
-
Чтобы выдать пользователю права на доступ к определенным базам данных:
-
Найдите ресурс
yandex_mdb_postgresql_user
нужного пользователя. -
Добавьте блоки
permission
с именами нужных баз данных:resource "yandex_mdb_postgresql_user" "<имя пользователя>" { ... name = "<имя пользователя>" permission { database_name = "<имя базы данных>" } permission { database_name = "<имя базы данных>" } ... }
-
-
Чтобы отозвать у пользователя права на доступ к определенной базе, удалите блок
permission
с ее именем из конфигурационного файла. -
Чтобы изменить настройки PostgreSQL для пользователя, передайте параметры, отвечающие за требуемые настройки, в блоке
settings
:resource "yandex_mdb_postgresql_user" "<имя пользователя>" { ... name = "<имя пользователя>" settings = { <настройки базы данных> } ... }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Воспользуйтесь методом API update и передайте в запросе:
- Идентификатор кластера, в котором находится пользователь, в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя пользователя в параметре
userName
. Чтобы узнать имя пользователя, получите список пользователей в кластере. - Новые значения настроек пользователя.
- Список полей конфигурации пользователя, подлежащих изменению, в параметре
updateMask
.
Важно
Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Удалить пользователя
- Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите значок
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить пользователя, выполните команду:
yc managed-postgresql user delete <имя пользователя>
--cluster-name <имя кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание PostgreSQL-кластера.
Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.
-
Удалите ресурс
yandex_mdb_postgresql_user
с описанием нужного пользователя. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Воспользуйтесь методом API delete и передайте в запросе:
- Идентификатор кластера, в котором находится пользователь, в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя пользователя в параметре
userName
. Чтобы узнать имя пользователя, получите список пользователей в кластере.
Примеры
Добавить пользователя с правами только на чтение
Чтобы добавить в существующий кластер нового пользователя user2
с доступом только на чтение к базе данных db1
:
-
Создайте пользователя с именем
user2
. При этом выберите базы данных, к которым должен иметь доступ пользователь. -
Подключитесь к базе данных
db1
с помощью учетной записи владельца БД. -
Чтобы выдать права доступа только к таблице
Products
в схеме по умолчаниюpublic
, выполните команду:GRANT SELECT ON public.Products TO user2;
-
Чтобы выдать доступ ко всем таблицам схемы
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;