Search code examples
adonis.js

Adonis: How to connect with SSL (with a certificate.crt file) to MySQL?


I just created a Managed Database on Digital Ocean that requires an SSL connection. How can I do that with Adonis?


Solution

  • This code works for me:

    /**************************************************************************
     * IMPORTS
     ***************************************************************************/
    
    // NPM
    const fs = require('fs')
    
    // Providers
    const Env = use('Env')
    
    /**************************************************************************
     * CONFIG > DATABASE
     ***************************************************************************/
    
    const config = {
      connection: Env.get('DB_CONNECTION', 'mysql'),
    
      mysql: {
        client: 'mysql',
    
        connection: {
          host: Env.get('DB_HOST', 'localhost'),
          port: Env.get('DB_PORT', ''),
          user: Env.get('DB_USER', 'root'),
          password: Env.get('DB_PASSWORD', ''),
          database: Env.get('DB_DATABASE', 'adonis'),
        },
    
        debug: Env.get('DB_DEBUG', false),
      },
    }
    
    // Add certificate for production environment
    if (Env.get('NODE_ENV') === 'production') {
      config.mysql.connection.ssl = {
        ca: fs.readFileSync(__dirname + '/certs/ca-database.crt'),
      }
    }
    
    module.exports = config