Подключение к базе данных в кластере MySQL®
К хостам кластера Managed Service for MySQL® можно подключиться:
-
Через интернет, если вы настроили публичный доступ для нужного хоста. К таким хостам подключиться можно только используя SSL-соединение.
-
С виртуальных машин Yandex Cloud, расположенных в той же облачной сети. Если к хосту нет публичного доступа, для подключения с таких виртуальных машин необязательно использовать SSL-соединение.
Важно
Если публичный доступ в кластере настроен только для некоторых хостов, автоматическая смена мастера может привести к невозможности подключиться к мастеру из интернета.
Максимальное количество подключений определяется настройкой Max connections, которая зависит от класса хостов.
Подробнее см. в разделе Сеть и кластеры в Managed Service for MySQL®.
Настройка групп безопасности
Для подключения к кластеру необходимо, чтобы группы безопасности содержали правила, которые разрешают трафик с определенных портов, IP-адресов или из других групп безопасности.
Настройки правил будут различаться в зависимости от выбранного способа подключения:
Настройте все группы безопасности кластера так, чтобы они разрешали входящий трафик с любых IP-адресов на порт 3306. Для этого создайте следующее правило для входящего трафика:
- Диапазон портов —
3306
. - Протокол —
TCP
. - Источник —
CIDR
. - CIDR блоки —
0.0.0.0/0
.
-
Настройте все группы безопасности кластера так, чтобы они разрешали входящий трафик из группы безопасности, в которой находится ВМ, на порт 3306. Для этого в этих группах создайте следующее правило для входящего трафика:
- Диапазон портов —
3306
. - Протокол —
TCP
. - Источник —
Группа безопасности
. - Группа безопасности — если кластер и ВМ находятся в одной и той же группе безопасности, выберите значение
Текущая
(Self
). В противном случае укажите группу безопасности ВМ.
- Диапазон портов —
-
Настройте группу безопасности, в которой находится ВМ так, чтобы можно было подключаться к ВМ и был разрешен трафик между ВМ и хостами кластера.
Пример правил для ВМ:
-
Для входящего трафика:
- Диапазон портов —
22
. - Протокол —
TCP
. - Источник —
CIDR
. - CIDR блоки —
0.0.0.0/0
.
Это правило позволяет подключаться к ВМ по протоколу SSH.
- Диапазон портов —
-
Для исходящего трафика:
- Диапазон портов —
0-65535
. - Протокол —
Любой
(Any
). - Назначение —
CIDR
. - CIDR блоки —
0.0.0.0/0
.
Это правило разрешает любой исходящий трафик, что позволяет не только подключаться к кластеру, но и устанавливать на ВМ необходимые для этого сертификаты и утилиты.
- Диапазон портов —
-
Примечание
Вы можете задать более детальные правила для групп безопасности, например, разрешающие трафик только в определенных подсетях.
Группы безопасности должны быть корректно настроены для всех подсетей, в которых будут размещены хосты кластера. При неполных или некорректных настройках групп безопасности можно потерять доступ к кластеру.
Подробнее о группах безопасности см. в разделе Группы безопасности.
Получение SSL-сертификата
MySQL®-хосты с публичным доступом поддерживают только шифрованные соединения. Чтобы использовать их, получите SSL-сертификат:
mkdir -p ~/.mysql && \
wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \
--output-document ~/.mysql/root.crt && \
chmod 0600 ~/.mysql/root.crt
Сертификат будет сохранен в файле ~/.mysql/root.crt
.
mkdir $HOME\.mysql; curl.exe -o $HOME\.mysql\root.crt https://storage.yandexcloud.net/cloud-certs/CA.pem
Сертификат будет сохранен в файле $HOME\.mysql\root.crt
.
Корпоративные политики и антивирус могут блокировать скачивание сертификата. Подробнее см. в разделе Вопросы и ответы.
Для использования графических IDE сохраните сертификат
FQDN хостов MySQL®
Для подключения к хосту потребуется его FQDN — доменное имя. Вы можете использовать FQDN конкретного хоста в кластере или один из особых FQDN, всегда указывающий на текущий хост-мастер или наименее отстающую реплику.
Пример FQDN хоста:
rc1a-goh2a9tr********.mdb.yandexcloud.net
Получить FQDN хоста
FQDN хоста MySQL® можно получить несколькими способами:
-
Посмотрите FQDN в консоли управления:
- Перейдите на страницу кластера.
- Перейдите в раздел Хосты.
- Скопируйте значение в столбце FQDN хоста.
-
Скопируйте команду для подключения к кластеру в консоли управления
. Команда содержит заполненный FQDN хоста. Чтобы получить команду, перейдите на страницу кластера и нажмите кнопку Подключиться. -
Запросите список хостов в кластере с помощью CLI или API.
Особые FQDN
Наравне с обычными FQDN, Managed Service for MySQL® предоставляет несколько особых FQDN, которые также можно использовать при подключении к кластеру.
В кластерах из нескольких хостов особые FQDN могут некоторое время (до 10 минут) указывать на старый хост, даже если он сменил роль (например, из мастера стал репликой). Если используется особый FQDN, который указывает на текущий мастер, то часть запросов на запись может завершиться неудачей — они могут быть направлены к реплике. Это связано с тем, что на обновление DNS-записей для особых FQDN требуется время. Если запрос на запись завершился ошибкой, повторите его позднее.
Важно
Если при автоматической смене мастера новым мастером или наименее отстающей репликой станет хост без публичного доступа, подключиться к такому хосту из интернета будет невозможно. Чтобы этого избежать, включите публичный доступ для всех хостов кластера.
Текущий мастер
FQDN вида c-<идентификатор_кластера>.rw.mdb.yandexcloud.net
всегда указывает на текущий хост-мастер в кластере. Идентификатор кластера можно получить со списком кластеров в каталоге.
При подключении к этому FQDN разрешено выполнять операции чтения и записи.
Важно
Используйте подключение с помощью особого FQDN хоста-мастера только для процессов, которые допускают недоступность базы данных на запись продолжительностью до 10 минут.
Наименее отстающая реплика
FQDN вида c-<идентификатор_кластера>.ro.mdb.yandexcloud.net
указывает на наименее отстающую от мастера реплику. Идентификатор кластера можно запросить со списком кластеров в каталоге.
Особенности:
- При подключении к этому FQDN разрешено выполнять только операции чтения.
- Если в кластере нет активных реплик, то подключиться к этому FQDN невозможно: соответствующая CNAME-запись в DNS будет указывать на пустой объект (
null
).
Подключение из графических IDE
Подключения проверялись в следующем окружении:
- Ubuntu 20.04, DBeaver:
22.2.4
; - MacOS Monterey 12.7:
- JetBrains DataGrip:
2023.3.4
; - DBeaver Community:
24.0.0
.
- JetBrains DataGrip:
Подключаться из графических IDE можно только к хостам кластера в публичном доступе с использованием SSL-сертификата.
Чтобы избежать ошибок при подключении, сохраните сертификат
- Создайте источник данных:
- Выберите в меню File → New → Data Source → MySQL®.
- На вкладке General:
- Укажите параметры подключения:
- Host — FQDN любого хоста MySQL® или один из особых FQDN;
- Port —
3306
; - User, Password — имя и пароль пользователя БД;
- Database — имя БД для подключения.
- Нажмите ссылку Download, чтобы загрузить драйвер соединения.
- Укажите параметры подключения:
- На вкладке SSH/SSL:
- Включите настройку Use SSL.
- В поле CA file укажите путь к файлу SSL-сертификата для подключения.
- Чтобы проверить подключение, нажмите ссылку Test Connection. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку OK, чтобы сохранить источник данных.
- Создайте новое соединение с БД:
- Выберите в меню База данных пункт Новое соединение.
- Выберите из списка БД MySQL®.
- Нажмите кнопку Далее.
- Укажите параметры подключения на вкладке Главное:
- Сервер — FQDN любого хоста MySQL® или один из особых FQDN;
- Порт —
3306
; - База данных — имя БД для подключения;
- Пользователь, Пароль — имя и пароль пользователя БД.
- На вкладке SSL:
- Включите настройку Использовать SSL.
- В поле Корневой сертификат укажите путь к сохраненному файлу SSL-сертификата.
- В блоке Дополнительные:
- Включите настройку Только SSL.
- Выключите настройку Проверять сертификат сервера.
- Нажмите кнопку Тест соединения ... для проверки подключения. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку Готово, чтобы сохранить настройки соединения с БД.
Подключение из Yandex WebSQL
Вы можете отправлять SQL-запросы к базам данных в кластере Managed Service for MySQL® с помощью сервиса Yandex WebSQL.
WebSQL — это сервис Yandex Cloud, который позволяет подключаться к кластерам управляемых баз данных, работать с БД, таблицами и схемами и выполнять запросы. Сервис работает в браузере, не требует дополнительной авторизации и предлагает удобные подсказки для работы с SQL-командами.
Чтобы подключаться из WebSQL к кластеру Managed Service for MySQL®, необходимо создать подключение:
- Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
- Нажмите на имя нужного кластера.
- Включите опцию Доступ из WebSQL в настройках кластера, если она еще не включена.
- Выберите вкладку WebSQL.
- Нажмите кнопку Создать подключение и укажите параметры подключения:
- Имя подключения.
- Тип базы данных — MySQL®.
- Кластер — будет автоматически выбран текущий кластер MySQL®.
- Имя пользователя, от лица которого вы будете подключаться к базе данных в кластере.
- Пароль пользователя.
- Базы данных, к которым вы хотите подключиться. Вы можете подключиться только к существующим в этом кластере БД. У пользователя, которого вы указали, должен быть настроен доступ к ним.
- Нажмите кнопку Создать.
Чтобы открыть SQL-редактор, нажмите на созданное подключение на вкладке WebSQL.
Подробнее о работе с WebSQL см. в документации сервиса.
Подготовка к подключению из Docker-контейнера
Чтобы подключаться к кластеру Managed Service for MySQL® из Docker-контейнера, добавьте в Dockerfile строки:
RUN apt-get update && \
apt-get install mysql-client --yes
RUN apt-get update && \
apt-get install wget mysql-client --yes && \
mkdir --parents ~/.mysql && \
wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \
--output-document ~/.mysql/root.crt && \
chmod 0600 ~/.mysql/root.crt
Примеры строк подключения
Примеры для Linux проверялись в следующем окружении:
- Виртуальная машина в Yandex Cloud с Ubuntu 20.04 LTS.
- Bash:
5.0.16
. - Python:
3.8.2
; pip3:20.0.2
. - PHP:
7.4.3
. - OpenJDK:
11.0.8
; Maven:3.6.3
. - Node.JS:
10.19.0
, npm:6.14.4
. - Go:
1.13.8
. - Ruby:
2.7.0p0
. - unixODBC:
2.3.6
.
Примеры для Windows проверялись в следующем окружении:
- Локальная машина с Windows 10 Pro build
19042.1052
. - PowerShell:
5.1.19041
. - cURL:
7.55.1 WinSSL
.
Подключиться к MySQL®-хостам в публичном доступе можно только с использованием SSL-сертификата.
Bash
Перед подключением установите утилиту mysql
:
sudo apt update && sudo apt install --yes mysql-client
mysql --host=<имя_хоста_MySQL®>.mdb.yandexcloud.net \
--port=3306 \
--ssl-ca=~/.mysql/root.crt \
--ssl-mode=VERIFY_IDENTITY \
--user=<имя_пользователя> \
--password \
<имя_БД>
mysql --host=<FQDN_любого_хоста_MySQL®> \
--port=3306 \
--ssl-mode=DISABLED \
--user=<имя_пользователя> \
--password \
<имя_БД>
О том, как получить FQDN хоста, см. инструкцию.
При выполнении любой из команд введите пароль пользователя БД.
После подключения к СУБД выполните команду SELECT version();
.
При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия MySQL®.
Go
Перед подключением установите зависимости:
sudo apt update && sudo apt install --yes golang git && \
go get github.com/go-sql-driver/mysql
connect.go
package main
import (
"io/ioutil"
"crypto/tls"
"crypto/x509"
"database/sql"
"fmt"
"github.com/go-sql-driver/mysql"
)
const (
host = "<FQDN_любого_хоста_MySQL®>"
port = 3306
user = "<имя_пользователя>"
password = "<пароль_пользователя>"
dbname = "<имя_БД>"
)
func main() {
rootCertPool := x509.NewCertPool()
pem, err := ioutil.ReadFile("/home/<домашняя_директория>/.mysql/root.crt")
if err != nil {
panic(err)
}
if ok := rootCertPool.AppendCertsFromPEM(pem); !ok {
panic("Failed to append PEM.")
}
mysql.RegisterTLSConfig("custom", &tls.Config{
RootCAs: rootCertPool,
})
mysqlInfo := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?tls=custom",
user, password, host, port, dbname)
conn, err := sql.Open("mysql", mysqlInfo)
if err != nil {
panic(err)
}
defer conn.Close()
q, err := conn.Query("SELECT version()")
if err != nil {
panic(err)
}
var result string
for q.Next() {
q.Scan(&result)
fmt.Println(result)
}
}
При этом способе подключения в коде необходимо указывать полный путь к сертификату root.crt
для MySQL® в переменной ca
.
connect.go
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "<FQDN_любого_хоста_MySQL®>"
port = 3306
user = "<имя_пользователя>"
password = "<пароль_пользователя>"
dbname = "<имя_БД>"
)
func main() {
mysqlInfo := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s",
user, password, host, port, dbname)
conn, err := sql.Open("mysql", mysqlInfo)
if err != nil {
panic(err)
}
defer conn.Close()
q, err := conn.Query("SELECT version()")
if err != nil {
panic(err)
}
var result string
for q.Next() {
q.Scan(&result)
fmt.Println(result)
}
}
О том, как получить FQDN хоста, см. инструкцию.
Подключение:
go run connect.go
При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия MySQL®.
Java
Перед подключением:
-
Установите зависимости:
sudo apt update && sudo apt install --yes default-jdk maven
-
Добавьте SSL-сертификат в хранилище доверенных сертификатов Java (Java Key Store), чтобы драйвер MySQL® мог использовать этот сертификат при защищенном подключении к хостам кластера. При этом задайте пароль в параметре
-storepass
для защиты хранилища:cd ~/.mysql && \ sudo keytool -importcert \ -alias YandexCA \ -file root.crt \ -keystore YATrustStore \ -storepass <пароль_хранилища_сертификатов> \ --noprompt
Где
storepass
— пароль хранилища сертификатов, не короче 6 символов. -
Создайте директорию для проекта Maven:
cd ~/ && mkdir -p project/src/java/com/example && cd project/
-
Создайте конфигурационный файл для Maven:
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>app</artifactId> <packaging>jar</packaging> <version>0.1.0</version> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}-${project.version}</finalName> <sourceDirectory>src</sourceDirectory> <resources> <resource> <directory>src</directory> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <goals> <goal>attached</goal> </goals> <phase>package</phase> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.example.App</mainClass> </manifest> </archive> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.0</version> <configuration> <archive> <manifest> <mainClass>com.example.App</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project>
Актуальную версию
mysql-connector-java
уточняйте на странице проекта в репозитории Maven .
src/java/com/example/App.java
package com.example;
import java.sql.*;
public class App {
public static void main(String[] args) {
String DB_URL = "jdbc:mysql://<FQDN_любого_хоста_MySQL®>:3306/<имя_БД>?useSSL=true";
String DB_USER = "<имя_пользователя>";
String DB_PASS = "<пароль_пользователя>";
System.setProperty("javax.net.ssl.trustStore", "/home/<домашняя_директория>/.mysql/YATrustStore");
System.setProperty("javax.net.ssl.trustStorePassword", "<пароль_хранилища_сертификатов>");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
ResultSet q = conn.createStatement().executeQuery("SELECT version()");
if(q.next()) {System.out.println(q.getString(1));}
conn.close();
}
catch(Exception ex) {ex.printStackTrace();}
}
}
В этом коде необходимо указывать полный путь к хранилищу сертификатов YATrustStore
для драйвера MySQL® в свойстве javax.net.ssl.trustStore
.
src/java/com/example/App.java
package com.example;
import java.sql.*;
public class App {
public static void main(String[] args) {
String DB_URL = "jdbc:mysql://<FQDN_любого_хоста_MySQL®>:3306/<имя_БД>?useSSL=false";
String DB_USER = "<имя_пользователя>";
String DB_PASS = "<пароль_пользователя>";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
ResultSet q = conn.createStatement().executeQuery("SELECT version()");
if(q.next()) {System.out.println(q.getString(1));}
conn.close();
}
catch(Exception ex) {ex.printStackTrace();}
}
}
О том, как получить FQDN хоста, см. инструкцию.
Подключение:
mvn clean package && \
java -jar target/app-0.1.0-jar-with-dependencies.jar
При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия MySQL®.
Node.js
Перед подключением установите зависимости:
sudo apt update && sudo apt install --yes nodejs npm && \
npm install mysql2
app.js
"use strict"
const fs = require('fs');
const mysql = require('mysql2');
const config = {
host : '<FQDN_любого_хоста_MySQL®>',
port : 3306,
user : '<имя_пользователя>',
password : '<пароль_пользователя>',
database : '<имя_БД>',
ssl: {
rejectUnauthorized: true,
ca: fs.readFileSync('/home/<домашняя_директория>/.mysql/root.crt').toString(),
},
}
const conn = mysql.createConnection(config)
conn.connect(err => {if (err) throw err})
conn.query('SELECT version()', (err, result, fields) => {
if (err) throw err
console.log(result[0])
conn.end()
})
При этом способе подключения в коде необходимо указывать полный путь к сертификату root.crt
для MySQL® в переменной ca
.
app.js
"use strict"
const mysql = require('mysql2');
const config = {
host : '<FQDN_любого_хоста_MySQL®>',
port : 3306,
user : '<имя_пользователя>',
password : '<пароль_пользователя>',
database : '<имя_БД>',
}
const conn = mysql.createConnection(config)
conn.connect(err => {if (err) throw err})
conn.query('SELECT version()', (err, result, fields) => {
if (err) throw err
console.log(result[0])
conn.end()
})
О том, как получить FQDN хоста, см. инструкцию.
Подключение:
node app.js
При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия MySQL®.
ODBC
Перед подключением установите зависимости:
sudo apt update && sudo apt install --yes unixodbc && \
wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc_8.0.21-1ubuntu20.04_amd64.deb && \
sudo dpkg -i mysql-connector-odbc_8.0.21-1ubuntu20.04_amd64.deb
Драйвер MySQL® Connector/ODBC будет автоматически зарегистрирован в файле /etc/odbcinst.ini
. Актуальная версия драйвера: mysql-connector-odbc
Настройки подключения необходимо задать в файле /etc/odbc.ini
.
odbc.ini
[mysql]
Driver=MySQL ODBC 8.0 Unicode Driver
SERVER=<FQDN_любого_хоста_MySQL®>
UID=<имя_пользователя>
PWD=<пароль_пользователя>
DATABASE=<имя_БД>
PORT=3306
SSLCA=/home/<домашняя_директория>/.mysql/root.crt
SSLVERIFY=1
При этом способе подключения в файле /etc/odbc.ini
необходимо указывать полный путь к сертификату root.crt
для MySQL® в параметре SSLCA
.
odbc.ini
[mysql]
Driver=MySQL ODBC 8.0 Unicode Driver
SERVER=<FQDN_любого_хоста_MySQL®>
UID=<имя_пользователя>
PWD=<пароль_пользователя>
DATABASE=<имя_БД>
PORT=3306
О том, как получить FQDN хоста, см. инструкцию.
Подключение:
isql -v mysql
После подключения к СУБД выполните команду SELECT version();
.
При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия MySQL®.
PHP
Перед подключением установите зависимости:
sudo apt update && apt install --yes php php-mysql
connect.php
<?php
$conn = mysqli_init();
$conn->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
$conn->ssl_set(NULL, NULL, '/home/<домашняя_директория>/.mysql/root.crt', NULL, NULL);
$conn->real_connect('<FQDN_любого_хоста_MySQL®>', '<имя_пользователя>', '<пароль_пользователя>', '<имя_БД>', 3306, NULL, MYSQLI_CLIENT_SSL);
$q = $conn->query('SELECT version()');
$result = $q->fetch_row();
echo($result[0]);
$q->close();
$conn->close();
?>
При этом способе подключения в коде необходимо указывать полный путь к сертификату root.crt
для MySQL® в методе ssl_set
.
connect.php
<?php
$conn = mysqli_init();
$conn->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false);
$conn->real_connect('<FQDN_любого_хоста_MySQL®>', '<имя_пользователя>', '<пароль_пользователя>', '<имя_БД>', 3306, NULL, NULL);
$q = $conn->query('SELECT version()');
$result = $q->fetch_row();
echo($result[0]);
$q->close();
$conn->close();
?>
О том, как получить FQDN хоста, см. инструкцию.
Подключение:
php connect.php
При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия MySQL®.
PowerShell
Перед подключением скачайтеMySQL Shell
.
mysqlsh --host=<FQDN_любого_хоста_MySQL®> `
--port=3306 `
--ssl-ca=<абсолютный_путь_к_файлу_сертификата> `
--ssl-mode=VERIFY_IDENTITY `
--user=<имя_пользователя> `
--password `
--database=<имя_БД> `
--sql
mysqlsh --host=<FQDN_любого_хоста_MySQL®> `
--port=3306 `
--ssl-mode=DISABLED `
--user=<имя_пользователя> `
--password `
--database=<имя_БД>
О том, как получить FQDN хоста, см. инструкцию.
При выполнении любой из команд введите пароль пользователя БД.
После подключения к СУБД выполните команду SELECT version();
.
При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия MySQL®.
Python
Перед подключением установите зависимости:
sudo apt update && sudo apt install --yes python3 python3-pip libmysqlclient-dev && \
pip3 install mysqlclient
connect.py
import MySQLdb
conn = MySQLdb.connect(
host="<FQDN_любого_хоста_MySQL®>",
port=3306,
db="<имя_БД>",
user="<имя_пользователя>",
passwd="<пароль_пользователя>",
ssl={'ca': '~/.mysql/root.crt'})
cur = conn.cursor()
cur.execute('SELECT version()')
print(cur.fetchone()[0])
conn.close()
connect.py
import MySQLdb
conn = MySQLdb.connect(
host="<FQDN_любого_хоста_MySQL®>",
port=3306,
db="<имя_БД>",
user="<имя_пользователя>",
passwd="<пароль_пользователя>")
cur = conn.cursor()
cur.execute('SELECT version()')
print(cur.fetchone()[0])
conn.close()
О том, как получить FQDN хоста, см. инструкцию.
Подключение:
python3 connect.py
При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия MySQL®.
Ruby
Перед подключением установите зависимости:
sudo apt update && sudo apt install --yes ruby ruby-mysql2
connect.rb
require "mysql2"
conn = Mysql2::Client.new(
:host => "<FQDN_любого_хоста_MySQL®>",
:port => 3306,
:database => "<имя_БД>",
:username => "<имя_пользователя>",
:password => "<пароль_пользователя>",
:ssl_mode => "verify_identity",
:sslca => "~/.mysql/root.crt")
q = conn.query("SELECT version()")
q.each do |result|
puts result["version()"]
end
conn.close()
connect.rb
require "mysql2"
conn = Mysql2::Client.new(
:host => "<FQDN_любого_хоста_MySQL®>",
:port => 3306,
:database => "<имя_БД>",
:username => "<имя_пользователя>",
:password => "<пароль_пользователя>")
q = conn.query("SELECT version()")
q.each do |result|
puts result["version()"]
end
conn.close()
О том, как получить FQDN хоста, см. инструкцию.
Подключение:
ruby connect.rb
При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия MySQL®.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc