Integrate a managed Aiven MySQL database to your application and benefit from native autoscaling, automatic HTTPS (SSL), auto-healing, and global load-balancing across our edge network with zero configuration.
Aiven for MySQL
This guide explains how to connect an Aiven managed MySQL database to an application running on Koyeb. To successfully follow this documentation, you will need to have:
The application that connects to the Aiven managed MySQL database uses Prisma as an ORM. Prisma is an open-source ORM. We use it to synchronize our database schema with our Prisma schema.
If you already have a freshly created Aiven managed MySQL database running and want to quickly preview how to connect your database to an application running on Koyeb, use the Deploy to Koyeb button below.
Make sure to replace the DATABASE_URL
environment variable with the connection string of your Aiven database.
To create an Aiven managed MySQL database,
sign into your Aiven account
On the Aiven control panel, click the Create Service button to provision a database and access the service creation page.
aiven-koyeb
.When you are done configuring your database, click the Create service button. Your database will be provisioned.
From your Aiven MySQL service page, click the Copy button icon on the right side of the Service URI field. The connection string should be similar to the following:
mysql://<user>:<password>@<host>:<port>/defaultdb?ssl-mode=REQUIRED
Save it in a safe place, we will need it in the next step to connect our application to the database.
You can deploy on Koyeb using the control panel or via the Koyeb CLI.
To deploy the example application using the
control panel
github.com/koyeb/example-express-prisma
as the GitHub repository to
deploy and keep the default branch as main
npm run mysql:init
as the build command Build commandDATABASE_URL
environment variable to indicate the application how to
connect to the Aiven MySQL database. Give the environment variable a name,
DATABASE_URL
and enter the connection string from earlier as the
valueexpress-aiven-mysql
Koyeb is now building the application. Once the build has finished, you will be able
to access your application running on Koyeb by clicking the URL ending with
.koyeb.app
.
The example application exposes a /planets
endpoint that you can use to list
planets from the database. Once your deployment is live, you should see the
following results when navigating to https://<YOUR_APP_URL>.koyeb.app/planets
:
[ { "id": 1, "name": "Mercury" }, { "id": 2, "name": "Venus" }, { "id": 3, "name": "Mars" } ]
To deploy the example application using the Koyeb CLI, run the following command in your terminal:
koyeb app init express-aiven-mysql \ --git github.com/koyeb/example-express-prisma \ --git-branch main \ --git-build-command "npm run mysql:init" \ --ports 8080:http \ --routes /:8080 \ --env PORT=8080 \ --env DATABASE_URL="mysql://<user>:<password><host>:<port>/defaultdb?ssl-mode=REQUIRED"
Make sure to replace user
, password
, and port
with your own.
Access deployment logs
To track the app deployment and visualize build logs, execute the following command:
koyeb service logs express-aiven-mysql/express-aiven-mysql -t build
Access your app
Once the deployment of your application has finished, you can retrieve the public domain to access your application by running the following command:
$ koyeb app get express-aiven-mysql ID NAME DOMAINS CREATED AT 1a074269 express-aiven-mysql ["express-aiven-mysql-ed.koyeb.app"] 02 Dec 22 15:06 UTC
The example application exposes a /planets
endpoint that you can use to list
planets from the database. Once your deployment is live, you should see the
following results when navigating to https://<YOUR_APP_URL>.koyeb.app/planets
:
[ { "id": 1, "name": "Mercury" }, { "id": 2, "name": "Venus" }, { "id": 3, "name": "Mars" } ]
To delete the example application and the Aiven MySQL database and avoid incurring any charges, follow these steps: