Connect external Database to Laravel Vapor

972 views Asked by At

I need a little help connecting an external MySQL database to Laravel Vapor. The database is located on a Hetzner Server and it seems like there is a failure using a tls encrypted connection:

==> Executing Function...

Status Code: 1

Output:

In Connection.php line 712:
                                                               
  SQLSTATE[HY000] [2002]  (SQL: SELECT * FROM KURSE_planung )  
                                                               

In Exception.php line 18:
                          
  SQLSTATE[HY000] [2002]  
                          

In PDOConnection.php line 40:
                          
  SQLSTATE[HY000] [2002]  
                          

In PDOConnection.php line 40:
                                                                               
  PDO::__construct(): SSL operation failed with code 1. OpenSSL Error message  
  s:                                                                           
  error:1416F086:SSL routines:tls_process_server_certificate:certificate veri  
  fy failed

I already tried to disable SSL by using the following params in the database URL without any luck:

MYSQL_DATABASE_URL=mysql://username:[email protected]/databasename?charset=utf8mb4&sslmode=disabled&ssl-mode=disabled&useSSL=false

Does anyone know how to disable TLS when connecting to the database or what else I can do about it?

Edit:

I managed to connect to the database. My Hoster Hetzner provides a certificate which needs to be provided to the connection configuration in database.php:

        'mysql' => [
            'driver' => 'mysql',
            'url' => env('MYSQL_DATABASE_URL'),
            'host' => env('MYSQL_DB_HOST', '127.0.0.1'),
            'port' => env('MYSQL_DB_PORT', '3306'),
            'database' => env('MYSQL_DB_DATABASE', 'forge'),
            'username' => env('MYSQL_DB_USERNAME', 'forge'),
            'password' => env('MYSQL_DB_PASSWORD', ''),
            'unix_socket' => env('MYSQL_DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => base_path(env('MYSQL_ATTR_SSL_CA')),
            ]) : [],
        ],

Then in the .env file one needs to set the correct path to the certificate using MYSQL_ATTR_SSL_CA.

One question remains: does anyone know how to disable SSL for MySQL on Vapor?

Best regards

Clemens

1

There are 1 answers

0
Dimas Wibowo On

I don't know if this might help. But In my case Laravel Vapor was hosted with RedHatOS, then I defined the env with the following:

MYSQL_ATTR_SSL_CA=/etc/pki/tls/certs/ca-bundle.crt

In my case, the database is hosted on planetscale this configration a specified on the documentation