Вступление
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
.
После этого пакет завершит добавление репозитория. Обновите кэш пакетов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.