Как подключиться к управляемой базе данных в Ubuntu 18.04

Вступление

Managed databases имеют ряд преимуществ по сравнению с самоуправляемыми базами данных, включая автоматические обновления, упрощенное масштабирование и высокую доступность. Если вы новичок в работе с управляемыми базами данных, тем не менее, лучший способ выполнения определенных задач, таких как подключение к базе данных, может быть неочевидным.

В этом руководстве мы рассмотрим, как установить клиентские программы для различных систем управления базами данных (СУБД), включаяPostgreSQL,MySQL иRedis, на сервере Ubuntu 18.04. Мы также объясним, как использовать эти программы для подключения к экземпляру управляемой базы данных.

[.note] #Note: Инструкции, представленные в этом руководстве, были протестированы сDigitalOcean Managed Databases, но в целом они должны работать для управляемых баз данных от любого облачного провайдера. Однако, если вы столкнетесь с проблемами при подключении к базе данных, предоставленной другим поставщиком, вам следует обратиться за помощью к их документации.
#

Предпосылки

Чтобы следовать инструкциям, приведенным в этом руководстве, вам потребуется:

  • Доступ к серверу под управлением Ubuntu 18.04. На этом сервере должен быть пользователь без полномочий root с административными привилегиями и брандмауэр, настроенный сufw. Чтобы настроить это, следуйте нашимInitial Server Setup Guide for Ubuntu 18.04.

  • Управляемый экземпляр базы данных. В этом руководстве приведены инструкции по подключению к различным системам управления базами данных, в частности к PostgreSQL, MySQL и Redis. Чтобы подготовить управляемую базу данных DigitalOcean, просмотрите нашу документацию по выбранной вами СУБД:

Как только вы это сделаете, перейдите к той части, которая соответствует вашей СУБД.

Подключение к управляемой базе данных PostgreSQL

Чтобы подключиться к управляемой базе данных PostgreSQL, вы можете использоватьpsql, стандартный клиент командной строки для Postgres. Это открытый исходный код, поддерживаемый 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, сокращение от «переменная», предшествует другим переменным соединения, за которым следует знак равенства (=) и значения переменных. Например, если вы хотите проверить сертификат CA базы данных при подключении, вы должны включить-v sslmode=require в свою команду

  • -W, который сообщаетpsql запросить пароль пользователя PostgreSQL. Обратите внимание, что перед командойpsql можно указатьPGPASSWORD=password, но обычно считается более безопасным не включать пароли в командную строку.

С включенными этими флагами синтаксис командыpsql будет выглядеть следующим образом:

psql -U user -h host -p port -d database -v variable=value -W

В качестве альтернативы, если ваш провайдер управляемой базы данных предлагаетuniform resource identifer (URI) для подключения, вы можете использовать следующий синтаксис:

psql postgresql://username:password@host:port/database?option_1=value&option_n=value

[.Примечание]##

Note: Если вы подключаетесь к управляемой базе данных DigitalOcean, вы можете найти всю эту информацию о подключении в своемCloud Control Panel. ЩелкнитеDatabases в меню левой боковой панели, затем щелкните базу данных, к которой вы хотите подключиться, и прокрутите вниз, чтобы найти ее разделConnection Details. Оттуда вы делаете одно из следующих действий:

  • Выберите параметрConnection parameters и скопируйте соответствующие поля по отдельности в синтаксисpsql, подробно описанный ранее.

  • Выберите опциюConnection String и скопируйте готовый URI подключения, который можно вставить в синтаксис URI подключения, описанный выше.

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

После этого вы готовы начать использовать ваш управляемый экземпляр PostgreSQL. Для получения дополнительной информации о том, как взаимодействовать с PostgreSQL, см. Наше руководство поHow to Manage an SQL Database. Вы также можете найти нашIntroduction to Queries in PostgreSQL полезным.

Подключение к управляемой базе данных MySQL

Чтобы подключиться к управляемой базе данных MySQL, вы можете использовать официальный клиент базы данных MySQL. В Ubuntu этот клиент обычно устанавливается путем загрузки пакетаmysql-client через APT. Однако, если вы используете стандартные репозитории Ubuntu, это установит версию 5.7 программы.

Для доступа к базе данных MySQL, управляемой DigitalOcean, вам необходимо установить версию 8.0 или выше. Для этого необходимо сначала добавить программный репозиторий MySQL перед установкой пакета.

[.Примечание]##

Note: Если вам не нужно устанавливать последнюю версиюmysql-client, вы можете просто обновить индекс пакетов вашего сервера и установитьmysql-client без добавления репозитория программного обеспечения MySQL:

sudo apt update
sudo apt install mysql-client

Если вы не уверены, нужна ли вам последняя версияmysql-client, обратитесь к документации по управляемым базам данных вашего облачного провайдера.

Начните с перехода кthe MySQL APT Repository page в своем веб-браузере. Найдите кнопкуDownload в правом нижнем углу и перейдите на следующую страницу. На этой странице вам будет предложено войти в систему или зарегистрировать учетную запись Oracle. Вы можете пропустить это и вместо этого найти ссылку сNo thanks, just start my download. Щелкните ссылку правой кнопкой мыши и выберитеCopy Link Address (этот параметр может иметь разные формулировки в зависимости от вашего браузера).

Теперь вы готовы скачать файл. На вашем сервере перейдите в каталог, в который вы можете написать:

cd /tmp

Загрузите файл с помощьюcurl, не забывая вставить адрес, который вы только что скопировали, вместо выделенной части следующей команды. Вам также необходимо передать два флага командной строкиcurl. -O инструктируетcurl выводить в файл вместо стандартного вывода. ФлагL заставляетcurl следовать HTTP-перенаправлениям, что необходимо в этом случае, потому что скопированный вами адрес фактически перенаправляет в другое место до загрузки файла:

curl -OL https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb

Файл должен быть загружен в ваш текущий каталог. Перечислите файлы, чтобы убедиться:

ls

Вы увидите имя файла, указанное в выводе:

Outputmysql-apt-config_0.8.13-1_all.deb
. . .

Теперь вы можете добавить репозиторий MySQL APT в список репозиториев вашей системы. Командаdpkg используется для установки, удаления и проверки пакетов программного обеспечения.deb. Следующая команда включает флаг-i, указывающий, что вы хотите выполнить установку из указанного файла:

sudo dpkg -i mysql-apt-config*

Во время установки вам будет представлен экран конфигурации, где вы можете указать, какую версию MySQL вы бы предпочли, наряду с возможностью установки репозиториев для других инструментов, связанных с MySQL. По умолчанию будет добавлена ​​информация о хранилище для последней стабильной версии MySQL и ничего больше. Это то, что мы хотим, поэтому используйте стрелку вниз, чтобы перейти к пункту менюOk, и нажмитеENTER.

Selecting mysql-apt-config configuration options

После этого пакет завершит добавление репозитория. Обновите кэш пакетовapt, чтобы новые программные пакеты стали доступными:

sudo apt update

Затем вы можете немного очистить вашу систему и удалить загруженный файл, так как он вам больше не понадобится в будущем:

rm mysql-apt-config*

[.Примечание]##

Note: Если вам когда-нибудь понадобится обновить конфигурацию этих репозиториев, выполните следующую команду, чтобы выбрать новые параметры:

sudo dpkg-reconfigure mysql-apt-config

После выбора новых параметров выполните следующую команду, чтобы обновить кэш пакета:

sudo apt update

Теперь, когда вы добавили репозитории MySQL, вы готовы установить реальное клиентское программное обеспечение MySQL. Сделайте это с помощью следующей командыapt:

sudo apt install mysql-client

После завершения этой команды проверьте номер версии программного обеспечения и убедитесь, что у вас установлена ​​последняя версия:

mysql --version
Outputmysql  Ver 8.0.17-cluster for Linux on x86_64 (MySQL Community Server - GPL)

После установки пакетаmysql-client вы можете получить доступ к своей управляемой базе данных, выполнив командуmysql со следующими флагами в качестве аргументов:

  • -u, пользователь MySQL, к которому вы хотите подключиться как

  • -p, указываетmysql запрашивать пароль пользователя. Вы можете указать свой пароль непосредственно в команде подключения после флага-p (без пробела, как в-ppassword), но по соображениям безопасности это обычно не рекомендуется

  • -h, имя хоста или IP-адрес базы данных

  • -P, TCP-порт, на котором MySQL прослушивает соединения

  • -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

[.Примечание]##

Note: Если вы подключаетесь к управляемой базе данных DigitalOcean, вы можете найти всю эту информацию о подключении в своемCloud Control Panel. ЩелкнитеDatabases в меню левой боковой панели, затем щелкните базу данных, к которой вы хотите подключиться, и прокрутите вниз, чтобы найти ее разделConnection Details. Оттуда вы делаете одно из следующих действий:

  • Выберите параметрConnection parameters и скопируйте соответствующие поля по отдельности в синтаксисmysql, описанный ранее

  • Выберите параметрConnection String и скопируйте готовый URI подключения, который можно вставить в строку подключения, описанную выше.

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

После этого вы готовы начать использовать управляемый экземпляр MySQL. Для получения дополнительной информации о том, как взаимодействовать с MySQL, см. Наше руководство поHow to Manage an SQL Database. Вы также можете найти нашIntroduction to Queries in MySQL полезным.

Примечание относительно аутентификации по паролю в MySQL 8

В MySQL 8.0 и новее плагин аутентификации по умолчанию -caching_sha2_password. Однако на момент написания этой статьи PHP не поддерживаетcaching_sha2_password. Если вы планируете использовать управляемую базу данных MySQL с приложением, использующим PHP, таким как WordPress или phpMyAdmin, это может привести к проблемам, когда приложение пытается подключиться к базе данных.

Если у вас есть доступ к файлу конфигурации базы данных, вы можете добавить параметр, чтобы заставить его использовать плагин аутентификации, поддерживаемый PHP, например,mysql_native_password, по умолчанию:

Пример файла конфигурации MySQL

[mysqld]
default-authentication-plugin=mysql_native_password

Однако некоторые поставщики управляемых баз данных, включая DigitalOcean, не делают файл конфигурации базы данных доступным для конечных пользователей. В этом случае вы можете подключиться к базе данных и выполнить команду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';

Если вы используете управляемую базу данных DigitalOcean, имейте в виду, что если вы настроите пользователя для аутентификации с помощью плагина, отличного отcaching_sha2_password, вы не сможете увидеть пароль этого пользователя в своей облачной панели управления. По этой причине вам следует записать пароли всех пользователей, которые проходят аутентификацию с помощьюmysql_native_password или других плагинов в безопасном месте.

Подключение к управляемой базе данных Redis

Когда вы устанавливаете Redis локально, он поставляется сredis-cli, интерфейсом командной строки Redis. Вы можете использоватьredis-cli для подключения к удаленному управляемому экземпляру Redis, но он не поддерживает подключения TLS / SSL. Есть способы настроитьredis-cli для безопасного подключения к управляемому экземпляру Redis (например, с помощьюconfiguring a TLS tunnel), но есть альтернативные клиенты Redis, которые имеют встроенную поддержку TLS.

Для баз данных Redis, управляемых DigitalOcean, мы рекомендуем вам установить Redli, интерактивный терминал Redis с открытым исходным кодом. Для этого перейдите кReleases Page в проекте Redli GitHub и найдите таблицуAssets для последней версии. На момент написания статьи это будет версия 0.4.4.

Там найдите ссылку на файл, заканчивающийся наlinux_amd64.tar.gz. Эта ссылка указывает на архивный файл, известный какtarball, при извлечении которого в вашей системе будет создано несколько файлов. Щелкните эту ссылку правой кнопкой мыши и выберите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

Это создаст следующие файлы на вашем сервере:

OutputLICENSE.txt
README.md
redli

Файлredli - это Redlibinary file. Переместите его в каталог/usr/local/bin, место, где Ubuntu ищет исполняемые файлы:

sudo mv redli /usr/local/bin/

На этом этапе вы можете немного очистить вашу систему и удалить tarball:

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 соединения.

[.Примечание]##

Note: Если вы подключаетесь к управляемой базе данных DigitalOcean, вы можете найти всю эту информацию о подключении в своемCloud Control Panel. ЩелкнитеDatabases в меню левой боковой панели, затем щелкните базу данных, к которой вы хотите подключиться, и прокрутите вниз, чтобы найти разделConnection Details. Оттуда вы делаете одно из следующих действий:

  • Выберите параметрConnection parameters и скопируйте соответствующие поля по отдельности в синтаксисredli, подробно описанный ранее.

  • Выберите параметрConnection String и скопируйте готовый URI подключения, который можно использовать с синтаксисом строки подключения, описанным выше.

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

После этого вы можете начать взаимодействовать с управляемым экземпляром Redis. Для получения дополнительной информации о том, как работать с Redis, см. Наши серии статей или памятки поHow To Manage a Redis Database.

Заключение

Как относительно новая разработка в облачных сервисах, многие практики, которые хорошо известны для самоуправляемых баз данных, не документированы широко или всесторонне для баз данных, управляемых облачными провайдерами. Один из наиболее фундаментальных методов доступа к базе данных может быть не совсем понятен новичкам в работе с управляемыми базами данных. Наша цель этого руководства заключается в том, чтобы оно помогло вам начать работу с управляемой базой данных для хранения данных.

Для получения дополнительной информации о работе с базами данных мы рекомендуем вам ознакомиться с нашим разнообразиемdatabase-related content, включая учебные пособия, ориентированные непосредственно наPostgreSQL,MySQL иRedis.

Чтобы узнать больше об управляемых базах данных DigitalOcean, см. НашManaged Databases product documentation.

Related