Подключение и работа в консоли¶
В данном разделе описаны способы подключения Picodata, а также первые шаги в консоли.
По умолчанию окно терминала, в котором происходит запуск инстанса Picodata, служит для вывода отладочного журнала инстанса. Для ввода команд следует подключиться к Picodata из другого терминала. Возможны два варианта:
- Подключение к консоли администратора (
picodata admin
) - Подключение к пользовательской консоли по протоколу PostgreSQL
В последнем случае, в качестве клиента рекомендуется использовать
клиентское приложение psql
.
Установка psql
Клиентское приложение psql
уже поставляется в
составе готовых пакетов Picodata. В
остальных случаях для использования psql
не требуется
устанавливать сам сервер баз данных PostgreSQL. В Linux достаточно
установить пакет postgresql-client
(Debian/Ubuntu) или
postgresql
(RHEL/Fedora). В macOS установите пакет libpq
через
Homebrew.
См. также:
Консоль администратора¶
Настройка и подключение¶
Консоль администратора предоставляет доступ к учетной записи
Администратора СУБД (admin
). Для запуска
консоли используйте следующую команду с указанием файла unix-сокета:
picodata admin ./admin.sock
По умолчанию файл unix-сокета расположен в рабочей директории инстанса,
указанной в файле конфигурации в параметре instance.instance_dir
. Путь
к этому файлу можно переопределить, задав параметр instance.admin_socket
.
При успешном подключении отобразится приглашение:
$ picodata admin ./admin.sock
Connected to admin console by socket path "./admin.sock"
type '\help' for interactive help
(admin) sql>
По умолчанию, консоль администратора интерпретирует вводимые команды на
языке SQL. Разделителем по умолчанию выступает знак ;
. Для
переключения в режим ввода Lua-команд введите \lua
. В Lua-режиме
разделитель не требуется.
Задание пароля администратора¶
По умолчанию у Администратора СУБД отсутствует пароль, поэтому подключиться к консоли администратора возможно только при наличии доступа к файлу сокета средствами ОС. Для того чтобы иметь возможность подключиться к инстансу по сети, задайте пароль администратора:
ALTER USER "admin" WITH PASSWORD 'T0psecret';
После этого Администратор СУБД сможет подключиться, используя следующую команду:
psql postgres://admin:T0psecret@127.0.0.1:4327
Кроме того, задать пароль администратора можно при инициализации
кластера, установив переменную окружения PICODATA_ADMIN_PASSWORD
для его первого инстанса. При повторных запусках данная переменная
будет игнорироваться.
См. также:
Создание учетной записи пользователя¶
Для того чтобы использовать пользовательскую консоль, нужно сначала создать учетную запись пользователя в административной консоли. Используйте для этого следующую команду:
CREATE USER "alice" WITH PASSWORD 'T0psecret';
Чтобы новый пользователь мог создавать таблицы, выдайте ему соответствующую привилегию:
GRANT CREATE TABLE TO "alice";
Автоматизация первичной настройки¶
Первичную настройку пользователей и их прав в консоли администратора можно автоматизировать. Для этого сохраните следующий набор команд в виде скрипта:
setup.sql
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
1
1
1
1
1
Bye
Команды будут выполнены последовательно. Числа означают количество измененных строк после каждой команды.
Подключение по протоколу PostgreSQL¶
После того как в системе создана пользовательская учетная запись, можно
подключиться к любому локальному или удаленному инстансу и выполнять
распределенные SQL-команды в рамках кластера. Picodata позволяет это
делать при помощи большого числа хорошо знакомых инструментов и
библиотек, написанных для PostgreSQL. Рекомендуемым способом подключения
к инстансу Picodata является CLI-приложение psql
. По
умолчанию используется порт 4327 (его можно переопределить, задав
параметр конфигурации instance.pg.listen
).
Пример для 127.0.0.1
:
psql postgres://admin:T0psecret@127.0.0.1:4327
В соответствии с доступными ему привилегиями, пользователь сможет
работать в консоли с таблицами. Разделителем команд выступает знак
;
.
Примечание
Подключение к по протоколу PostgreSQL доступно
только для пользователей, использующих методы аутентификации md5
и ldap
. В случае с ldap
потребуется дополнительная
настройка.
Для выхода из консоли введите \quit
или \q
.
Перенаправление команд в консоли¶
При работе в консоли поддерживается перенаправление ввода-вывода команд (pipe). Таким способом можно сделать как отдельный SQL-запрос, так и запустить файл со списком SQL-команд. Примеры:
echo "SELECT * FROM warehouse;" | psql postgres://admin:T0psecret@127.0.0.1:4327
cat file.sql | picodata admin ./admin.sock
Содержимое файла file.sql
INSERT INTO customers VALUES (1, 'customer1');
SELECT name FROM customers limit 10;
DELETE FROM customers WHERE id > 100;
Ограничения протокола PostgreSQL в Picodata¶
- Поступающие запросы без изменений передаются в Picodata в текстовом виде, поэтому возможно выполнение только поддерживаемых в Picodata запросов
- Системные каталоги PostgreSQL реализованы частично
- При авторизации в пользовательской консоли не поддерживается метод
аутентификации
chap-sha1
- По умолчанию подключение по протоколу PostgreSQL использует режим autocommit. Команды BEGIN, COMMIT, ROLLBACK, применяемые для управления интерактивными транзакциями, реализованы только как заглушки
- Количество одновременно исполняемых запросов ограничено системными параметрами pg_portal_max и pg_statement_max