Struct sqlx_mysql::MySqlConnectOptions
source · pub struct MySqlConnectOptions { /* private fields */ }
Expand description
Options and flags which can be used to configure a MySQL connection.
A value of MySqlConnectOptions
can be parsed from a connection URL,
as described by MySQL.
The generic format of the connection URL:
mysql://[host][/database][?properties]
This type also implements FromStr
so you can parse it from a string
containing a connection URL and then further adjust options if necessary (see example below).
Properties
Parameter | Default | Description |
---|---|---|
ssl-mode | PREFERRED | Determines whether or with what priority a secure SSL TCP/IP connection will be negotiated. See MySqlSslMode . |
ssl-ca | None | Sets the name of a file containing a list of trusted SSL Certificate Authorities. |
statement-cache-capacity | 100 | The maximum number of prepared statements stored in the cache. Set to 0 to disable. |
socket | None | Path to the unix domain socket, which will be used instead of TCP if set. |
Example
use sqlx::{Connection, ConnectOptions};
use sqlx::mysql::{MySqlConnectOptions, MySqlConnection, MySqlPool, MySqlSslMode};
// URL connection string
let conn = MySqlConnection::connect("mysql://root:password@localhost/db").await?;
// Manually-constructed options
let conn = MySqlConnectOptions::new()
.host("localhost")
.username("root")
.password("password")
.database("db")
.connect().await?;
// Modifying options parsed from a string
let mut opts: MySqlConnectOptions = "mysql://root:password@localhost/db".parse()?;
// Change the log verbosity level for queries.
// Information about SQL queries is logged at `DEBUG` level by default.
opts.log_statements(log::LevelFilter::Trace);
let pool = MySqlPool::connect_with(&opts).await?;
Implementations§
source§impl MySqlConnectOptions
impl MySqlConnectOptions
sourcepub fn host(self, host: &str) -> Self
pub fn host(self, host: &str) -> Self
Sets the name of the host to connect to.
The default behavior when the host is not specified, is to connect to localhost.
sourcepub fn port(self, port: u16) -> Self
pub fn port(self, port: u16) -> Self
Sets the port to connect to at the server host.
The default port for MySQL is 3306
.
sourcepub fn socket(self, path: impl AsRef<Path>) -> Self
pub fn socket(self, path: impl AsRef<Path>) -> Self
Pass a path to a Unix socket. This changes the connection stream from TCP to UDS.
By default set to None
.
sourcepub fn get_database(&self) -> Option<&str>
pub fn get_database(&self) -> Option<&str>
Get the current database name.
Example
let options = MySqlConnectOptions::new()
.database("mysqldb");
assert!(options.get_database().is_some());
sourcepub fn ssl_mode(self, mode: MySqlSslMode) -> Self
pub fn ssl_mode(self, mode: MySqlSslMode) -> Self
Sets whether or with what priority a secure SSL TCP/IP connection will be negotiated with the server.
By default, the SSL mode is Preferred
, and the client will
first attempt an SSL connection but fallback to a non-SSL connection on failure.
Example
let options = MySqlConnectOptions::new()
.ssl_mode(MySqlSslMode::Required);
sourcepub fn ssl_ca(self, file_name: impl AsRef<Path>) -> Self
pub fn ssl_ca(self, file_name: impl AsRef<Path>) -> Self
Sets the name of a file containing a list of trusted SSL Certificate Authorities.
Example
let options = MySqlConnectOptions::new()
.ssl_mode(MySqlSslMode::VerifyCa)
.ssl_ca("path/to/ca.crt");
sourcepub fn ssl_ca_from_pem(self, pem_certificate: Vec<u8>) -> Self
pub fn ssl_ca_from_pem(self, pem_certificate: Vec<u8>) -> Self
Sets PEM encoded list of trusted SSL Certificate Authorities.
Example
let options = MySqlConnectOptions::new()
.ssl_mode(MySqlSslMode::VerifyCa)
.ssl_ca_from_pem(vec![]);
sourcepub fn ssl_client_cert(self, cert: impl AsRef<Path>) -> Self
pub fn ssl_client_cert(self, cert: impl AsRef<Path>) -> Self
Sets the name of a file containing SSL client certificate.
Example
let options = MySqlConnectOptions::new()
.ssl_mode(MySqlSslMode::VerifyCa)
.ssl_client_cert("path/to/client.crt");
sourcepub fn ssl_client_cert_from_pem(self, cert: impl AsRef<[u8]>) -> Self
pub fn ssl_client_cert_from_pem(self, cert: impl AsRef<[u8]>) -> Self
Sets the SSL client certificate as a PEM-encoded byte slice.
This should be an ASCII-encoded blob that starts with -----BEGIN CERTIFICATE-----
.
Example
Note: embedding SSL certificates and keys in the binary is not advised. This is for illustration purposes only.
const CERT: &[u8] = b"\
-----BEGIN CERTIFICATE-----
<Certificate data here.>
-----END CERTIFICATE-----";
let options = MySqlConnectOptions::new()
.ssl_mode(MySqlSslMode::VerifyCa)
.ssl_client_cert_from_pem(CERT);
sourcepub fn ssl_client_key(self, key: impl AsRef<Path>) -> Self
pub fn ssl_client_key(self, key: impl AsRef<Path>) -> Self
Sets the name of a file containing SSL client key.
Example
let options = MySqlConnectOptions::new()
.ssl_mode(MySqlSslMode::VerifyCa)
.ssl_client_key("path/to/client.key");
sourcepub fn ssl_client_key_from_pem(self, key: impl AsRef<[u8]>) -> Self
pub fn ssl_client_key_from_pem(self, key: impl AsRef<[u8]>) -> Self
Sets the SSL client key as a PEM-encoded byte slice.
This should be an ASCII-encoded blob that starts with -----BEGIN PRIVATE KEY-----
.
Example
Note: embedding SSL certificates and keys in the binary is not advised. This is for illustration purposes only.
const KEY: &[u8] = b"\
-----BEGIN PRIVATE KEY-----
<Private key data here.>
-----END PRIVATE KEY-----";
let options = MySqlConnectOptions::new()
.ssl_mode(MySqlSslMode::VerifyCa)
.ssl_client_key_from_pem(KEY);
sourcepub fn statement_cache_capacity(self, capacity: usize) -> Self
pub fn statement_cache_capacity(self, capacity: usize) -> Self
Sets the capacity of the connection’s statement cache in a number of stored distinct statements. Caching is handled using LRU, meaning when the amount of queries hits the defined limit, the oldest statement will get dropped.
The default cache capacity is 100 statements.
sourcepub fn charset(self, charset: &str) -> Self
pub fn charset(self, charset: &str) -> Self
Sets the character set for the connection.
The default character set is utf8mb4
. This is supported from MySQL 5.5.3.
If you need to connect to an older version, we recommend you to change this to utf8
.
sourcepub fn collation(self, collation: &str) -> Self
pub fn collation(self, collation: &str) -> Self
Sets the collation for the connection.
The default collation is derived from the charset
. Normally, you should only have to set
the charset
.
sourcepub fn pipes_as_concat(self, flag_val: bool) -> Self
pub fn pipes_as_concat(self, flag_val: bool) -> Self
Sets the flag that enables or disables the PIPES_AS_CONCAT
connection setting
The default value is set to true, but some MySql databases such as PlanetScale error out with this connection setting so it needs to be set false in such cases.
sourcepub fn enable_cleartext_plugin(self, flag_val: bool) -> Self
pub fn enable_cleartext_plugin(self, flag_val: bool) -> Self
Enables mysql_clear_password plugin support.
Security Note: Sending passwords as cleartext may be a security problem in some configurations. Without additional defensive configuration like ssl-mode=VERIFY_IDENTITY, an attacker can compromise a router and trick the application into divulging its credentials.
It is strongly recommended to set .ssl_mode
to Required
,
VerifyCa
, or VerifyIdentity
when enabling cleartext plugin.
Trait Implementations§
source§impl Clone for MySqlConnectOptions
impl Clone for MySqlConnectOptions
source§fn clone(&self) -> MySqlConnectOptions
fn clone(&self) -> MySqlConnectOptions
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl ConnectOptions for MySqlConnectOptions
impl ConnectOptions for MySqlConnectOptions
type Connection = MySqlConnection
source§fn connect(&self) -> BoxFuture<'_, Result<Self::Connection, Error>>where
Self::Connection: Sized,
fn connect(&self) -> BoxFuture<'_, Result<Self::Connection, Error>>where
Self::Connection: Sized,
self
.source§fn log_statements(self, level: LevelFilter) -> Self
fn log_statements(self, level: LevelFilter) -> Self
level
source§fn log_slow_statements(self, level: LevelFilter, duration: Duration) -> Self
fn log_slow_statements(self, level: LevelFilter, duration: Duration) -> Self
duration
at the specified level
.