In my laboratory I use rundeck to schedule the execution of my scripts, and rundeck uses mysql 8 as a database, but recently rundeck cannot start due to the following error: "java.sql.SQLTransientConnectionException: Could not connect to address=(host=localhost)(port=3306)(type=master) : RSA public key is not available client side (option serverRsaPublicKeyFile not set)"
However, I have already made the settings in both rundeck and mysql so as not to request SSL for the connection.
MYSQL:
SHOW VARIABLES LIKE 'require_secure_transport';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| require_secure_transport | OFF |
+--------------------------+-------+
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'ssl%';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_fips_mode | OFF |
| ssl_key | |
| ssl_session_cache_mode | ON |
| ssl_session_cache_timeout | 300 |
+---------------------------+-------+
10 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE '%ssl';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | **DISABLED **|
| have_ssl | **DISABLED **|
+---------------+----------+
2 rows in set (0.00 sec)
RUNDECK:
dataSource.url=jdbc:mysql://localhost/rundeck?autoReconnect=true&useSSL=false
Any ideas to fix it?
Add the following param in your datasource string: allowPublicKeyRetrieval=true
Like this:
dataSource.url=jdbc:mariadb://mysql/rundeck?autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
Additionally, if you're using a recent version of Rundeck, the MariaDB jdbc driver is the default driver for MySQL and MariaDB backends.
Check this example.