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

Обновлено: 05.07.2024

Я пытаюсь сделать ограниченных пользователей БД для приложения, над которым я работаю, и я хочу удалить пользователя базы данных Postgres, который я использую для экспериментов. Есть ли способ удалить пользователя без необходимости сначала отозвать все его права вручную или отозвать все гранты пользователя?

это на самом деле псевдоним для DROP ROLE .

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

это лучше всего достигается путем

последний удалит любые привилегии, предоставленные пользователю.

см. документы postgres для ПАДЕНИЕ РОЛИ и более подробная описание этого.

дополнение:

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

также обратите внимание, если вы явно предоставили:

CONNECT ON DATABASE xxx TO GROUP ,

вам нужно будет отменить это отдельно от капли, принадлежащей, используя:

REVOKE CONNECT ON DATABASE xxx FROM GROUP

принятый ответ привел к ошибкам для меня при попытке переназначить принадлежит или падение принадлежит. Для меня сработало следующее:

пользователь может иметь привилегии в других схемах, в этом случае вам придется запустить соответствующую строку отзыва с заменой "public" правильной схемой. Чтобы показать все схемы и типы привилегий для пользователя, я отредактировал команду \dp, чтобы сделать этот запрос:

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

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

Я создал пользователя с именем "msf" и некоторое время боролся, чтобы удалить пользователя и воссоздать его. Я пошел по нижним ступенькам и добился успеха.

dropuser — удалить учётную запись пользователя PostgreSQL

Синтаксис

dropuser [ параметр-подключения . ] [ параметр . ] [ имя_пользователя ]

Описание

dropuser удаляет ранее созданного пользователя PostgreSQL . Лишь суперпользователь или пользователь с привилегией CREATEROLE могут удалять пользователей PostgreSQL . Необходимо быть суперпользователем, чтобы удалить учётную запись другого суперпользователя.

dropuser это обёртка для SQL -команды DROP ROLE . Удаление пользователей с её помощью по сути не отличается от выполнения того же действия при обращении к серверу другими способами.

Параметры

dropuser принимает в качестве аргументов:

Указывает имя удаляемой роли PostgreSQL . Если передан флаг -i / --interactive , а имя не указано в параметрах команды, его необходимо будет ввести интерактивно. -e
--echo

Вывести команды к серверу, генерируемые при выполнении dropuser . -i
--interactive

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

Вывести версию dropuser . --if-exists

Вывести справку по команде dropuser .

dropuser также принимает из командной строки параметры подключения:

Указывает имя компьютера, на котором работает сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета. -p порт
--port= порт

Указывает TCP-порт или расширение файла локального Unix-сокета, через который сервер принимает подключения. -U имя_пользователя
--username= имя_пользователя

Имя пользователя, под которым производится текущее подключение к базе. -w
--no-password

Не выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль не доступен с помощью других средств, таких как файл .pgpass , попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль. -W
--password

Принудительно запрашивать пароль перед подключением к базе данных.

Это несущественный параметр, так как dropuser запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако чтобы понять это, dropuser лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести -W , чтобы исключить эту ненужную попытку подключения.

Переменные окружения

Параметры подключения по умолчанию

Эта утилита, как и большинство других утилит PostgreSQL , также использует переменные среды, поддерживаемые libpq (см. Раздел 33.14).

Диагностика

В случае возникновения трудностей, обратитесь к DROP ROLE и psql . При диагностике следует учесть, что при запуске утилиты также применяются переменные окружения и параметры подключения по умолчанию libpq .

Примеры

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

Чтобы удалить роль joe на сервере eden , слушающем подключения на порту 5000, в интерактивном режиме и с выводом выполняемых команд:


Шаг 7) Создайте базу данных и назначьте на нее владельца myguru.



PostgreSQL Создать пользовательский SQLShell (командная строка)

Вы можете создать пользователя с помощью командной строки

В PostgreSQL этот метод более удобен для программистов и администраторов, поскольку они имеют доступ к консоли сервера PostgreSQL. Более того, их необходимо выполнить с помощью одной команды вместо входа в систему и использования интерфейса клиента PostgreSQL.

создаст пользователя Том

Создаст пользовательский том с привилегиями суперпользователя. Давайте посмотрим на следующий пример.


Шаг 2) Введите команду \ du в контрольный список пользователей


ПРИМЕЧАНИЕ. CREATE USER аналогична команде CREATE ROLE. Разница между этими двумя командами заключается в том, что при написании команды CREATE USER она по умолчанию находится в состоянии LOGIN, тогда как NOLOGIN предполагается, когда используется опция CRETE ROLE.

Добавить существующего пользователя в базу данных

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

Например, мы предоставляем пользователю mytest все привилегии для пользователя guru99.


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

Команда GRANT очень мощная. Вы можете дать пользователю детальные права, такие как «Выбрать», «Вставить», «Обновить».

Обновление PostgreSQL ПОЛЬЗОВАТЕЛЬ

Изменение существующих прав пользователя

Теперь, когда наш новый пользователь «mytest» существует, вы можете использовать ALTER USER для изменения разрешений, предоставленных библиотекарю.

Формат ALTER USER включает имя пользователя, за которым следуют некоторые параметры, чтобы сообщить PostgreSQL, какие допустимые изменения необходимо сделать:

Отзыв разрешений

Вам нужно использовать эту команду, когда вы делаете ошибку и неправильно назначаете разрешение, которое вы можете отозвать. Вы можете использовать команду ALTER USER без префикса перед разрешающими опциями.

Например, мы можем удалить статус SUPERUSER из mytest, например:

Используя \ du, вы увидите, что привилегия суперпользователя удалена.


Назначение разрешения

Используя \ du, вы увидите, что привилегия суперпользователя добавлена.


PostgreSQL, удаляющий пользователя

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


Как только мы изменим владельца базы данных, пользователь может быть удален

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

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

Владелец базы данных — это пользователь, которому переходят права владения объектами удаленных пользователей. После удаления пользователя вы не потеряете доступ к объектам, которые он создал, а сможете управлять ими через пользователя-владельца. В отличие от пользователя, владелец базы данных имеет доступ ко всем ее объектам и может совершать операции с ними.

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

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

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

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

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

Доступ к базам данных

Выдача доступа пользователю

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

  1. Перейдите в раздел Облачная платформа ⟶ Базы данных.
  2. Перейдите на страницу нужного кластера баз данных и откройте вкладку Базы данных.
  3. Откройте страницу базы данных, в блоке Имеют доступ нажмите кнопку Добавить.
  4. В списке выберите пользователя и подтвердите изменения.

После создания пользователь может только подключиться к базе данных ( CONNECT ) и не может выполнять никакие операции с объектами БД. Чтобы дать пользователю доступ к объектам, выдайте ему нужные привилегии.

Изменение владельца базы данных

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

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

  1. Перейдите в раздел Облачная платформа ⟶ Базы данных.
  2. Перейдите на страницу нужного кластера баз данных и откройте вкладку Базы данных.
  3. Откройте страницу базы данных, в списке Владелец базы выберите другого владельца и подтвердите изменения.

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

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

  1. Перейдите в раздел Облачная платформа ⟶ Базы данных.
  2. Перейдите на страницу нужного кластера баз данных и откройте вкладку Базы данных.
  3. Откройте страницу базы данных, в блоке Имеют доступ удалите нужного пользователя и подтвердите изменения.

Выдача и отзыв привилегий у пользователя

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

По умолчанию владельцы объекта имеют доступ и все права на объект.

Выдача привилегий пользователю

Выдача привилегий происходит с помощью команды GRANT , которая назначает права (привилегии) пользователям на объекты баз данных. Привилегии могут быть следующие: SELECT , INSERT , DELETE , USAGE и т.д.

Пример выдачи доступа на чтение ( SELECT ) к таблице table пользователю user :

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

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

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

Для создания пользователя схемы с правами только на чтение (read-only) создайте пользователя и подключитесь к базе данных.

Затем создайте схему и таблицу:

Отзыв привилегий у пользователя

Для отзыва привилегий используется команда REVOKE , подробное описание синтаксиса команды в документации PostgreSQL.

Читайте также: