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

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

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

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

  • подключение к консоли администратора для управления текущим инстансом
  • подключение к кластерной SQL-консоли под заранее созданным пользователем для выполнения SQL-команд в рамках распределенного кластера

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

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

Консоль администратора предоставляет доступ к учетной записи Администратора СУБД (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

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

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

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

CREATE USER "alice" WITH PASSWORD 'T0psecret';

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

GRANT CREATE TABLE TO "alice";

SQL-консоль

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

picodata connect alice@localhost:3301

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

См. также:

Специальные команды в консоли

Следующие специальные команды поддерживаются в консоли Picodata:

  • Alt+Enter — переход к новой строке. Данная комбинация позволяет вводить многострочные команды. Для завершения ввода следует нажать Enter
  • Ctrl+C — отмена текущего ввода
  • Ctrl+D — выход из консоли Picodata

См. также:

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 не поддерживает интерактивные транзакции