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

    Команда Simple-Server
    03.06.2026
    5 мин

    Материал подготовлен командой 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.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны