Github

Подключение к Greengage DB с использованием psql

Андрей Аксенов

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

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

Для подключения к мастер-хосту вам потребуется следующая информация о подключении:

  • Имя базы данных

    Это может быть база данных postgres, созданная автоматически во время инициализации, или база данных, созданная вручную.

  • Имя пользователя базы данных

    Это может быть учетная запись суперпользователя, созданная автоматически во время инициализации (обычно gpadmin), или любой пользователь, имеющий права доступа к указанной базе данных.

  • Адрес хоста

    Это доменное имя, разрешаемое через DNS (например, mdw.example.com), или IP-адрес хоста, на котором запущен экземпляр мастера.

  • Номер порта

    Это должен быть номер порта, на котором запущен экземпляр мастера (обычно 5432).

Вы можете задать необходимые параметры подключения, настроив соответствующие переменные окружения (например, PGDATABASE или PGUSER) или передав параметры непосредственно команде psql.

Настройка окружения

Перед подключением к базе данных с помощью psql можно настроить параметры подключения по умолчанию, используя переменные среды, такие как PGDATABASE, PGUSER и PGPORT. Данный пример показывает, как это сделать:

$ export PGDATABASE=testdb
$ export PGUSER=gpadmin
$ export PGPORT=5432

Значения этих переменных используются, если соответствующие параметры командной строки не переданы в psql.

Помимо параметров, связанных с подключением, можно задать другие переменные окружения для настройки поведения psql. Например, можно переопределить часовой пояс и кодировку, используя переменные окружения PGTZ и PGCLIENTENCODING. Узнайте больше в разделе Environment.

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

Для подключения к базе данных выполните команду psql с соответствующими параметрами, описанными ниже.

Параметр Описание Значение по умолчанию Переменная окружения

-d

Имя базы данных

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

PGDATABASE

-U

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

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

PGUSER

-h

Имя или IP-адрес мастер-хоста. Если значение начинается с косой черты, оно определяет каталог сокета домена Unix

/var/run/postgresql

PGHOST

-p

TCP-порт, используемый для подключения к мастер-хосту

5432

PGPORT

Локальное подключение

Этот раздел демонстрирует несколько примеров подключения к базе данных локально с мастер-хоста от имени суперпользователя (gpadmin). В данном случае для подключения к базе данных используется сокет домена Unix.

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

$ sudo su - gpadmin

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

  • Подключиться к базе данных по умолчанию:

    $ psql
  • Подключиться к базе данных testdb:

    $ psql testdb

Удаленное подключение

Для удаленного подключения к базе данных по протоколу TCP/IP необходимо передать адрес хоста и значение порта, например:

$ psql -d sales -U alice -h 192.168.1.10 -p 5432

Если включена аутентификация по паролю, введите пароль, когда появится следующее приглашение:

Password for user alice:

Нажмите Enter.

ПРИМЕЧАНИЕ

Убедитесь, что файл pg_hba.conf разрешает удаленные подключения от данного пользователя.

Подключение к сегментам

Вы можете подключаться к сегментам только в режиме utility. Для этого установите параметр конфигурации сервера gp_session_role в значение utility, например:

$ PGOPTIONS="-c gp_session_role=utility" psql -p 10000 -d testdb

Выполнение команд в интерактивном режиме

После подключения к базе данных psql отображает приглашение, содержащее имя текущей базы данных. После имени базы данных показывается одна из следующих строк:

  • =#, если вы подключены как суперпользователь:

    testdb=#
  • =>, если вы подключены как обычный пользователь:

    sales=>

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

SQL-команды

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

SELECT * FROM gp_segment_configuration;

SQL-команда должна заканчиваться символом ; (точка с запятой), чтобы сервер ее исполнил.

Метакоманды

Метакоманды начинаются с обратной косой черты (\) и могут использоваться для выполнения различных задач, связанных с базой данных, таких как отображение информации об объектах базы данных и управление форматированием вывода. Ниже приведены несколько примеров использования таких команд:

  • Подключиться к базе данных postgres:

    \c postgres
  • Вывести список всех баз данных на сервере:

    \l
  • Выйти из psql:

    \q

Выполнение команд в неинтерактивном режиме

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

  • Данный SQL-запрос передается команде psql с помощью опции -c:

    $ psql -c 'SELECT * FROM gp_segment_configuration;'

    Если вам нужно объединить метакоманду и SQL-запрос, передайте соответствующую строку в psql с помощью |, например:

    $ echo '\x \\ SELECT * FROM gp_segment_configuration;' | psql
  • Данная команда выполняет SQL-запросы из файла myscript.sql в неинтерактивном режиме:

    $ psql -f /home/gpadmin/test/myscript.sql