Non-blocking MariaDB and MySQL client.
MariaDB and MySQL client, 100% Java, compatible with Java8+, apache 2.0 licensed.
- Driver permits ed25519, PAM authentication that comes with MariaDB.
- use MariaDB 10.5 returning fonction to permit Statement.returnGeneratedValues
Driver follow R2DBC 0.8.1 specifications
The MariaDB Connector is available through maven using :
<dependency>
<groupId>org.mariadb</groupId>
<artifactId>r2dbc-mariadb</artifactId>
<version>0.8.1-alpha1</version>
</dependency>
Factory can be created using ConnectionFactory or using connection URL.
Using builder
MariadbConnectionConfiguration conf = MariadbConnectionConfiguration.builder()
.host("localhost")
.port(3306)
.username("myUser")
.password("MySuperPassword")
.database("db")
.build();
MariadbConnectionFactory factory = new MariadbConnectionFactory(conf);
//OR
ConnectionFactory factory = ConnectionFactories.get("r2dbc:mariadb://user:password@host:3306/myDB?option1=value");
Basic example:
MariadbConnectionConfiguration conf = MariadbConnectionConfiguration.builder()
.host("localhost")
.port(3306)
.username("myUser")
.password("MySuperPassword")
.database("db")
.build();
MariadbConnectionFactory factory = new MariadbConnectionFactory(conf);
MariadbConnection connection = factory.create().block();
connection.createStatement("SELECT * FROM myTable")
.execute()
.flatMap(r -> r.map((row, metadata) -> {
return "value=" + row.get(0, String.class);
}));
connection.close().subscribe();
option | description | type | default |
---|---|---|---|
username |
User to access database. | string | |
password |
User password. | string | |
host |
IP address or DNS of the database server. Not used when using option socketPath . |
string | "localhost" |
port |
Database server port number. Not used when using option socketPath |
integer | 3306 |
database |
Default database to use when establishing the connection. | string | |
connectTimeout |
Sets the connection timeout | Duration | 10s |
socket |
Permits connections to the database through the Unix domain socket for faster connection whe server is local. | string | |
allowMultiQueries |
Allows you to issue several SQL statements in a single call. (That is, INSERT INTO a VALUES('b'); INSERT INTO c VALUES('d'); ). This may be a security risk as it allows for SQL Injection attacks. |
boolean | false |
connectionAttributes |
When performance_schema is active, permit to send server some client information. Those information can be retrieved on server within tables performance_schema.session_connect_attrs and performance_schema.session_account_connect_attrs. This can permit from server an identification of client/application per connection |
Map<String,String> | |
sessionVariables |
Permits to set session variables upon successful connection | Map<String,String> | |
tlsProtocol |
Force TLS/SSL protocol to a specific set of TLS versions (example "TLSv1.2", "TLSv1.3"). | List | java default |
serverSslCert |
Permits providing server's certificate in DER form, or server's CA certificate. This permits a self-signed certificate to be trusted. Can be used in one of 3 forms :
|
String | |
clientSslCert |
Permits providing client's certificate in DER form (use only for mutual authentication). Can be used in one of 3 forms :
|
String | |
clientSslKey |
client private key path(for mutual authentication) | String | |
clientSslPassword |
client private key password | charsequence | |
sslMode |
ssl requirement. Possible value are
|
SslMode | DISABLED |
serverRsaPublicKeyFile |
only for MySQL server Server RSA public key, for SHA256 authentication |
String | |
allowPublicKeyRetrieval |
only for MySQL server Permit retrieved Server RSA public key from server. This can create a security issue |
boolean |
To file an issue or follow the development, see JIRA.