This repo contains example code and a MySQL driver that can be used in any Workers project. If you
are interested in using the driver outside of this template, copy the driver/mysql module
into your project's node_modules or directly alongside your source.
Before you start, please refer to the official tutorial.
const mysql = new Client()
const mysqlClient = await mysql.connect({
username: '<DATABASE_USER>',
db: '<DATABASE_NAME>',
// hostname is the full URL to your pre-created Cloudflare Tunnel, see documentation here:
// https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/create-tunnel
hostname: env.TUNNEL_HOST || 'https://dev.example.com',
password: env.DATABASE_PASSWORD, // use a secret to store passwords
})Please Note:
- you must use this config object format vs. a database connection string
- the
hostnameproperty must be the URL to your Cloudflare Tunnel, NOT your database host- your Tunnel will be configured to connect to your database host
mysql/docker-compose.yml
This docker-compose composition will get you up and running with a local instance of mysql and a
copy of cloudflared to enable your applications to securely connect through an encrypted tunnel.
Unlike the PostgreSQL example, this does not contain any server-side connection pool, but you can
configure one behind cloudflared should it be necessary.
from within
scripts/mysql, run:
- Create credentials file (first time only)
docker run -v ~/.cloudflared:/etc/cloudflared cloudflare/cloudflared:2021.10.5 login- Start a local dev stack (cloudflared/mysql)
TUNNEL_HOSTNAME=dev.example.com docker-compose up