← Hyperdrive (Postgres & MySQL) / hyperdrive / examples / connect-to-mysql / mysql-database-providers
AWS RDS и Aurora
В этом примере показано, как подключить Hyperdrive к инстансу базы данных Amazon Relational Database Service (Amazon RDS) или Amazon Aurora MySQL.
1. Разрешите доступ к Hyperdrive
Чтобы Hyperdrive мог подключаться к вашей базе данных, убедитесь, что у него есть действительные учётные данные пользователя и сетевой доступ.
AWS Console
При создании или изменении инстанса в консоли AWS:
- Настройте кластер базы данных и другие параметры, которые вы хотите настроить.
- В разделе Настройки > Credential settings, запишите Главное имя пользователя и Главный пароль (только Aurora).
- В разделе Подключение заголовок, убедитесь, что Публичный доступ имеет значение Да.
- Выберите Существующая группа безопасности VPC который разрешает публичный доступ из интернета с
0.0.0.0/0на порт, который прослушивает ваш экземпляр базы данных (по умолчанию:3306для инстансов MySQL). - Выберите Create database.
Получите конечную точку базы данных (Aurora)
Чтобы получить конечную точку базы данных (имя хоста), к которой будет подключаться Hyperdrive:
- Перейдите в Базы данных представление в разделе RDS в консоли AWS.
- Выберите базу данных, к которой должен подключаться Hyperdrive.
- В разделе Конечные точки заголовок и запишите Имя конечной точки типом
Writerи Порт.
Получите конечную точку базы данных (RDS MySQL)
Для обычных экземпляров RDS (не Aurora) необходимо получить конечную точку и порт базы данных:
- Перейдите в Базы данных представление в разделе RDS в консоли AWS.
- Выберите базу данных, к которой должен подключаться Hyperdrive.
- В разделе Подключение и безопасность заголовок и запишите Конечная точка и Порт.
Конечная точка будет выглядеть примерно так: YOUR_DATABASE_NAME.cpuo5rlli58m.AWS_REGION.rds.amazonaws.com, а порт по умолчанию будет 3306.
2. Создание пользователя
После создания базы данных необходимо создать пользователя, от имени которого будет подключаться Hyperdrive. Хотя вы можете использовать Главное имя пользователя настроенного при первоначальном создании базы данных, рекомендуется создать пользователя с ограниченными правами.
Чтобы создать нового пользователя, войдите в базу данных и используйте CREATE USER команда:
# Log in to the database
mysql -h ENDPOINT_NAME -P PORT -u MASTER_USERNAME -p database_nameВыполните следующие SQL-инструкции:
-- Create a role for Hyperdrive
CREATE ROLE hyperdrive;
-- Allow Hyperdrive to connect
GRANT USAGE ON mysql_db.* TO hyperdrive;
-- Grant database privileges to the hyperdrive role
GRANT ALL PRIVILEGES ON mysql_db.* to hyperdrive;
-- Create a specific user for Hyperdrive to log in as
CREATE USER 'hyperdrive_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'sufficientlyRandomPassword';
-- Grant this new user the hyperdrive role privileges
GRANT hyperdrive to 'hyperdrive_user'@'%';Ознакомьтесь с документацией AWS документация о ролях пользователей в MySQL ↗ для дополнительных сведений.
Указав пользователя базы данных, пароль, конечную точку базы данных (имя хоста и порт) и имя базы данных, теперь можно настроить Hyperdrive.
3. Создание конфигурации базы данных
Чтобы настроить Hyperdrive, вам потребуется:
- IP-адрес (или имя хоста) и порт вашей базы данных.
- Имя пользователя базы данных (например,
hyperdrive-demo) которую вы настроили на предыдущем шаге. - Пароль, связанный с этим именем пользователя.
- Имя базы данных, к которой должен подключиться Hyperdrive. Например,
mysql.
Hyperdrive принимает комбинацию этих параметров в стандартном формате строки подключения, который используется драйверами баз данных:
mysql://USERNAME:PASSWORD@HOSTNAME_OR_IP_ADDRESS:PORT/database_nameБольшинство провайдеров баз данных предоставляют строку подключения, которую можно скопировать и вставить прямо в Hyperdrive.
Чтобы создать конфигурацию Hyperdrive с помощью Wrangler CLI, откройте терминал и выполните следующую команду.
- Замените <NAME_OF_HYPERDRIVE_CONFIG> на имя вашей конфигурации Hyperdrive и вставьте строку подключения, предоставленную вашим хостом базы данных, или,
- Замените
user,password,HOSTNAME_OR_IP_ADDRESS,port, а такжеdatabase_nameзаполнители значениями, соответствующими вашей базе данных:
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="mysql://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name"Эта команда выводит привязку для конфигурационный файл 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>"3. Использование Hyperdrive в вашем 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>;Следующие шаги
- Подробнее о Как работает Hyperdrive.
- См. руководство по устранению неполадок чтобы отладить типичные проблемы.
- Узнайте больше о других варианты хранения доступен для Cloudflare Workers.