System Administration

Этот пост - краткая инструкция для начинающих, для тех кто впервые установил PostgreSQL. Здесь вся необходимая информация для того, чтобы начать работу с PostgreSQL.

Подключение к СУБД

Первое, что нужно сделать - получить доступ к PostgreSQL, доступ в качестве суперпользователя.
Настройки аутентификации находятся в файле pg_hba.conf.
  1. local all postgres peer
Эта строка говорит о том, что пользователь postgres может подключаться к любой базе данных локальной СУБД PostgreSQL через сокет. Пароль при этом вводить не надо, операционная система передаст имя пользователя, и оно будет использовано для аутентификации.
Подключаемся:
  1. $ sudo -u postgres psql postgres postgres
Чтобы иметь возможность подключаться по сети, надо в pg_hdba.conf добавить строку:
  1. # TYPE DATABASE USER ADDRESS METHOD
  2. hostssl all all 0.0.0.0/0 md5
Метод аутентификации md5 означает, что для подключения придется ввести пароль. Это не очень удобно, если вы часто пользуетесь консолью psql. Если вы хотите автоматизировать какие-то действия, то плохая новость в том, что psql не принимает пароль в качестве аргумента. Есть два пути решения этих проблем: установка соответствующей переменной окружения и хранение пароля в специальном файле.pgpass .

Установка переменной окружения PGPASSWORD

Сразу скажу, что лучше этот способ не использовать, потому что некоторые операционные системы позволяют просматривать обычным пользователям переменные окружение с помощью ps. Но если хочется, то надо написать в терминале:
  1. export PGPASSWORD=mypasswd
Переменная будет доступна в текущей сессии. Если нужно задать переменную для всех сессий, то надо добавить строку из примера в файл.bashrc или.bash_profile

Хранение пароля в файле.pgpass

Если мы говорим о Linux, то файл должен находится в $HOME (/home/username). Права на запись и чтение должны быть только у владельца (0600). В файл нужно записывать строки вида:
  1. hostname:port:database:username:password
В первые четыре поля можно записать "*", что будет означать отсутствие фильтрации (полную выборку).

Получение справочной информации

\? - выдаст все доступные команды вместе с их кратким описанием,
\h - выдаст список всех доступных запросов,
\h CREATE - выдаст справку по конкретному запросу.

Управление пользователями СУБД

Как получить список пользователей PostgreSQL? Или можно сделать запрос к таблице pg_user.
  1. SELECT * FROM pg_user ;

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

Из командной оболочки psql это можно сделать с помощью команды CREATE.
  1. CREATE USER username WITH password "password" ;
Или можно воспользоваться терминалом.
  1. createuser -S -D -R -P username
Ввод пароля будет запрошен.

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

  1. ALTER USER username WITH PASSWORD "password" ;

Изменение ролей пользователя

Чтобы пользователь имел право создавать базы данных, выполните запрос:
  1. ALTER ROLE username WITH CREATEDB ;

Управление базами данных

Вывод списка баз данных в терминале psql: Тоже самое из терминала Linux:
  1. psql -l
Создание базы данных из psql (PostgreSQL Terminal)
  1. CREATE DATABASE dbname OWNER dbadmin ;
Создание новой базы данных при помощи терминала:
  1. createdb -O username dbname;

Настройка прав доступа к базе данных

Если пользователь является владельцем (owner) базы данных, то у него есть все права. Но если вы хотите дать доступ другому пользователю, то сделать это можно с помощью команды GRANT. Запрос ниже позволит пользователю подключаться к базе данных. Но не забывайте о конфигурационном файле pg_hba.conf, в нем тоже должны быть соответствующие разрешения на подключение.
  1. GRANT CONNECT ON DATABASE dbname TO dbadmin ;

В утилите sudo, используемой для организации выполнения команд от имени других пользователей, выявлена уязвимость (CVE-2019-18634), которая позволяет повысить свои привилегии в системе. Проблема […]

Выпуск WordPress 5.3 улучшает и расширяет представленный в WordPress 5.0 редактор блоков новым блоком, более интуитивным взаимодействием и улучшенной доступностью. Новые функции в редакторе […]

После девяти месяцев разработки доступен мультимедиа-пакет FFmpeg 4.2, включающий набор приложений и коллекцию библиотек для операций над различными мультимедиа-форматами (запись, преобразование и […]

  • Новые функции в Linux Mint 19.2 Cinnamon

    Linux Mint 19.2 является выпуском с долгосрочной поддержкой, который будет поддерживаться до 2023 года. Он поставляется с обновленным программным обеспечением и содержит доработки и множество новых […]

  • Вышел дистрибутив Linux Mint 19.2

    Представлен релиз дистрибутива Linux Mint 19.2, второго обновления ветки Linux Mint 19.x, формируемой на пакетной базе Ubuntu 18.04 LTS и поддерживаемой до 2023 года. Дистрибутив полностью совместим […]

  • Доступны новые сервисные релизы BIND, которые содержат исправления ошибок и улучшения функций. Новые выпуски могут быть скачано со страницы загрузок на сайте разработчика: […]

    Exim — агент передачи сообщений (MTA), разработанный в Кембриджском университете для использования в системах Unix, подключенных к Интернету. Он находится в свободном доступе в соответствии с […]

    После почти двух лет разработки представлен релиз ZFS on Linux 0.8.0, реализации файловой системы ZFS, оформленной в виде модуля для ядра Linux. Работа модуля проверена с ядрами Linux c 2.6.32 по […]

    Комитет IETF (Internet Engineering Task Force), занимающийся развитием протоколов и архитектуры интернета, завершил формирование RFC для протокола ACME (Automatic Certificate Management Environment) […]

    Некоммерческий удостоверяющий центр Let’s Encrypt, контролируемый сообществом и предоставляющий сертификаты безвозмездно всем желающим, подвёл итоги прошедшего года и рассказал о планах на 2019 год. […]

    Внимание : Если Вы работаете в ОС Windows и еще не устанавливали PostgreSQL и «Дебет Плюс V12», тогда можете скачать со страницы закачки сборку «Дебет Плюс V12» с предустановленной СУБД PostgreSQL и подключенной базой данных (с базовой конфигурацией для Украины). В ином случае Вам нужно предварительно установить СУБД PostgreSQL и программный комплекс «Дебет Плюс V12», после чего можно будет настроить соединение и импортировать базу данных PostgreSQL, руководствуясь данной инструкцией.

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

      Запустите «Дебет Плюс V12» и добавьте новую базу (контекстное меню «Добавить новую»).

      Оставьте отметку в поле "Добавить в список существующую".

    «СУБД» - POSTGRE.

    «Сервер базы данных» - localhost.

    «Имя базы данных» - укажите имя базы данных из СУБД PostgreSQL латинскими буквами в нижнем регистре (маленькими буквами).

    Примечание: Обычно используется одна база. Для специальных целей, базу можно разбить на несколько, тогда нужно поставить галочку напротив «Использовать несколько баз данных», нажать кнопку «Далее» и указать соответствие «меток» физическим базам. Это может быть нужно, например, в том случае, если базы данных нескольких предприятий будут ссылаться на одни и те же справочники (контрагентов, номенклатуры и т.п.). Этот случай далее не обсуждается.

    «Каталог настроек» - укажите путь к настройкам базы для PostgreSQL (диск\DebetPlusV12\base\pgdpbase).

    Сохраните внесенные изменения путем нажатия кнопки «Готово».

      Запустите pgAdmin (администратор СУБД PostgreSQL), добавьте сервер (File/Add Server...) и добавьте новую базу (меню «New Database...»).

    Введите имя сервера, localhost в поле Host, остальные поля заполняйте по желанию.

    Введите название базы данных в поле «Name» (такое же, как ввели в поле «Сервер» в настройках соединения с базой данных «Дебет Плюс V12»).

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

    Укажите путь к архиву базы dpbase.bakup (диск\DebetPlusV12\base\pgdpbase).

      Можно добавить пользователя dpadmin, который является администратором в «Дебет Плюс V12» по умолчанию (без пароля).

    Присвойте все права данному пользователю.

    Примечание : Можно пользователя dpadmin не добавлять, тогда при активации базы нужно будет вводить имя администратора postgres.

    Обновите список баз (меню «Refresh»).

    Примечание : Если Вы не хотите присваивать пользователю права «Superuser», тогда присвойте права на «Tables» и «Views». Для этого, выделив соответствующий объект, выберите пункт контекстного меню «Grant Wizard».

    На вкладке «Selection» нажмите кнопку «Check all», а на вкладке «Privileges» поставьте отметку «ALL» и нажмите кнопку «Add/Change». Сохраните изменения.

      Активируйте настройку соединения с базой данных в ПО «Дебет Плюс V12» (контекстное меню «Сделать активной»).

    Система запросит пароль для подключения к БД. Нажмите «Да».

    Внимание! Если такое сообщение не появилось, тогда запустите обновление структур базы данных, выбрав пункт меню «Сервис»/«Обновление структур БД».

    В результате появится следующее окно:

    Оставьте все отметки по умолчанию (обязательно должны быть отметки в колонке «Переиндексировать» для всех таблиц БД).

    После окончания модификации можете приступать к работе.

      Запустите «Дебет Плюс V12» и добавьте новую базу (контекстное меню «Добавить новую»).

      Оставьте отметку в поле «Добавить в список существующую»:

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

    «СУБД» - POSTGRE.

    «Сервер базы данных» - имя или IP-адрес сервера.

    «Порт сервера базы данных» - укажите порт сервера базы данных, по умолчанию 5432.

    «Имя базы данных» - укажите имя базы данных латинскими буквами в нижнем регистре.

    «Имя схемы базы данных» - dpbase.

    Поставьте галочку только в поле «Использовать авторизацию Дебет Плюс».

    «Каталог настроек» - укажите путь к настройкам базы для PostgreSQL (сетевой путь\DebetPlusV12\base\pgdpbase).

    Сохраните внесенные изменения путем нажатия кнопки «Готово», после чего сделайте базу активной.

      Установите параметры запуска (главное меню «Настройки»/«Параметры запуска»)

    В появившемся окне в поле «Пароль для изменения настроек» введите пароль 150301 и нажмите на кнопку «Принять».

    Укажите путь к папке JDebet на сервере и нажмите сохранить. Сделайте базу активной и можете приступать к работе.

    0

    Я в тупике. У нас есть база данных postgres 9.2, которую мы используем в течение некоторого времени. Теперь нам нужно иметь возможность подключаться к нему из-за пределов нашей сети.

    Итак, мы настраиваем внешний IP-адрес и тестируем, что мы можем подключиться к порту 5432 с удаленного хоста через telnet. Таким образом, это доказывает, что сетевое соединение работает, брандмауэры и т. Д. Все хорошо.

    Когда я пытаюсь подключиться с помощью:
    PSQL -h db.host.com -d имя_бд -p 5432 -U пользователь

    я вернусь Psql: сервер закрыл соединение неожиданно.

    Я проверил, что
    listen_addresses = «*» устанавливается в postgresql.conf

    И в pg_hba.conf мы имеем линию, которая читает (только для тестирования)
    хозяина все все 0.0.0.0/0 md5

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

    Версия psql на сервере БД составляет 9.2.14, а на клиенте - 9.2.13.

    Любые предложения или идеи?

    • 1 ответ
    • Сортировка:

      Активность

    1

    Я хотел бы попробовать несколько вещей, чтобы получить больше информации:

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

      Запустить psql --version , чтобы убедиться, что оно более или менее соответствует версии сервера. (Я вижу, вы уже это сделали, но я оставлю его здесь для потомков.)

      Запустить strace psql .... , чтобы увидеть, как далеко доходят до отказа.

    Это по-прежнему звучит как проблема с сетью для меня. Что такое команда telnet, с которой вы работаете? «Внешний IP» звучит так же, как вы на AWS. Настройка удаленного доступа к VPC занимает много шагов. Есть ли у вас какие-либо другие услуги, открытые для снаружи, которые работают?

    Вы также можете устранить неполадки, отключив сервер Postgres и используя nc , чтобы прослушать 5432 . Затем подключитесь к telnet и посмотрите, можете ли вы отправлять данные взад и вперед.

    1

    Пол, спасибо за предложения. Я сделал стрейч и проверял версии. И вы были правы, пытался подключиться от AWS. Оказывается, это был ярус, который я использовал в балансировщике нагрузки, чтобы разрешить доступ только к диапазонам IP-2 ИС, которые публикует AWS. Когда я отключил irule, я мог немедленно подключиться. Таким образом, это должна быть ирреальная логика, так как я проверил публичный IP-адрес моего экземпляра EC2, и он действительно был указан в irule через уведомление CIDR. -