INTEGRITY Dokumentace

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:

  1. Zaregistrujte si účet Cloudflare pokud jste to ještě neudělali.
  2. Nainstalujte npm.
  3. 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 Node 16.17.0 nebo novější.
  4. 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-tutorial

Tí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:

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-tutorial

2. 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.0

Př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 deploy

Vaš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.