Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

jefkine's avatar

Connecting To MySQL via SSL from Lumen

How do i connect to a remote MySQL database via SSL from Lumen? Where do i add the SSL options to the database credentials

0 likes
2 replies
Sulaiman's avatar
Level 4

Hi jefkine,

I faced the same issue with a PostgresSQL database.

I created my own config/database.php in the root of the project, and served the SSL parameters as "options".

Here's what my file looked like,

...
    'pgsql' => [
        'driver'   => 'pgsql',
        'host'     => env('DB_HOST', 'localhost'),
        'port'     => env('DB_PORT', 5432),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset'  => 'utf8',
        'prefix'   => env('DB_PREFIX', ''),
        'schema'   => 'public',
        'options'  => array(
                        "sslmode" => "require",
                        "sslrootcert" => "config/amazon-rds-ca-cert.pem"
                    )
    ],
...

Also check out this post for MySQL options parameters, https://laracasts.com/discuss/channels/requests/laravel-to-mysql-over-ssl

jefkine's avatar

Also note that the whole database.php file should be used. I tried using it partially and it had errors. See the full settings file below


    return array(

        /*
        |--------------------------------------------------------------------------
        | PDO Fetch Style
        |--------------------------------------------------------------------------
        |
        | By default, database results will be returned as instances of the PHP
        | stdClass object; however, you may desire to retrieve records in an
        | array format for simplicity. Here you can tweak the fetch style.
        |
        */
        'fetch' => PDO::FETCH_CLASS,

        /*
        |--------------------------------------------------------------------------
        | Default Database Connection Name
        |--------------------------------------------------------------------------
        |
        | Here you may specify which of the database connections below you wish
        | to use as your default connection for all database work. Of course
        | you may use many connections at once using the Database library.
        |
        */
        'default' => 'mysql',

        /*
        |--------------------------------------------------------------------------
        | Database Connections
        |--------------------------------------------------------------------------
        |
        | Here are each of the database connections setup for your application.
        | Of course, examples of configuring each database platform that is
        | supported by Laravel is shown below to make development simple.
        |
        |
        | All database work in Laravel is done through the PHP PDO facilities
        | so make sure you have the driver for your particular database of
        | choice installed on your machine before you begin development.
        |
        */

        'connections' => array(

            'mysql' => array('connection' => env('DB_CONNECTION', 'mysql'),
                             'host'       => env('DB_HOST', 'localhost'),
                             'port'       => env('DB_PORT', '3306'),
                             'database'   => env('DB_DATABASE', 'homestead'),
                             'username'   => env('DB_USERNAME', 'homestead'),
                             'password'   => env('DB_PASSWORD', ''),
                             'charset'    => 'utf8',
                             'collation'  => 'utf8_unicode_ci',
                             'prefix'     => '',
                             'options'    => array(PDO::MYSQL_ATTR_SSL_KEY  => '/var/www/certs/client-key.pem',
                                                   PDO::MYSQL_ATTR_SSL_CERT => '/var/www/certs/client-cert.pem',
                                                   PDO::MYSQL_ATTR_SSL_CA   => '/var/www/certs/ca.pem'),
                            ),

        ),
        
        /*
        |--------------------------------------------------------------------------
        | Migration Repository Table
        |--------------------------------------------------------------------------
        |
        | This table keeps track of all the migrations that have already run for
        | your application. Using this information, we can determine which of
        | the migrations on disk haven't actually been run in the database.
        |
        */
        'migrations' => 'migrations',

        /*
        |--------------------------------------------------------------------------
        | Redis Databases
        |--------------------------------------------------------------------------
        |
        | Redis is an open source, fast, and advanced key-value store that also
        | provides a richer set of commands than a typical key-value systems
        | such as APC or Memcached. Laravel makes it easy to dig right in.
        |
        */
        'redis' => array(
            'cluster' => false,
            'default' => array(
                'host'     => '127.0.0.1',
                'port'     => 6379,
                'database' => 0,
            ),
        ),

    ); 

1 like

Please or to participate in this conversation.