Перейти к содержанию

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

В данном разделе описаны способы подключения Picodata, а также первые шаги в консоли.

По умолчанию консоль, в которой происходит запуск инстанса Picodata, служит для вывода отладочного журнала инстанса. Для ввода команд следует подключиться к Picodata из другой консоли. При этом возможны несколько вариантов подключения:

См. также:

Консоль администратора

Доступ к консоли

Консоль администратора предоставляет доступ к учетной записи Администратора СУБД (admin). Для запуска консоли используйте следующую команду с указанием файла unix-сокета:

picodata admin ./admin.sock

По умолчанию файл unix-сокета расположен в рабочей директории инстанса, указанной при запуске в параметре picodata run --data-dir. Размещение этого файла можно переопределить параметром picodata run --admin-sock.

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

$ picodata admin ./admin.sock
Connected to admin console by socket path "./admin.sock"
type '\help' for interactive help
picodata>

Консоль администратора интерпретирует вводимые команды на языке SQL.

Задание пароля администратора

По умолчанию у Администратора СУБД отсутствует пароль, поэтому подключиться к консоли администратора возможно только при наличии доступа к ОС, в которой запущен инстанс Picodata. Для того чтобы подключаться к инстансу по сети, задайте пароль администратора:

ALTER USER "admin" WITH PASSWORD 'T0psecret'

После этого Администратор СУБД сможет подключиться, используя следующую команду:

picodata connect admin@localhost:3301

Кроме того, задать пароль администратора можно при инициализации кластера, установив переменную окружения PICODATA_ADMIN_PASSWORD для его первого инстанса. При повторных запусках данная переменная игнорируется.

См. также:

Создание учетной записи пользователя

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

Для этого можно использовать следующую команду:

CREATE USER "alice" WITH PASSWORD 'T0psecret';

Чтобы новый пользователь мог создавать таблицы, ему понадобится соответствующая привилегия:

GRANT CREATE TABLE TO "alice";

Автоматизация первичной настройки

Первичную настройку пользователей и их прав в консоли администратора можно автоматизировать: сохранить набор SQL-команд в отдельный файл, и затем подать его на вход обработчику picodata admin.

Для примера подготовим следующий набор команд, предварив их разделителем (для поддержки многострочного ввода):

cat ../setup.sql
\s d ;
ALTER USER "admin" WITH PASSWORD 'T0psecret';
CREATE USER "alice" WITH PASSWORD 'T0psecret';
GRANT CREATE TABLE TO "alice";
GRANT READ TABLE TO "alice";
GRANT WRITE TABLE TO "alice";

После этого можно выполнить набор команд:

picodata admin ./admin.sock < ../setup.sql

Вывод:

Connected to admin console by socket path "admin.sock"
type '\help' for interactive help
Delimiter changed to ';'
Language switched to SQL
1
1
1
1
1
Bye

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

SQL-консоль

SQL-консоль позволяет выполнять распределенные SQL-команды в рамках кластера. После того как в системе создана пользовательская учетная запись, можно подключиться к SQL-консоли любого локального или удаленного инстанса. Для этого используется команда picodata connect. Пример для localhost:

picodata connect alice@localhost:3301

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

См. также:

Встроенная справка

Встроенная справка Picodata доступна как в административной, так и в SQL-консоли. Справка содержит информацию о дополнительных командах в консоли и поддерживаемых сочетаниях клавиш. Для вызова справки введите \help.

Дополнительные команды консоли

В консоли Picodata доступны следующие дополнительные команды:

  • \e — открыть текстовый редактор по умолчанию (в соответствии с переменной EDITOR)
  • \set delimiter символ — задать символ для разделения строк
  • \set delimiter default — сбросить символ для разделения строк (перенос строки по нажатию Enter)

Примечание

Поддерживается сокращенная версия \set delimiter в виде \s d. Пример: \s d ;

Сочетания клавиш в консоли

В консоли Picodata поддерживаются следующие сочетания клавиш:

  • Enter — завершение ввода
  • Alt+Enter — переход к новой строке
  • Ctrl+C — отмена ввода
  • Ctrl+D — выход из консоли

См. также:

Pgproto

Модуль Pgproto реализует протокол PostgreSQL путем эмуляции сервера PostgreSQL. Основная цель Pgproto — предоставить пользователям возможность взаимодействовать с Picodata с помощью большого числа хорошо знакомых инструментов и библиотек, написанных для PostgreSQL.

Настройка Pgproto

Для запуска сервера Pgproto, принимающего подключения PostgreSQL по адресу localhost:5432, нужно запустить инстанс Picodata, используя опцию --pg-listen:

picodata run --pg-listen localhost:5432

Подключаться к серверу Pgproto могут только пользователи с паролем, совместимым с PostgreSQL. Для создания пользователя postgres с подходящим паролем в консоли администратора нужно выполнить команду:

CREATE USER "postgres" WITH PASSWORD 'P@ssw0rd' USING md5

Примечание

В настоящее время только аутентификация по хешу MD5 совместима с PostgreSQL.

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

GRANT CREATE TABLE TO "postgres"

Полученное разрешение позволит пользователю postgres отправить в Picodata запрос CREATE TABLE, пример которого приведен далее.

Подключение к Pgproto через psql

Подключение к Picodata через Pgproto осуществляется с помощью интерактивного терминала PostgreSQL psql.

Команда для подключения к Pgproto через psql:

Вариант № 1
psql -U postgres -h localhost -p 5432 -W "sslmode=disable"
Вариант № 2
psql "user=postgres host=localhost port=5432 password=P@ssw0rd sslmode=disable"

По умолчанию SSL отключен в Pgproto, поэтому его также следует отключить на стороне psql, используя опцию sslmode.

Включение протокола SSL в Pgproto

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

  1. Задать параметр instance.pg.ssl: true в файле конфигурации
  2. Добавить в рабочую директорию инстанса <DATA_DIR> SSL-сертификаты:
    • server.crt
    • server.key

Примеры

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

Запрос CREATE TABLE
postgres=> CREATE TABLE WAREHOUSE (
    W_ID INTEGER NOT NULL,
    W_NAME VARCHAR(10) NOT NULL,
    W_TAX DOUBLE,
    W_YTD DOUBLE,
    PRIMARY KEY (W_ID)
)
USING MEMTX DISTRIBUTED BY (W_ID);
CREATE TABLE
Запрос INSERT
postgres=> INSERT INTO WAREHOUSE (W_ID, W_NAME) VALUES (1, 'aaaa'), (2, 'aaab'), (3, 'aaac'), (4, 'aaad');
INSERT 0 4
Запрос SELECT
postgres=> SELECT W_ID, W_NAME FROM WAREHOUSE;
 "W_ID" | "W_NAME"
--------+----------
      1 | aaaa
      2 | aaab
      3 | aaac
      4 | aaad
(4 rows)
Запрос SELECT с предложением WHERE
postgres=> SELECT W_NAME FROM WAREHOUSE WHERE W_ID=1;
 "W_NAME"
----------
 aaaa
(1 row)

См. также:

Ограничения Pgproto

  • Поступающие запросы без изменений передаются в Picodata в текстовом виде, поэтому возможно выполнение только поддерживаемых в Picodata запросов
  • Системные каталоги PostgreSQL пока не поддерживаются
  • Pgproto работает в режиме autocommit, т. к. Picodata не поддерживает интерактивные транзакции