← Cloudflare Workers / workers / tutorials
Připojte se k databázi MySQL pomocí Cloudflare Workers
V tomto tutoriálu se naučíte vytvořit aplikaci Cloudflare Workers a připojit ji k databázi MySQL pomocí TCP sockety a Hyperdrive. Aplikace Workers, kterou v tomto návodu vytvoříte, bude pracovat s databází produktů v MySQL.
Předpoklady
Chcete-li pokračovat:
- Zaregistrujte si účet Cloudflare ↗ pokud jste to ještě neudělali.
- Nainstalujte
npm↗. - Nainstalujte
Node.js↗. Použijte správce verzí Node, například Volta ↗ nebo nvm ↗ abyste se vyhnuli problémům s oprávněními a mohli měnit verze Node.js. Wrangler vyžaduje verzi Node16.17.0nebo novější. - Ujistěte se, že máte přístup k databázi MySQL.
1. Vytvořte aplikaci Worker
Nejprve použijte create-cloudflare CLI ↗ pro vytvoření nové aplikace Worker. Otevřete okno terminálu a spusťte následující příkaz:
npm create cloudflare@latest -- mysql-tutorialTímto budete vyzváni k instalaci create-cloudflare ↗ balíček a provede vás průvodcem nastavením.
Při nastavení vyberte následující možnosti:
- Pro S čím byste chtěli začít?, vyberte
Hello World example. - Pro Jakou šablonu chcete použít?, vyberte
Worker only. - Pro Jaký jazyk chcete použít?, vyberte
TypeScript. - Pro Chcete používat git pro správu verzí?, vyberte
Yes. - Pro Chcete nasadit svou aplikaci?, vyberte
No(před nasazením provedeme ještě několik změn).
Pokud se rozhodnete nasadit, budete vyzváni k ověření (pokud ještě nejste přihlášeni) a projekt se nasadí. Po nasazení můžete kód Workeru dále upravovat a na konci tohoto návodu jej nasadit znovu.
Nyní přejděte do nově vytvořeného adresáře:
cd mysql-tutorial2. Povolte kompatibilitu s Node.js
Kompatibilita s Node.js je vyžadován pro databázové ovladače, včetně mysql2, a je nutné ho nakonfigurovat pro váš projekt Workers.
Pro data kompatibility 2026-08-04 nebo novější mají projekty Workers a Pages povolené oba nodejs_compat a nodejs_compat_v2 ve výchozím nastavení. Vestavěná runtime API a polyfilly jsou dostupné bez dalšího nastavení. Tyto příznaky se pro tato data kompatibility nepoužívají. Stávající projekty je při aktualizaci data kompatibility nemusí odebírat.
Pokud je vaše datum kompatibility starší než 2026-08-04, přidejte nodejs_compat příznak kompatibility do vašeho Konfigurační soubor Wrangler abyste se přihlásili:
{
"compatibility_flags": [
"nodejs_compat"
]
}compatibility_flags = [ "nodejs_compat" ]Chcete-li vypnout Kompatibilita s Node.js zcela pro datum kompatibility 2026-08-04 nebo novější odeberte pozitivní příznaky, pokud jsou přítomné. Poté přidejte oba no_nodejs_compat a no_nodejs_compat_v2. Příklady konfigurace najdete v Příznak kompatibility s Node.js.
3. Vytvořte konfiguraci Hyperdrive
Vytvořte konfiguraci Hyperdrive pomocí connection stringu pro vaši databázi MySQL.
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="mysql://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name"Tento příkaz vypíše konfiguraci Hyperdrive id která bude použita pro váš Hyperdrive binding. Nastavte binding zadáním id v souboru 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. Dotazujte se na databázi z Workeru
Nainstalujte mysql2 ↗ ovladač:
npm i mysql2@>3.13.0Přidejte potřebné příznaky kompatibility s Node.js a vazbu Hyperdrive do svého wrangler.jsonc soubor:
{
// 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>"Vytvořte nový connection instance a předejte parametry 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. Nasaďte svůj Worker
Následujícím příkazem nasaďte svůj Worker:
npx wrangler deployVaše aplikace je nyní spuštěná a dostupná na adrese <YOUR_WORKER>.<YOUR_SUBDOMAIN>.workers.dev.
Další kroky
Chcete-li se dozvědět více o tom, co lze vytvářet s databázemi a Workers, přečtěte si Návody a prozkoumejte Dokumentace k databázím.
Pokud máte jakékoli dotazy, potřebujete pomoc nebo se chcete podělit o svůj projekt, připojte se ke komunitě Cloudflare Developer na Discord ↗ pro spojení s ostatními vývojáři a týmem Cloudflare.