INTEGRITY Документация

Подключение к MySQL

Hyperdrive поддерживает MySQL и совместимые с MySQL базы данных, популярные драйверы, а также библиотек Object Relational Mapper (ORM), использующих эти драйверы.

Создание Hyperdrive

Чтобы создать Hyperdrive для подключения к существующей базе данных MySQL, используйте Wrangler CLI или Панель управления Cloudflare ↗.

При использовании Wrangler замените значение-заполнитель, переданное в --connection-string строкой подключения к вашей базе данных:

# wrangler v3.11 and above required
npx wrangler hyperdrive create my-first-hyperdrive --connection-string="mysql://user:[email protected]:3306/databasenamehere"

Приведённая выше команда выведет ID вашего Hyperdrive, который потребуется указать в конфигурационный файл Wrangler для вашего проекта Workers:

{
	// required for database drivers to function
	"compatibility_flags": [
		"nodejs_compat"
	],
	// Set this to today's date
	"compatibility_date": "2026-08-28",
	"hyperdrive": [
		{
			"binding": "HYPERDRIVE",
			"id": "<your-hyperdrive-id-here>"
		}
	]
}
compatibility_flags = [ "nodejs_compat" ]
# Set this to today's date
compatibility_date = "2026-08-28"

[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<your-hyperdrive-id-here>"

Это позволит Hyperdrive формировать динамическую строку подключения внутри вашего Worker, которую можно передать существующему драйверу базы данных. См. Примеры использования драйвера чтобы узнать, как настроить драйвер базы данных для Hyperdrive.

См. Документация с примерами с пошаговыми инструкциями по настройке Hyperdrive для нескольких популярных провайдеров баз данных.

Поддерживаемые драйверы

Hyperdrive использует Workers Поддержка TCP-сокетов для поддержки TCP подключений к базам данных. В следующей таблице перечислены поддерживаемые драйверы баз данных и минимальные версии, совместимые с Hyperdrive:

Драйвер Документация Минимально необходимая версия Примечания
mysql2 (рекомендуется) документация по mysql2 ↗ [email protected] Поддерживается как в Workers, так и в Pages. Рекомендуется использовать Promise API.
mysql документация по mysql ↗ [email protected] Требует compatibility_flags = ["nodejs_compat"] и compatibility_date = "2024-09-23" см. Совместимость с Node.js. Требуется wrangler 3.78.7 или более поздней версии.
Drizzle Документация Drizzle ↗ Требует [email protected]
Kysely Документация Kysely ↗ Требует [email protected]

^ Отмеченные библиотеки могут использовать в качестве зависимости либо mysql, либо mysql2.

Могут поддерживаться и другие драйверы и ORM, не указанные здесь: этот список не является исчерпывающим.

Драйверы баз данных и совместимость с Node.js

Совместимость с Node.js требуется для драйверов баз данных, включая mysql и mysql2, и должен быть настроен для вашего проекта Workers.

Для дат совместимости 2026-08-04 или более поздней версии проекты Workers и Pages включают оба nodejs_compat и nodejs_compat_v2 по умолчанию. Встроенные API среды выполнения и полифиллы доступны без дополнительной настройки. Для этих дат совместимости данные флаги не используются. Существующим проектам не нужно удалять их при обновлении даты совместимости.

Если ваша дата совместимости раньше 2026-08-04, добавьте nodejs_compat флаг совместимости в ваш конфигурационный файл Wrangler чтобы включить:

{
	"compatibility_flags": [
		"nodejs_compat"
	]
}
compatibility_flags = [ "nodejs_compat" ]

Чтобы отключить Совместимость с Node.js полностью при дате совместимости 2026-08-04 или более поздней версии удалите положительные флаги, если они есть. Затем добавьте оба no_nodejs_compat и no_nodejs_compat_v2. Примеры настройки см. в Флаг совместимости с Node.js.

Поддерживаемые режимы TLS (SSL)

Hyperdrive поддерживает следующие режимы подключения MySQL TLS/SSL при подключении к исходной базе данных:

Режим Поддерживается Подробности
DISABLED Нет Hyperdrive не поддерживает незащищённые соединения в открытом виде.
PREFERRED Нет (используйте REQUIRED) Hyperdrive всегда использует TLS.
REQUIRED Да (по умолчанию) Требуется TLS, а сертификаты сервера проверяются на основе WebPKI.
VERIFY_CA Да Проверяет, что TLS-сертификат сервера подписан корневым CA на стороне клиента.
VERIFY_IDENTITY Да Помимо VERIFY_CA проверках Hyperdrive требует, чтобы имя хоста базы данных совпадало с Subject Alternative Name (SAN) или Common Name (CN) в сертификате.

См. Сертификаты SSL/TLS документации подробно описано, как настроить VERIFY_CA или VERIFY_IDENTITY режимов TLS (SSL) для Hyperdrive.

Примеры использования драйвера

Следующие примеры показывают, как:

  1. Создайте клиент базы данных с помощью драйвера базы данных.
  2. Передайте строку подключения Hyperdrive и подключитесь к базе данных.
  3. Запросите данные из вашей базы данных через Hyperdrive.

mysql2

Следующий код Workers показывает, как использовать mysql2 ↗ с Hyperdrive через Promise API.

Установите mysql2 ↗ драйвер:

npm i mysql2@>3.13.0

Добавьте необходимые флаги совместимости Node.js и привязку Hyperdrive в свой wrangler.jsonc файле:

{
	// required for database drivers to function
	"compatibility_flags": [
		"nodejs_compat"
	],
	// Set this to today's date
	"compatibility_date": "2026-08-28",
	"hyperdrive": [
		{
			"binding": "HYPERDRIVE",
			"id": "<your-hyperdrive-id-here>"
		}
	]
}
compatibility_flags = [ "nodejs_compat" ]
# Set this to today's date
compatibility_date = "2026-08-28"

[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<your-hyperdrive-id-here>"

Создайте новый connection экземпляр и передайте параметры Hyperdrive:

// mysql2 v3.13.0 or later is required
import { createConnection } from "mysql2/promise";

export default {
	async fetch(request, env, ctx): Promise<Response> {
		// Create a new connection on each request. Hyperdrive maintains the underlying
		// database connection pool, so creating a new connection is fast.
		const connection = await createConnection({
			host: env.HYPERDRIVE.host,
			user: env.HYPERDRIVE.user,
			password: env.HYPERDRIVE.password,
			database: env.HYPERDRIVE.database,
			port: env.HYPERDRIVE.port,

			// Required to enable mysql2 compatibility for Workers
			disableEval: true,
		});

		try {
			// Sample query
			const [results, fields] = await connection.query("SHOW tables;");

			// Return result rows as JSON
			return Response.json({ results, fields });
		} catch (e) {
			console.error(e);
			return Response.json(
				{ error: e instanceof Error ? e.message : e },
				{ status: 500 },
			);
		}
	},
} satisfies ExportedHandler<Env>;

mysql

Следующий код Workers показывает, как использовать mysql ↗ с Hyperdrive.

Установите mysql ↗ драйвер:

npm i mysql

Добавьте необходимые флаги совместимости Node.js и привязку Hyperdrive в свой wrangler.jsonc файле:

{
	// required for database drivers to function
	"compatibility_flags": [
		"nodejs_compat"
	],
	// Set this to today's date
	"compatibility_date": "2026-08-28",
	"hyperdrive": [
		{
			"binding": "HYPERDRIVE",
			"id": "<your-hyperdrive-id-here>"
		}
	]
}
compatibility_flags = [ "nodejs_compat" ]
# Set this to today's date
compatibility_date = "2026-08-28"

[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<your-hyperdrive-id-here>"

Создайте новое подключение и передайте параметры Hyperdrive:

import { createConnection } from "mysql";

export default {
	async fetch(request, env, ctx): Promise<Response> {
		const result = await new Promise<any>((resolve) => {
			// Create a connection using the mysql driver with the Hyperdrive credentials (only accessible from your Worker).
			const connection = createConnection({
				host: env.HYPERDRIVE.host,
				user: env.HYPERDRIVE.user,
				password: env.HYPERDRIVE.password,
				database: env.HYPERDRIVE.database,
				port: env.HYPERDRIVE.port,
			});

			connection.connect((error: { message: string }) => {
				if (error) {
					throw new Error(error.message);
				}

				// Sample query
				connection.query("SHOW tables;", [], (error, rows, fields) => {
					resolve({ fields, rows });
				});
			});
		});

		// Return result  as JSON
		return new Response(JSON.stringify(result), {
			headers: {
				"Content-Type": "application/json",
			},
		});
	},
} satisfies ExportedHandler<Env>;

Определение подключений от Hyperdrive

Чтобы определить активные подключения к серверу базы данных MySQL со стороны Hyperdrive:

Следующие шаги