Установка postgresql какой пароль

Как изменить пароль пользователя PostgreSQL?

Отредактируйте /etc/postgresql/9.1/main/pg_hba.conf (путь будет отличаться) и измените:

Затем перезапустите сервер:

Ответ 3

Вы можете и должны иметь пароль пользователя зашифрован:

Ответ 4

Я считаю, что лучший способ изменить пароль — это просто:

в консоли Postgres.

Следует соблюдать осторожность при указании незашифрованного пароля с помощью этой команды. Пароль будет передан на сервер в cleartext, и он также может быть зарегистрирован в истории команд клиента или журнал сервера. psql содержит команду\пароль, которая может быть использована для изменения пароля роли без раскрытия пароля открытого текста.

Ответ 5

Чтобы изменить пароль с помощью командной строки Linux, используйте:

Ответ 6

Перейдите в свой Postgresql Config и Edit pg_hba.conf

sudo vim /etc/postgresql/9.3/main/pg_hba.conf

Затем измените эту строку:

затем перезапустите службу PostgreSQL с помощью команды SUDO, затем

Теперь вы будете введены и увидите столбец Postgresql

и введите новый пароль для пользователя Postgres по умолчанию. После успешного изменения пароля снова перейдите к pg_hba.conf и верните изменение на «md5»

теперь вы войдете в систему как

с новым паролем.

Сообщите мне, если вы все найдете в нем какие-либо проблемы.

Ответ 7

Теперь введите новый пароль и подтвердите

затем \q для выхода

Ответ 8

Чтобы запросить новый пароль для пользователя postgres (не показывая его в команде):

Ответ 9

Конфигурация, которую я получил на своем сервере, была сильно изменена, и мне удалось изменить пароль только после того, как я установил доверительную аутентификацию в pg_hba.conf :

Не забудьте изменить это обратно на пароль или md5

Ответ 10

Это был первый результат в google, когда я смотрел, как переименовать пользователя, так:

Несколько других команд полезны для управления пользователями:

Переместить пользователя в другую группу

Ответ 11

Для моего случая на Ubuntu 14.04 установлен Postgres 10.3. Мне нужно выполнить следующие шаги

  • su — postgres для переключения пользователя на postgres
  • psql для входа в оболочку Postgres
  • \password затем введите свой пароль
  • \q чтобы выйти из сеанса оболочки

Затем вы переключаетесь обратно в root, выполняя exit и конфигурируете свой pg_hba.conf (мой находится в /etc/postgresql/10/main/pg_hba.conf ), убедившись, что у вас есть следующая строка

local all postgres md5

Ответ 12

введите новый пароль, который вы хотите для этого пользователя, а затем подтвердите его. Если вы не помните пароль и хотите изменить его, вы можете войти в систему как postgres, а затем использовать это:

Ответ 13

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

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

  1. Если у вас нет SSL и вы изменяете удаленно, вы передаете простой текстовый пароль по сети.
  2. Если для вашей конфигурации ведения журнала задано ведение отчетов DDL log_statement = ddl или более поздней версии, то ваш простой текстовый пароль будет отображаться в журналах ошибок.
    1. Если вы не защищаете эти журналы, это проблема.
    2. Если вы соберете эти журналы /ETL и покажете их там, где другие имеют доступ, они могут в конечном итоге увидеть этот пароль и т.д.
    3. Если вы позволяете пользователю управлять своим паролем, он неосознанно раскрывает пароль администратору или сотруднику низкого уровня, которому поручено просматривать журналы.

    С учетом вышесказанного мы можем изменить пароль пользователя, создав md5-пароль.

      Postgres, когда хеширует пароль как md5, соединяет пароль с именем пользователя, а затем добавляет текст «md5» к полученному хешу.
    • В PowerShell:
    • Итак, наконец наша команда ALTER USER будет выглядеть как

    Пароль всегда хранится в зашифрованном виде в системных каталогах. Ключевое слово ENCRYPTED не имеет никакого эффекта, но принимается для обратной совместимости. Способ шифрования определяется параметром конфигурации password_encryption. Если представленная строка пароля уже имеет формат MD5 или SCRAM, то она сохраняется как есть, независимо от password_encryption (поскольку система не может расшифровать указанную зашифрованную строку пароля, чтобы зашифровать ее в другом формате). Это позволяет перезагрузить зашифрованные пароли во время дампа/восстановления.

    Ответ 14

    и полностью автоматизированный способ с bash и ожидаем (в этом примере мы предоставляем новому администратору postgres недавно предоставленный postgres pw как на уровне ОС, так и на уровне времени выполнения postgres)

    Источник

    

    Установка и работа с PostgreSQL

    PostgreSQL — объектно-реляционная система управления базами данных. PostgreSQL базируется на языке SQL, отличается гибкостью и надежностью и поддерживает множество возможностей. Чаще всего PostgreSQL используется для сложных проектов, где требуется работа со сложными структурами данных, которые могут не поддерживаться обычными СУБД.

    В статье мы рассмотрим установку PostgreSQL на VDS с Ubuntu 18.04 и особенности работы с ней.

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

    Установка PostgreSQL

    PostgreSQL присутствует в официальных репозиториях Ubuntu, поэтому для установки достаточно выполнить:

    Таким образом вы обновите локальный индекс пакетов и установите PostgreSQL вместе с пакетом contrib, который содержит дополнительный функционал и утилиты для работы СУБД.

    При установке будет автоматически создана роль и пользователь в системе Linux postgres, под которым можно будет начать работу с PostgreSQL.

    Пользователи (роли)

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

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

    Как отмечалось выше, во время установки была автоматически создана роль postgres. Вы можете работать с СУБД из-под нее. Для этого переключитесь на сессию данного пользователя:

    После чего запустите консоль Postgres:

    После завершения работы вы сможете выйти из консоли Postgres командой \q :

    Так как для каждой созданной роли Postgres предполагает наличие базы данных с таким же именем и по умолчанию подключается именно к ней, имеет смысл создавать новую роль для каждой базы. Кроме того, если имя роли совпадает с именем пользователя, созданного в системе Linux, подключение к БД также упрощается.

    Создание новой роли

    Создать роль из консоли системы (не psql) можно с помощью команды:

    Ключ -P позволит сразу задать пароль пользователю, а —interactive запустит интерактивный режим для указания дополнительных параметров.

    Система поочередно запросит имя новой роли, ее пароль и повтор пароля, а также позволит указать привилегии: сделать ли роль суперпользователем, должны ли быть права на создание баз данных и создание других ролей. Нажимайте y / n и Enter для выбора.

    Создать роль из консоли Postgres можно с помощью команды CREATE ROLE.

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

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

    Далее задайте новому пользователю пароль:

    Просмотр существующих ролей

    Чтобы просмотреть созданных пользователей и их привилегии, перейдите в консоль Postgres:

    И выполните команду:

    Нажмите q, чтобы закрыть вывод, и \q, если нужно выйти из консоли Postgres.

    Удаление роли

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

    Либо команду в консоли Postgres:

    Смена пароля пользователя

    Для смены пароля одной из ролей подключитесь к Postgres от суперпользователя (postgres или другой роли с такими привилегиями), после чего выполните:

    Обратите внимание, что эта операция сохранится в файле .psql_history вместе с паролем в открытом виде. Из соображений безопасности рекомендуется удалить соответствующую запись из файла.

    Как правило, файл размещается в директории /var/lib/postgresql . Проверить его расположение можно в терминале системы с помощью:

    Откройте файл, указав корректный путь к нему:

    Удалите запись с паролем и сохраните изменения.

    Создание базы данных

    Создать базу из консоли системы можно следующим образом:

    Для создания базы из консоли Postgres, используйте:

    Вывести список баз можно командой \l в консоли Postgres:

    Подключение к базе данных

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

    Например, если на сервере создан пользователь timeweb, а в Postgres — одноименная роль и база, подключиться можно с помощью данной команды:

    После подключения можно выполнить команду \conninfo, чтобы посмотреть информацию о текущем соединении.

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

    2. Если имя роли не совпадает с именем пользователя Linux, необходимо указать дополнительные параметры в команде.

    2.1. Если имя роли и имя базы совпадают, достаточно выполнить:

    Как видно из вывода \conninfo, мы подключены к базе tmweb от одноименной роли.

    2.2. Если имя роли и базы отличаются, базу также нужно указать в команде:

    3. Если вы подключаетесь к другой базе данных уже в консоли Postgres, используйте:

    Резервные копии (экспорт и импорт дампа)

    При установке PostgreSQL на сервер устанавливаются утилиты pg_dump и pg_restore , с помощью которых вы сможете из консоли Linux создавать резервные копии базы данных (pg_dump) и восстанавливать данные из них ( pg_restore ).

    Создание резервной копии

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

    • хост — сервер, на котором располагается база; может быть указан localhost, IP-адрес или домен;
    • имя_роли — имя пользователя PostgreSQL, под которым вы подключаетесь к базе;
    • формат_дампа — формат, в котором будет сохранен дамп; указывается буквами c, t или p: ‘с‘ (custom — архив .tar.gz), ‘t‘ (tar — архив .tar), ‘p‘ (plain — текстовый файл без сжатия, как правило, .sql);
    • путь_к_дампу — путь сохранения для файла дампа и имя файла;
    • имя_базы — имя базы данных, для которой создается резервная копия.

    После выполнения команды будет запрошен пароль пользователя Postgres, указанного в команде (в примере — tmweb).

    Восстановление из дампа

    Импорт дампов, сохраненных в форматах .tar.gz и .tar, выполняется с помощью pg_restore :

    • хост — сервер, на котором располагается база; может быть указан localhost, IP-адрес или домен;
    • имя_роли — имя пользователя PostgreSQL, под которым вы подключаетесь к базе;
    • формат_дампа — формат, в котором был сохранен дамп; необходимо указать ‘с‘ для архива .tar.gz и ‘t‘ для архива .tar;
    • имя_базы — имя базы данных, в которую импортируется дамп;
    • путь_к_дампу — путь к файлу дампа и имя файла.

    Для импорта дампов в формате .sql используется cat:

    • путь_к_дампу — путь к файлу дампа и имя файла;
    • хост — сервер, на котором располагается база; может быть указан localhost, IP-адрес или домен;
    • имя_роли — имя пользователя PostgreSQL, под которым вы подключаетесь к базе;
    • имя_базы — имя базы данных, в которую импортируется дамп.

    Работа с шаблонами баз данных

    При установке PostgreSQL по умолчанию создаются три базы данных: postgres, template0, template1.

    Template0 и template1 — это шаблоны баз данных, из которых в дальнейшем будут создаваться пользовательские БД.

    Фактически, когда вы выполняете команду CREATE DATABASE, Postgres создает клон базы template1. Если внести изменения в template1, они будут наследоваться всеми новыми создаваемыми базами. Это позволяет, например, добавить в template1 необходимые вам таблицы с данными или установить расширения, после чего не потребуется добавлять их для каждой новой базы.

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

    Подключитесь к шаблону template1:

    И установите расширение:

    Например, если вы установите в template1 расширение pgcrypto, то в дальнейшем, при выполнении CREATE DATABASE, новые базы будут создаваться с уже установленным pgrypto.

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

    Чтобы создать "чистую" базу на основе template0, нужно выполнить:

    Также template0 необходима, если вам нужно внести изменения в кодировку или локаль создаваемой базы данных. По умолчанию (при использовании template1) эти изменения невозможны.

    В этом случае нужно при создании базы указать template0 в качестве шаблона и указать требуемую кодировку и/или локаль, например:

    Пересоздание template1

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

    Сначала необходимо указать, что template1 не является шаблоном, чтобы удаление стало возможно:

    Далее удалить template1:

    И создать базу template1 заново, указав, что она будет являться шаблоном:

    Параметры и конфигурационные файлы

    Узнать расположение конфигурационного файла (как правило, размещается по пути: /etc/postgresql/версия/main/postgresql.conf ) можно с помощью:

    Узнать значение какого-либо параметра Postgres:

    Получить расширенную информацию о параметре можно из представления pg_settings : будет выведено не только установленное значение, но также файл, в котором он назначен, максимальные и минимальные значения.

    Чтобы вывести информацию в удобном для восприятия формате, можно сменить представление командой \x:

    Источник

    Как работать с пользователями в PostgreSQL

    Часть нижеописанных операций нужно выполнять в командной оболочке PostgreSQL. Она может быть запущена от пользователя postgres — чтобы войти в систему от данного пользователя, вводим:

    * если система выдаст ошибку, связанную с нехваткой прав, сначала повышаем привилегии командой sudo su или su.

    Теперь запускаем командную оболочку PostgreSQL:

    $ psql -Upostgres template1

    * в данном примере, вход выполняется от учетной записи postgres к шаблонной базе template1.

    Для просмотра всех пользователей СУБД:

    =# select * from pg_user;

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

    Для того, чтобы была возможность подключения к СУБД PostgreSQL от нового пользователя, необходимо создать данного пользователя, назначить ему права, выполнить настройку файла pg_hba.conf.

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

    Добавление новой роли (пользователя):

    =# CREATE USER dmosk WITH PASSWORD 'myPassword';

    * в примере создана роль dmosk с паролем myPassword.

    2. Назначение прав на использование базы данных

    Даем права на базу командой:

    =# GRANT ALL PRIVILEGES ON DATABASE "database1" to dmosk;

    Теперь подключаемся к базе, к которой хотим дать доступ:

    * в примере подсоединимся к базе с названием database1.

    а) Так мы добавим все права на использование всех таблиц в базе database1 учетной записи dmosk:

    database1=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "dmosk";

    * в большинстве случаев, используется схема по умолчанию public. Но администратор может создать новую схему. Это нужно учитывать при назначении прав.

    б) Также можно дать доступ к базе для определенных таблиц:

    database1=# GRANT ALL PRIVILEGES ON TABLE table1 IN SCHEMA public TO "dmosk";

    * в данном примере мы даем права на таблицу table1.

    Выходим из SQL-оболочки:

    3. Настройка файла pg_hba.conf

    Для возможности подключиться к СУБД от созданного пользователя, необходимо проверить настройки прав в конфигурационном файле pg_hba.conf.

    Для начала смотрим путь расположения данных для PostgreSQL:

    В ответ мы получим, что-то на подобие:

    * в данном примере /var/lib/pgsql/9.6/data/ — путь расположения конфигурационных файлов.

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

    .
    # IPv4 local connections:
    host all dmosk 127.0.0.1/32 md5
    .

    * в данном примере мы разрешили подключаться пользователю dmosk ко всем базам на сервере (all) от узла 127.0.0.1 (localhost) с требованием пароля (md5).
    * необходимо, чтобы данная строка была выше строки, которая прописана по умолчанию
    host all all 127.0.0.1/32 ident.

    После перезапускаем службу:

    systemctl restart postgresql-9.6

    * в данном примере установлен postgresql версии 9.6, для разных версий на разных операционных системах команды для перезапуска сервиса могут быть разные.

    4. Проверка

    Для теста пробуем подключиться к Postgre с помощью созданного пользователя:

    psql -Udmosk template1 -h127.0.0.1

    Настройка прав доступа к базе с помощью групп

    Сначала создадим групповую роль:

    =# CREATE ROLE "myRole" NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

    * данной командой создана группа myRole с минимальными правами.

    Теперь добавим ранее созданного пользователя dmosk в эту группу:

    =# GRANT "myRole" TO dmosk;

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

    и предоставим все права для группы myRole всем таблицам базы database1

    database1=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO GROUP "myRole";

    Редактирование пользователя

    1. Смена пароля

    Рассмотрим несколько примеров смены пароля пользователя.

    =# ALTER USER postgres PASSWORD 'password'

    * в данном примере мы зададим пароль password для пользователя postgres.

    С запросов ввода пароля:

    * после ввода данной команды система потребует дважды ввести пароль для пользователя (в нашем примере, postgres).

    Удаление пользователей и групп

    Удаление пользователя выполняется следующей командой:

    =# DROP USER dmosk;

    database1=# REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM "dmosk";

    * обратите внимание, данный запрос отличается от предоставления прав двумя моментами: 1) вместо GRANT пишем REVOKE; 2) вместо TO "dmosk" пишем FROM "dmosk";

    Назначение особых прав пользователям PostgreSQL

    Помимо ALL PRIVILEGES можно выдавать права на особые операции, например:

    =# GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO "dmosk";

    * команда позволит выдать права на получение данных, их обновление и добавление. Другие операции, например, удаление будут запрещены для пользователя dmosk.

    Назначение прав для определенной таблицы:

    database1=# GRANT ALL PRIVILEGES ON table_users TO "dmosk";

    * в данном примере мы предоставим все права на таблицу table_users в базе данных database1;

    Учетная запись для резервного копирования

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

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

    =# CREATE USER bkpuser WITH PASSWORD 'bkppasswd';

    * мы создадим учетную запись bkpuser с паролем bkppasswd.

    Предоставляем права на подключения к базе

    =# GRANT CONNECT ON DATABASE database TO bkpuser;

    * в данном примере к базе database.

    Подключаемся к базе (в нашем примере database):

    Даем права на все последовательности в схеме:

    =# GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO bkpuser;

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

    Графический интерфейс

    Иногда проще воспользоваться программой для выставления прав и работы с PostgreSQL. Могу посоветовать приложение pgAdmin. Оно позволит в оконном режиме не только создать и удалить пользователей, но и полноценно работать с СУБД.

    Источник

    Как изменить пароль пользователя PostgreSQL?

    Отредактируйте /etc/postgresql/9.1/main/pg_hba.conf (путь будет отличаться) и измените:

    Затем перезапустите сервер:

    Ответ 3

    Вы можете и должны иметь пароль пользователя зашифрован:

    Ответ 4

    Я считаю, что лучший способ изменить пароль — это просто:

    в консоли Postgres.

    Следует соблюдать осторожность при указании незашифрованного пароля с помощью этой команды. Пароль будет передан на сервер в cleartext, и он также может быть зарегистрирован в истории команд клиента или журнал сервера. psql содержит команду\пароль, которая может быть использована для изменения пароля роли без раскрытия пароля открытого текста.

    Ответ 5

    Чтобы изменить пароль с помощью командной строки Linux, используйте:

    Ответ 6

    Перейдите в свой Postgresql Config и Edit pg_hba.conf

    sudo vim /etc/postgresql/9.3/main/pg_hba.conf

    Затем измените эту строку:

    затем перезапустите службу PostgreSQL с помощью команды SUDO, затем

    Теперь вы будете введены и увидите столбец Postgresql

    и введите новый пароль для пользователя Postgres по умолчанию. После успешного изменения пароля снова перейдите к pg_hba.conf и верните изменение на «md5»

    теперь вы войдете в систему как

    с новым паролем.

    Сообщите мне, если вы все найдете в нем какие-либо проблемы.

    Ответ 7

    Теперь введите новый пароль и подтвердите

    затем \q для выхода

    Ответ 8

    Чтобы запросить новый пароль для пользователя postgres (не показывая его в команде):

    Ответ 9

    Конфигурация, которую я получил на своем сервере, была сильно изменена, и мне удалось изменить пароль только после того, как я установил доверительную аутентификацию в pg_hba.conf :

    Не забудьте изменить это обратно на пароль или md5

    Ответ 10

    Это был первый результат в google, когда я смотрел, как переименовать пользователя, так:

    Несколько других команд полезны для управления пользователями:

    Переместить пользователя в другую группу

    Ответ 11

    Для моего случая на Ubuntu 14.04 установлен Postgres 10.3. Мне нужно выполнить следующие шаги

    • su — postgres для переключения пользователя на postgres
    • psql для входа в оболочку Postgres
    • \password затем введите свой пароль
    • \q чтобы выйти из сеанса оболочки

    Затем вы переключаетесь обратно в root, выполняя exit и конфигурируете свой pg_hba.conf (мой находится в /etc/postgresql/10/main/pg_hba.conf ), убедившись, что у вас есть следующая строка

    local all postgres md5

    Ответ 12

    введите новый пароль, который вы хотите для этого пользователя, а затем подтвердите его. Если вы не помните пароль и хотите изменить его, вы можете войти в систему как postgres, а затем использовать это:

    Ответ 13

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

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

    1. Если у вас нет SSL и вы изменяете удаленно, вы передаете простой текстовый пароль по сети.
    2. Если для вашей конфигурации ведения журнала задано ведение отчетов DDL log_statement = ddl или более поздней версии, то ваш простой текстовый пароль будет отображаться в журналах ошибок.
      1. Если вы не защищаете эти журналы, это проблема.
      2. Если вы соберете эти журналы /ETL и покажете их там, где другие имеют доступ, они могут в конечном итоге увидеть этот пароль и т.д.
      3. Если вы позволяете пользователю управлять своим паролем, он неосознанно раскрывает пароль администратору или сотруднику низкого уровня, которому поручено просматривать журналы.

      С учетом вышесказанного мы можем изменить пароль пользователя, создав md5-пароль.

        Postgres, когда хеширует пароль как md5, соединяет пароль с именем пользователя, а затем добавляет текст «md5» к полученному хешу.
      • В PowerShell:
      • Итак, наконец наша команда ALTER USER будет выглядеть как

      Пароль всегда хранится в зашифрованном виде в системных каталогах. Ключевое слово ENCRYPTED не имеет никакого эффекта, но принимается для обратной совместимости. Способ шифрования определяется параметром конфигурации password_encryption. Если представленная строка пароля уже имеет формат MD5 или SCRAM, то она сохраняется как есть, независимо от password_encryption (поскольку система не может расшифровать указанную зашифрованную строку пароля, чтобы зашифровать ее в другом формате). Это позволяет перезагрузить зашифрованные пароли во время дампа/восстановления.

      Ответ 14

      и полностью автоматизированный способ с bash и ожидаем (в этом примере мы предоставляем новому администратору postgres недавно предоставленный postgres pw как на уровне ОС, так и на уровне времени выполнения postgres)

      Источник

      Читайте также:  Установка сигнализации с автозапуском киа сид 2012
Adblock
detector