Подключение к 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