← Cloudflare Workers / workers / tutorials
Подключение к базе данных MySQL с помощью Cloudflare Workers
В этом руководстве вы узнаете, как создать приложение Cloudflare Workers и подключить его к базе данных MySQL с помощью TCP-сокеты и Hyperdrive. Приложение Workers, которое вы создадите в этом руководстве, будет взаимодействовать с базой данных товаров в MySQL.
Предварительные требования
Чтобы продолжить:
- Зарегистрируйтесь для получения Аккаунт Cloudflare ↗ если вы ещё этого не сделали.
- Установка
npm↗. - Установка
Node.js↗. Используйте менеджер версий Node, например Volta ↗ или nvm ↗ чтобы избежать проблем с правами доступа и переключать версии Node.js. Wrangler требует версии Node16.17.0или более поздней версии. - Убедитесь, что у вас есть доступ к базе данных MySQL.
1. Создайте приложение Worker
Сначала используйте create-cloudflare CLI ↗ чтобы создать новое приложение Worker. Для этого откройте окно терминала и выполните следующую команду:
npm create cloudflare@latest -- mysql-tutorialЭто предложит вам установить create-cloudflare ↗ пакет и проведёт вас через мастер настройки.
Для настройки выберите следующие параметры:
- Для С чего вы хотите начать?, выберите
Hello World example. - Для Какой шаблон вы хотите использовать?, выберите
Worker only. - Для Какой язык вы хотите использовать?, выберите
TypeScript. - Для Хотите использовать git для контроля версий?, выберите
Yes. - Для Хотите развернуть приложение?, выберите
No(мы внесём некоторые изменения перед развёртыванием).
Если вы решите развернуть проект, вам будет предложено пройти аутентификацию (если вход еще не выполнен), после чего проект будет развернут. После этого вы всё равно сможете изменить код Worker и развернуть его повторно в конце этого руководства.
Теперь перейдите в только что созданный каталог:
cd mysql-tutorial2. Включение совместимости с Node.js
Совместимость с Node.js требуется для драйверов баз данных, включая 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.
3. Создание конфигурации Hyperdrive
Создайте конфигурацию Hyperdrive, используя строку подключения к вашей базе данных MySQL.
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="mysql://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name"Эта команда выводит конфигурацию Hyperdrive id который будет использоваться для вашего Hyperdrive привязка. Настройте привязку, указав id в файле Wrangler.
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "hyperdrive-example",
"main": "src/index.ts",
// Set this to today's date
"compatibility_date": "2026-08-28",
"compatibility_flags": [
"nodejs_compat"
],
// Pasted from the output of `wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string=[...]` above.
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "<ID OF THE CREATED HYPERDRIVE CONFIGURATION>"
}
]
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "hyperdrive-example"
main = "src/index.ts"
# Set this to today's date
compatibility_date = "2026-08-28"
compatibility_flags = [ "nodejs_compat" ]
[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<ID OF THE CREATED HYPERDRIVE CONFIGURATION>"4. Выполните запрос к базе данных из Worker
Установите 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>;5. Разверните Worker
Выполните следующую команду, чтобы развернуть Worker:
npx wrangler deployВаше приложение теперь доступно по адресу <YOUR_WORKER>.<YOUR_SUBDOMAIN>.workers.dev.
Следующие шаги
Чтобы узнать больше о работе с базами данных и Workers, см. Руководства и изучите Документация по базам данных.
Если у вас есть вопросы, нужна помощь или вы хотите поделиться своим проектом, присоединяйтесь к сообществу разработчиков Cloudflare на Discord ↗ чтобы пообщаться с другими разработчиками и командой Cloudflare.