Skip to content

MySQL Provider

After you've added the MySQL Provider package to your project, setting the provider up in code is easy.

Add to Droplet

First, register the MySQLProvider.Provider with your Droplet.

import Vapor
import MySQLProvider

let config = try Config()
try config.addProvider(MySQLProvider.Provider.self)

let drop = try Droplet(config)

...

Configure Fluent

Once the provider is added to your Droplet, you can configure Fluent to use the MySQL driver.

Config/fluent.json

{
    "driver": "mysql"
}

Seealso

Learn more about configuration files in the Settings guide.

Configure MySQL

If you run your application now, you will likely see an error that the MySQL configuration file is missing. Let's add that now.

Basic

Here is an example of a simple MySQL configuration file.

Config/mysql.json

{
    "hostname": "127.0.0.1",
    "user": "root",
    "password": "password",
    "database": "hello"
}

Note

It's a good idea to store the MySQL configuration file in the Config/secrets folder since it contains sensitive information.

URL

You can also pass the MySQL credentials as a URL.

Config/mysql.json

{
    "url": "http://root:password@127.0.0.1/hello"
}

Read Replicas

Read replicas can be supplied by passing a single master hostname and an array of readReplicas hostnames.

Config/mysql.json

{
    "master": "master.mysql.foo.com",
    "readReplicas": ["read01.mysql.foo.com", "read02.mysql.foo.com"],
    "user": "root",
    "password": "password",
    "database": "hello"
}

Tip

You can also provide the readReplicas as a comma-separated string.

Driver

You can get access to the MySQL Driver on the droplet.

import Vapor
import MySQLProvider

let mysqlDriver = try drop.mysql()

Configure Cache

You can also choose to use your Fluent database (now set to MySQL) for caching.

Config/droplet.json

{
    "driver": "fluent"
}

Learn more about caching here.

Done

Next time you boot your Droplet, you should see:

Database prepared

You are now ready to start using Fluent with your MySQL database.