Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Первое, что нам понадобится сделать – создать пользователя с паролем. Также надо назначить ему определенные привилегии через настройку в файле pg_hba.conf.
Шаг 1. Создадим пользователя
Зададим роль пользователя, пример команды из оболочки SQL:
CREATE USER user123 WITH PASSWORD 'myPassword';То же, но при помощи командной строки Linux:
Шаг 2. Назначим права для операций с БД
GRANT ALL PRIVILEGES ON DATABASE "database1" to user123;Теперь можно активировать подключение к базе:
Зададим права на работу с таблицами в рассматриваемой нами БД database1 и учетке user123:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "user123";Отметим, что по умолчанию система настроена на схему public, но пользователю доступно ее изменение и выбор новой.
При назначении прав есть возможность указать определенную таблицу:
GRANT ALL PRIVILEGES ON TABLE table1 IN SCHEMA public TO "user123";Пользователь PostgreSQL создан, можно закрывать оболочку и работать дальше:
Шаг 3. Настроим файл pg_hba.conf
Проверим, какие привилегии заданы без изменения настроек. Они записаны в файле pg_hba.conf. Откроем его на редактирование:
vi /var/lib/pgsql/12/data/pg_hba.confСледующий шаг управления пользователем PostgreSQL – добавление прав новому аккаунту:
# IPv4 local connections:
host all user123 127.0.0.1/32 md5Команда позволяет пользователю с именем user123 подключаться к любым базам, размещенным на сервере. Важно внести указанную информацию выше строки, имеющейся по умолчанию:
host all all 127.0.0.1/32 identЧтобы настройки применились, перезапустим службу:
systemctl restart postgresqlВ этом примере речь идет о СУБД PostgreSQL12.
Шаг 4. Протестируем работоспособность БД
Проверим подключение только что созданного пользователя:
psql -U user123 template1 -h 127.0.0.1Настроим права доступа к БД через группу
Первое действие – создадим групповую роль:
CREATE ROLE "myRole" NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;Следующим шагом внесем в нее нашего пользователя user123:
GRANT "myRole" TO user123;Теперь можно подключаться к БД:
И настроить привилегии для группы myRole:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO GROUP "myRole";Отредактируем пользователя
Перенастроить систему так же просто, как**** создать пользователя администратора. Для примера изменим пароль ранее созданного нами аккаунта. Выполняется это одной командой:
ALTER USER postgres PASSWORD 'password'Та же операция доступна и в командной строке Linux:
sudo -u postgres psql -U postgres -d postgres -c "ALTER USER postgres PASSWORD 'password'"Команда для удаления пользователя выглядит так:
Вместо удаления можно ограничить аккаунт в правах:
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM "user123";Назначим особые привилегии существующему аккаунту
При управлении пользователями и полномочиями в СУБД PostgreSQL можно задавать как «полные» права ALL PRIVILEGES, так и особые:
GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO "user123";Приведенный пример разрешает пользователю user123 считывать, редактировать и добавлять новые данные. Но удалять ничего нельзя, такие операции команда запрещает. Если требуется назначить права для работы с конкретной таблицей, команда примет такой вид:
GRANT ALL PRIVILEGES ON table_users TO "user123";Создадим учетку для резервирования БД
Создавать резервные копии рекомендуем с минимальными правами. Создадим роль пользователя на чтение PostgreSQL для выполнения процедуры:
CREATE USER bkpuser WITH PASSWORD 'bkppasswd';Здесь мы создали учетку bkpuser и задали ей пароль bkppasswd, их можно заменить на свои. Следом активируем возможность подключаться к базе:
GRANT CONNECT ON DATABASE database TO bkpuser;И предоставлять требуемые права:
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO bkpuser;В этом примере использована схема public, ее можно заменить на другую.
Подробнее о резервном копировании PostgreSQL мы писали в статье Дампы в PostgreSQL: резервное копирование и восстановление.
Запустите облачную базу в один клик
Мы завершили рассмотрение методики, как создавать пользователей PostgreSQL через консоль и настраивать их права. Иногда удобнее работать через приложения с графическим интерфейсом вроде pgAdmin, это на выбор пользователя. Поэкспериментировать без риска повредить рабочие БД проще на арендованных мощностях провайдера Simple-Server.
Кстати, в официальном канале Simple-Server собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.