Управляемые базы данных имеют ряд преимуществ по сравнению с самоуправляемыми БД: это и автоматические обновления, и упрощенное масштабирование, и высокая доступность. Но если вы только начинаете пользоваться управляемыми базами данных, даже простейшие задачи (типа подключения к базе данных) могут показаться запутанными и сложными.
Читайте также: Управляемые базы данных: преимущества, узкие места, практические рекомендации
В этом мануале вы узнаете, как устанавливать клиентские программы различных систем управления базами данных (СУБД) – PostgreSQL, MySQL и Redis – на сервер Ubuntu 18.04. Также вы научитесь использовать эти программы для подключения к экземпляру управляемой базы данных.
Примечание: Данные инструкции подходят для управляемых баз данных любого облачного провайдера. Однако если у вас все же возникнут проблемы с подключением, вы можете обратиться за помощью к документации провайдера.
Требования
- Сервер Ubuntu 18.04. На этом сервере должен быть пользователь с правами администратора (не root) и настроенный брандмауэр ufw. Следуйте нашему мануалу по начальной настройке сервера Ubuntu 18.04.
- Экземпляр управляемой базы данных. В этом мануале приведены инструкции по подключению к PostgreSQL, MySQL и Redis. Чтобы создать такую БД, следуйте документации вашего облачного провайдера.
Выполнив начальные требования, вы можете перейти к тому разделу, который относится к вашей БД – работать с мануалом последовательно не нужно.
Подключение к управляемой базе данных PostgreSQL
Чтобы подключиться к управляемой базе данных PostgreSQL, вы можете использовать стандартный клиент командной строки psql. Открытый исходный код psql поддерживается PostgreSQL Development Group и обычно включен в загрузку сервера PostgreSQL. Но вы можете установить psql самостоятельно через пакет postgresql-client с помощью APT.
Если вы еще этого не сделали, обновите индекс пакетов сервера:
sudo apt update
Затем выполните следующую команду для установки psql:
sudo apt install postgresql-client
Менеджер APT попросит вас подтвердить установку пакета. Сделайте это, нажав клавишу Enter.
После этого вы можете подключиться к управляемой базе данных Postgres без дальнейшей настройки. Например, вы можете вызвать psql со следующими флагами:
- -U указывает пользователя PostgreSQL, чью сессию вы хотите начать.
- -h указывает имя хоста или IP-адрес управляемой БД.
- -p задает порт TCP, который прослушивает управляемая БД.
- -d позволяет указать БД, с которой вы хотите работать.
- -v (сокращение для variable) позволяет задать переменные соединения. Этот флаг идет перед переменными. После переменной следует знак равенства (=) и значение. Например, если при подключении вы хотите проверить сертификат CA базы данных, вы должны включить в свою команду флаг: -v sslmode=require.
- -W запрашивает пароль пользователя PostgreSQL. Вообще-то, перед командой psql можно указать PGPASSWORD=password (где password – ваш пароль), но включать пароли в командную строку не принято, так как это опасно.
Синтаксис команды с флагами выглядит так:
psql -U user -h host -p port -d database -v variable=value -W
Если ваша управляемая БД поддерживает унифицированные идентификаторы ресурса (URI), вы можете использовать такой синтаксис:
psql postgresql://username:password@host:port/database?option_1=value&option_n=value
Теперь вы можете использовать управляемый экземпляр PostgreSQL. О том, как взаимодействовать с PostgreSQL, можно почитать в мануалах:
Подключение к управляемой базе данных MySQL
Чтобы подключиться к управляемой базе данных MySQL, вы можете использовать официальный клиент БД MySQL. В Ubuntu этот клиент обычно устанавливается путем загрузки пакета mysql-client через APT.
Но если вы используете стандартные репозитории Ubuntu, вы получите версию 5.7. Как правило, для доступа к управляемой базе данных MySQL необходима более новая версия, потому нужно установить версию 8.0 или выше. Для этого вы должны сначала добавить программный репозиторий MySQL, а затем установить пакет оттуда.
Примечание: Если вам не нужно устанавливать последнюю версию mysql-client, вы можете просто обновить индекс пакетов сервера и установить mysql-client, не добавляя репозиторий программного обеспечения MySQL:
sudo apt update
sudo apt install mysql-client
Если вы не уверены, какая версия mysql-client вам нужна, вам следует обратиться к документации по управляемым базам данных вашего облачного провайдера.
Для начала перейдите на страницу репозитория MySQL в своем веб-браузере. Найдите кнопку Download в правом нижнем углу и перейдите на следующую страницу. На этой странице вам будет предложено войти в систему или зарегистрировать учетную запись Oracle. Вы можете пропустить этот шаг с помощью ссылки No thanks, just start my download. Щелкните правой кнопкой мыши на эту ссылку и выберите Copy Link Address (эта опция может отличаться в зависимости от браузера).
Теперь вы готовы скачать файл. На сервере перейдите в изменяемый каталог:
cd /tmp
Загрузите файл, используя curl. Не забудьте вставить в команду только что скопированный адрес вместо нашей ссылки. Вам также нужно передать curl два флага командной строки. Флаг -O направляет вывод в файл вместо стандартного вывода. Флаг L включает поддержку перенаправлений HTTP, что необходимо в этом случае, потому что скопированный адрес перед загрузкой файла фактически перенаправляет вас в другое место:
curl -OL https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
Теперь файл загрузится в текущий каталог. Просмотрите текущие файлы, чтобы убедиться в этом:
ls
Вы увидите имя файла, указанное в выводе:
mysql-apt-config_0.8.13-1_all.deb
. . .
Теперь вы можете добавить репозиторий MySQL APT в список репозиториев вашей системы. Команда dpkg используется для установки, удаления и проверки пакетов программного обеспечения .deb. Следующая команда содержит флаг -i, который указывает репозиторий, из которого вы хотите иметь возможность устанавливать пакеты:
sudo dpkg -i mysql-apt-config*
Во время установки вам будет представлено окно, в котором вы можете выбрать нужную версию MySQL, а также установить репозитории для других инструментов, связанных с MySQL. По умолчанию добавляется только репозиторий последней стабильной версии MySQL. Это нам подходит. Используйте стрелку вниз, чтобы перейти к пункту меню Ok, и нажмите Enter.
После этого репозиторий будет добавлен. Обновите кэш пакетов apt, чтобы сделать новые пакеты программного обеспечения доступными:
sudo apt update
Затем вы можете почистить систему и удалить загруженный файл, так как в будущем он вам больше не понадобится:
rm mysql-apt-config*
Примечание: Если вам когда-либо понадобится обновить конфигурацию этих репозиториев, выполните следующую команду:
sudo dpkg-reconfigure mysql-apt-config
Выбрав новые опции, выполните следующую команду, чтобы обновить кэш пакетов:
sudo apt update
Теперь, когда вы добавили необходимый репозиторий MySQL, вы можете установить реальное клиентское программное обеспечение MySQL. Сделайте это с помощью следующей команды apt:
sudo apt install mysql-client
Когда команда будет выполнена, проверьте номер версии клиента и убедитесь, что у вас установлена последняя версия:
mysql --version
mysql Ver 8.0.17-cluster for Linux on x86_64 (MySQL Community Server - GPL)
После установки mysql-client вы можете получить доступ к управляемой базе данных, выполнив команду mysql со следующими флагами:
- -u указывает пользователя MySQL, чью сессию вы хотите начать.
- -p запросит пароль пользователя. Вы можете включить пароль прямо в команду (в формате –p password), но включать пароли в командную строку не принято, так как это опасно.
- -h задает имя хоста или IP-адрес БД MySQL.
- -P задает порт TCP, который прослушивает управляемая БД.
- -D позволяет указать БД, с которой вы хотите работать.
Синтаксис команды mysql с флагами выглядит так:
mysql -u user -p -h host -P port -D database
Если ваша управляемая БД поддерживает унифицированные идентификаторы ресурса (URI), вы можете использовать такой синтаксис:
mysql mysql://user:password@host:port/database?option_1=value&option_n=value
Теперь вы можете использовать управляемый экземпляр MySQL. О том, как взаимодействовать с MySQL, можно почитать в мануалах:
Парольная аутентификация в MySQL 8
В MySQL 8.0 и новее по умолчанию используется плагин аутентификации caching_sha2_password. Но пока что (на момент написания статьи) PHP не поддерживает этот плагин. Если вы планируете использовать управляемую базу данных MySQL в приложении на PHP (например, в WordPress или phpMyAdmin), это может привести к проблемам при подключении к базе данных.
Если у вас есть доступ к конфигурационному файлу базы данных, вы можете добавить параметр, чтобы заставить БД использовать модуль аутентификации с поддержкой PHP по умолчанию – например, mysql_native_password:
[mysqld]
default-authentication-plugin=mysql_native_password
Однако некоторые провайдеры управляемых баз данных не дают конечным пользователям доступа к конфигурациям БД. В этом случае вы можете подключиться к базе данных и выполнить команду ALTER USER для всех существующих пользователей MySQL, которым необходимо подключиться к БД, но сделать это с помощью плагина caching_sha2_password не получается:
ALTER USER user IDENTIFIED WITH mysql_native_password BY 'password';
Конечно, вы можете настроить новых пользователей для аутентификации с помощью плагина mysql_native_password, указать его можно в команде CREATE USER:
CREATE USER user IDENTIFIED WITH mysql_native_password BY 'password';
Подключение к управляемой базе данных Redis
При локальной установке Redis поставляется с redis-cli, это интерфейс командной строки. С помощью redis-cli можно подключиться к удаленному управляемому экземпляру Redis, но у интерфейса нет встроенной поддержки TLS/SSL. Вы можете настроить безопасные подключения к управляемому экземпляру Redis через redis-cli, но вы также можете использовать альтернативный клиент Redis со встроенной поддержкой TLS.
Мы рекомендуем вам установить Redli, интерактивный терминал Redis с открытым исходным кодом. Для этого перейдите на страницу Releases проекта Redli на GitHub и найдите таблицу Assets для последней версии. На момент написания мануала это версия 0.4.4.
Здесь найдите ссылку на файл, заканчивающийся на linux_amd64.tar.gz. Эта ссылка указывает на архив (тарбол), который при извлечении создаст в системе несколько файлов. Кликните правой кнопкой мыши по этой ссылке и выберите Copy link address (формулировка может отличаться в зависимости от веб-браузера).
На сервере перейдите в изменяемый каталог:
cd /tmp
Затем вставьте скопированную ссылку в следующую команду wget (замените URL-адрес). Эта команда загрузит файл на сервер:
wget https://github.com/IBM-Cloud/redli/releases/download/v0.4.4/redli_0.4.4_linux_amd64.tar.gz
Когда файл загрузится на ваш сервер, распакуйте архив:
tar xvf redli_0.4.4_linux_amd64.tar.gz
Это создаст на сервере следующие файлы:
LICENSE.txt
README.md
redli
Файл redli – это бинарный файл клиента. Переместите его в каталог /usr/local/bin, где Ubuntu ищет исполняемые файлы:
sudo mv redli /usr/local/bin/
На этом этапе вы можете почистить систему и удалить ненужный тарбол:
rm redli 0.4.4_linux_amd64.tar.gz
Теперь вы можете использовать Redli для подключения к управляемому экземпляру Redis. Вы можете сделать это, выполнив команду redli со следующими флагами:
- -h указывает хост или IP-адрес, к которому нужно подключиться.
- -a задает пароль для аутентификации Redis.
- -p – порт, к которому нужно подключиться.
С учетом этих флагов синтаксис redli будет выглядеть следующим образом. Обратите внимание, что этот пример также включает параметр –tls, который позволяет подключаться к управляемой базе данных Redis через TLS/SSL без туннелирования:
redli --tls -h host -a password -p port
Одно из преимуществ Redli перед redis-cli состоит в том, что он понимает протокол rediss, который используется для обозначения URI, указывающего на базу данных Redis. Благодаря этому вы можете использовать строку подключения для доступа к базе данных:
redli --tls -u rediss://user:password@host:port
Обратите внимание, эта команда включает флаг -u, который задает URI соединения в качестве аргумента.
Теперь вы можете начать работу с вашей управляемой БД Redis.
Заключение
Управляемые базы данных – это относительно новый облачный сервис, а потому многие практики, понятные в самоуправляемых БД, кажутся сложными. Пока еще не у всех облачных провайдеров есть хорошая всесторонняя документация для управляемых БД. Цель этого мануала – помочь вам начать работу со своей управляемой БД.