Подключение и работа в консоли¶
В данном разделе описаны способы подключения Picodata, а также первые шаги в консоли.
По умолчанию консоль, в которой происходит запуск инстанса Picodata, служит для вывода отладочного журнала инстанса. Для ввода команд следует подключиться к Picodata из другой консоли. При этом возможны несколько вариантов подключения:
- Подключение к консоли администратора (
picodata admin
) - Подключение к SQL-консоли (
picodata connect
) - Подключение по протоколу PostgreSQL (
psql
и др.)
См. также:
Консоль администратора¶
Доступ к консоли¶
Консоль администратора предоставляет доступ к учетной записи
Администратора СУБД (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:
psql -U postgres -h localhost -p 5432 -W "sslmode=disable"
psql "user=postgres host=localhost port=5432 password=P@ssw0rd sslmode=disable"
По умолчанию SSL отключен в Pgproto, поэтому его также следует отключить
на стороне psql, используя опцию sslmode
.
Включение протокола SSL в Pgproto
Чтобы использовать протокол SSL при подключении к Pgproto, необходимо сделать следующее:
- Задать параметр
instance.pg.ssl: true
в файле конфигурации - Добавить в рабочую директорию инстанса
<DATA_DIR>
SSL-сертификаты:server.crt
server.key
Примеры¶
После подключения к Pgproto запросы можно будет отправлять в интерактивной сессии psql. Примеры:
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
postgres=> INSERT INTO WAREHOUSE (W_ID, W_NAME) VALUES (1, 'aaaa'), (2, 'aaab'), (3, 'aaac'), (4, 'aaad');
INSERT 0 4
postgres=> SELECT W_ID, W_NAME FROM WAREHOUSE;
"W_ID" | "W_NAME"
--------+----------
1 | aaaa
2 | aaab
3 | aaac
4 | aaad
(4 rows)
postgres=> SELECT W_NAME FROM WAREHOUSE WHERE W_ID=1;
"W_NAME"
----------
aaaa
(1 row)
См. также:
Ограничения Pgproto¶
- Поступающие запросы без изменений передаются в Picodata в текстовом виде, поэтому возможно выполнение только поддерживаемых в Picodata запросов
- Системные каталоги PostgreSQL пока не поддерживаются
- Pgproto работает в режиме autocommit, т. к. Picodata не поддерживает интерактивные транзакции