- Создание пользователя PostgreSQL
- Различие в командах CREATE USER и CREATE ROLE
- Добавление и удаление прав с помощью групп
- Удаление пользователя
PostgreSQL – мощная система управления базами данных с открытым исходным кодом, которая используется во всем мире для управления данными. Создание пользователей в PostgreSQL – это одна из основных задач администратора базы данных. В этой статье мы подробно рассмотрим процесс создания пользователей в PostgreSQL.
Прежде чем приступить к созданию пользователя в PostgreSQL, необходимо установить саму систему управления базами данных и войти в систему с правами администратора.
Создание пользователя PostgreSQL
Способ 1. С помощью CREATE USER
Важно! Обратите внимание, что для выполнения этой команды необходимо обладать правами администратора, у которого есть привилегии на создание пользователей.
Создание суперпользователя
Чтобы создать суперпользователя с паролем и правами администратора в PostgreSQL, выполните следующие шаги:
- Сначала откройте командную строку через утилиту psql или используя команду:
- Затем введите следующую команду:
Где «имя» и «'пароль'» – соответствующие значения.
Когда вы выполните команду, в системе появится пользователь с правами администратора. Это позволит ему полностью управлять базой данных (БД).
Создание обычного пользователя
Чтобы создать обычного пользователя, используйте следующую команду:
Где «имя» и «'пароль'» – соответствующие значения.
Помимо этого, вы можете добавить дополнительные параметры, например, ограничения на подключение или права доступа к БД:
Параметр CONNECTION LIMIT указывает максимальное количество одновременных подключений, которые может установить данный пользователь. В нашем примере пользователь будет ограничен 10 одновременными подключениями к базе данных.
Способ 2. Через pgAdmin
Если вы предпочитаете использовать интерфейс администрирования, такой как pgAdmin, создание новых пользователей выполняется следующим образом:
- Откройте pgAdmin и подключитесь к серверу PostgreSQL.
- В левой панели навигации выберите базу данных, в которой вы хотите создать пользователя.
- Щёлкните правой кнопкой мыши на «Login/Group Roles».
- Выберите «Create», а затем – «Login/Group Role».
- В появившемся окне заполните следующую информацию:
- В разделе General в поле Name введите имя пользователя.
- В разделе Definition в поле Password введите пароль новой учётной записи.
Здесь же можно настроить дополнительные параметр: CONNECTION LIMIT и дату истечения прав учётной записи. Чтобы установить неограниченное количество подключений, задайте значение CONNECTION LIMIT на -1. Если для пользователя задан вход без пароля, то значение в поле Account expires применяться не будет.
- В разделе Privileges выберите необходимые привилегии. Например, включите опцию «Can login?», нажав на переключатель справа, чтобы разрешить пользователю вход в систему. Здесь же можно назначить пользователю права суперпользователя с помощью опции «Superuser?».
- В разделе Membership вы можете назначить пользователю специфические роли.
- Проверьте сгенерированный SQL-код на крайней правой вкладке и затем нажмите кнопку Save, чтобы создать пользователя с выбранными параметрами.
Готово! Теперь пользователь создан. Вы можете увидеть его в списке «Login/Group Roles».
Различие в командах CREATE USER и CREATE ROLE
Роли в современных версиях СУБД PostgreSQL могут представлять как отдельных пользователей (с правами входа в систему или без них), так и целые группы. Для создания ролей в базе данных используются команды CREATE ROLE и CREATE USER, о котором мы говорили ранее. Они выполняют схожие функции, но есть небольшие различия в синтаксисе.
Команда CREATE ROLE часто используется для создания роли без права входа в систему. Это означает, что созданная роль не сможет подключаться к серверу PostgreSQL и выполнять операции в базе данных: например, пользователю не будет доступно добавление, изменение и удаление данных. Это полезно, если вам нужно создать роль только для чтения, например:
Команду CREATE USER обычно используют, чтобы создать роли с возможностью входа в систему. Значит, созданный пользователь сможет подключаться к серверу PostgreSQL и выполнять различные операции в базе данных.
Таким образом, команда CREATE USER – это, по сути, команда CREATE ROLE с опцией LOGIN. Например, команды «CREATE USER user» и «CREATE ROLE user WITH LOGIN» равнозначны.
Добавление и удаление прав с помощью групп
В Postgres роли могут наследовать привилегии от других ролей. А поскольку роль можно назначить как одному пользователю, так и группе, пользователи могут наследовать привилегии от групп или других пользователей.
В качестве примера давайте создадим две группы: одну с правами только на чтение данных, а другую – с правами на чтение и запись. Затем мы поочерёдно назначим эти группы пользователю и проверим результаты.
Создание групп
- Создайте группы, прописав:
CREATE ROLE "read_write_role";
Новые группы созданы, но мы пока не назначили им никаких привилегий. В нашей базе данных есть таблица swebtbl, на которой мы будем проверять назначение привилегий.
- Группе read_only_role дайте права на чтение этой таблицы, а группе read_write_role – права на чтение и запись:
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE swebtbl TO read_write_role;
Назначение привилегий пользователю
Группы созданы, но пользователь пока не унаследовал их привилегии. Сначала нужно убедиться, что у пользователя нет прав на чтение данных из таблицы.
- Войдите в базу данных как пользователь sweb_user и выполните команду:
На экране появится ошибка
- Присвойте пользователю роль на чтение:
Итак, теперь у пользователя есть права на чтение данных из таблицы, но нет прав на вставку данных (а также изменение и удаление).
- Заберите у пользователя группу на чтение и присвоим группу с правами на чтение и запись:
GRANT read_write_role TO sweb_user;
Готово! У пользователя появились права на запись в таблицу.
Изменение и обновление пользователя
После создания пользователя можно использовать команду ALTER USER, чтобы изменить его разрешения.
Формат команды ALTER USER в PostgreSQL включает имя пользователя, за которым следуют различные параметры. В PostgreSQL допустимы следующие изменения:
- Если вы допустили ошибку при назначении разрешений и хотите их отозвать, можно использовать команду ALTER USER с необходимыми параметрами.
Например, чтобы удалить статус SUPERUSER у пользователя swebusr, выполните следующую команду:
- Чтобы снова предоставить пользователю swebusr права суперпользователя, используйте следующую команду:
Удаление пользователя
Вы можете удалить пользователя из PostgreSQL, если уверены, что он больше не нужен.
Важно! Удаление пользователя не затронет саму базу данных, однако могут возникнуть проблемы, если этот пользователь – владелец каких-либо объектов в базе данных.
Синтаксис:
- Убедитесь, что он не владеет какими-либо объектами в базе данных. В противном случае, вы получите сообщение об ошибке:
- Если пользователь действительно владелец объектов, вам нужно сначала сменить его. Например, чтобы сменить владельца таблицы, пропишите:
Чтобы сменить владельца базы данных, выполните:
- Теперь можно удалить пользователя:
Заключение
В этой статье мы рассмотрели пошаговый процесс создания пользователей, назначения им привилегий, изменения их разрешений и удаления из базы данных.
Теперь, следуя нашим инструкциям, вы сможете:
- создавать новых пользователей с помощью команд CREATE USER и CREATE ROLE;
- назначать и изменять привилегии пользователей с помощью команд GRANT и ALTER USER;
- управлять наследованием привилегий через группы ролей;
- удалять пользователей.
Эти операции помогут вам поддерживать порядок и безопасность в вашей базе данных PostgreSQL, обеспечивая точное распределение прав доступа среди пользователей. Важно регулярно проверять и обновлять привилегии пользователей, чтобы соответствовать изменяющимся требованиям и поддерживать высокий уровень безопасности данных.