Struct MySqlConnectOptions   
pub struct MySqlConnectOptions {Show 19 fields
    pub(crate) host: String,
    pub(crate) port: u16,
    pub(crate) socket: Option<PathBuf>,
    pub(crate) username: String,
    pub(crate) password: Option<String>,
    pub(crate) database: Option<String>,
    pub(crate) ssl_mode: MySqlSslMode,
    pub(crate) ssl_ca: Option<CertificateInput>,
    pub(crate) ssl_client_cert: Option<CertificateInput>,
    pub(crate) ssl_client_key: Option<CertificateInput>,
    pub(crate) statement_cache_capacity: usize,
    pub(crate) charset: String,
    pub(crate) collation: Option<String>,
    pub(crate) log_settings: LogSettings,
    pub(crate) pipes_as_concat: bool,
    pub(crate) enable_cleartext_plugin: bool,
    pub(crate) no_engine_substitution: bool,
    pub(crate) timezone: Option<String>,
    pub(crate) set_names: bool,
}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 = opts.log_statements(log::LevelFilter::Trace);
let pool = MySqlPool::connect_with(opts).await?;Fields§
§host: String§port: u16§socket: Option<PathBuf>§username: String§password: Option<String>§database: Option<String>§ssl_mode: MySqlSslMode§ssl_ca: Option<CertificateInput>§ssl_client_cert: Option<CertificateInput>§ssl_client_key: Option<CertificateInput>§statement_cache_capacity: usize§charset: String§collation: Option<String>§log_settings: LogSettings§pipes_as_concat: bool§enable_cleartext_plugin: bool§no_engine_substitution: bool§timezone: Option<String>§set_names: boolImplementations§
§impl MySqlConnectOptions
 
impl MySqlConnectOptions
pub fn new() -> MySqlConnectOptions
pub fn new() -> MySqlConnectOptions
Creates a new, default set of options ready for configuration
pub fn host(self, host: &str) -> MySqlConnectOptions
pub fn host(self, host: &str) -> MySqlConnectOptions
Sets the name of the host to connect to.
The default behavior when the host is not specified, is to connect to localhost.
pub fn port(self, port: u16) -> MySqlConnectOptions
pub fn port(self, port: u16) -> MySqlConnectOptions
Sets the port to connect to at the server host.
The default port for MySQL is 3306.
pub fn socket(self, path: impl AsRef<Path>) -> MySqlConnectOptions
pub fn socket(self, path: impl AsRef<Path>) -> MySqlConnectOptions
Pass a path to a Unix socket. This changes the connection stream from TCP to UDS.
By default set to None.
pub fn username(self, username: &str) -> MySqlConnectOptions
pub fn username(self, username: &str) -> MySqlConnectOptions
Sets the username to connect as.
pub fn password(self, password: &str) -> MySqlConnectOptions
pub fn password(self, password: &str) -> MySqlConnectOptions
Sets the password to connect with.
pub fn database(self, database: &str) -> MySqlConnectOptions
pub fn database(self, database: &str) -> MySqlConnectOptions
Sets the database name.
pub fn ssl_mode(self, mode: MySqlSslMode) -> MySqlConnectOptions
pub fn ssl_mode(self, mode: MySqlSslMode) -> MySqlConnectOptions
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);pub fn ssl_ca(self, file_name: impl AsRef<Path>) -> MySqlConnectOptions
pub fn ssl_ca(self, file_name: impl AsRef<Path>) -> MySqlConnectOptions
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");pub fn ssl_ca_from_pem(self, pem_certificate: Vec<u8>) -> MySqlConnectOptions
pub fn ssl_ca_from_pem(self, pem_certificate: Vec<u8>) -> MySqlConnectOptions
Sets PEM encoded list of trusted SSL Certificate Authorities.
§Example
let options = MySqlConnectOptions::new()
    .ssl_mode(MySqlSslMode::VerifyCa)
    .ssl_ca_from_pem(vec![]);pub fn ssl_client_cert(self, cert: impl AsRef<Path>) -> MySqlConnectOptions
pub fn ssl_client_cert(self, cert: impl AsRef<Path>) -> MySqlConnectOptions
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");pub fn ssl_client_cert_from_pem(
    self,
    cert: impl AsRef<[u8]>,
) -> MySqlConnectOptions
pub fn ssl_client_cert_from_pem( self, cert: impl AsRef<[u8]>, ) -> MySqlConnectOptions
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);pub fn ssl_client_key(self, key: impl AsRef<Path>) -> MySqlConnectOptions
pub fn ssl_client_key(self, key: impl AsRef<Path>) -> MySqlConnectOptions
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");pub fn ssl_client_key_from_pem(
    self,
    key: impl AsRef<[u8]>,
) -> MySqlConnectOptions
pub fn ssl_client_key_from_pem( self, key: impl AsRef<[u8]>, ) -> MySqlConnectOptions
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);pub fn statement_cache_capacity(self, capacity: usize) -> MySqlConnectOptions
pub fn statement_cache_capacity(self, capacity: usize) -> MySqlConnectOptions
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.
pub fn charset(self, charset: &str) -> MySqlConnectOptions
pub fn charset(self, charset: &str) -> MySqlConnectOptions
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.
pub fn collation(self, collation: &str) -> MySqlConnectOptions
pub fn collation(self, collation: &str) -> MySqlConnectOptions
Sets the collation for the connection.
The default collation is derived from the charset. Normally, you should only have to set
the charset.
pub fn pipes_as_concat(self, flag_val: bool) -> MySqlConnectOptions
pub fn pipes_as_concat(self, flag_val: bool) -> MySqlConnectOptions
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.
pub fn enable_cleartext_plugin(self, flag_val: bool) -> MySqlConnectOptions
pub fn enable_cleartext_plugin(self, flag_val: bool) -> MySqlConnectOptions
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.
pub fn no_engine_subsitution(self, flag_val: bool) -> MySqlConnectOptions
pub fn no_engine_substitution(self, flag_val: bool) -> MySqlConnectOptions
pub fn no_engine_substitution(self, flag_val: bool) -> MySqlConnectOptions
Flag that enables or disables the NO_ENGINE_SUBSTITUTION sql_mode setting after
connection.
If not set, if the available storage engine specified by a CREATE TABLE is not available,
a warning is given and the default storage engine is used instead.
By default, this is true (NO_ENGINE_SUBSTITUTION is passed, forbidding engine
substitution).
pub fn timezone(self, value: impl Into<Option<String>>) -> MySqlConnectOptions
pub fn timezone(self, value: impl Into<Option<String>>) -> MySqlConnectOptions
If Some, sets the time_zone option to the given string after connecting to the database.
If None, no time_zone parameter is sent; the server timezone will be used instead.
Defaults to Some(String::from("+00:00")) to ensure all timestamps are in UTC.
§Warning
Changing this setting from its default will apply an unexpected skew to any
time::OffsetDateTime or chrono::DateTime<Utc> value, whether passed as a parameter or
decoded as a result. TIMESTAMP values are not encoded with their UTC offset in the MySQL
protocol, so encoding and decoding of these types assumes the server timezone is always
UTC.
If you are changing this option, ensure your application only uses
time::PrimitiveDateTime or chrono::NaiveDateTime and that it does not assume these
timestamps can be placed on a real timeline without applying the proper offset.
pub fn set_names(self, flag_val: bool) -> MySqlConnectOptions
pub fn set_names(self, flag_val: bool) -> MySqlConnectOptions
If enabled, SET NAMES '{charset}' COLLATE '{collation}' is passed with the values of
[.charset()] and [.collation()] after connecting to the database.
This ensures the connection uses the specified character set and collation.
Enabled by default.
§Warning
If this is disabled and the default charset is not binary-compatible with UTF-8, query strings, column names and string values will likely not decode (or encode) correctly, which may result in unexpected errors or garbage outputs at runtime.
For proper functioning, you must ensure the server is using a binary-compatible charset, such as ASCII or Latin-1 (ISO 8859-1), and that you do not pass any strings containing codepoints not supported by said charset.
Instead of disabling this, you may also consider setting [.charset()] to a charset that
is supported by your MySQL or MariaDB server version and compatible with UTF-8.
§impl MySqlConnectOptions
 
impl MySqlConnectOptions
pub fn get_host(&self) -> &str
pub fn get_host(&self) -> &str
Get the current host.
§Example
let options = MySqlConnectOptions::new()
    .host("127.0.0.1");
assert_eq!(options.get_host(), "127.0.0.1");pub fn get_port(&self) -> u16
pub fn get_port(&self) -> u16
Get the server’s port.
§Example
let options = MySqlConnectOptions::new()
    .port(6543);
assert_eq!(options.get_port(), 6543);pub fn get_socket(&self) -> Option<&PathBuf>
pub fn get_socket(&self) -> Option<&PathBuf>
Get the socket path.
§Example
let options = MySqlConnectOptions::new()
    .socket("/tmp");
assert!(options.get_socket().is_some());pub fn get_username(&self) -> &str
pub fn get_username(&self) -> &str
Get the server’s port.
§Example
let options = MySqlConnectOptions::new()
    .username("foo");
assert_eq!(options.get_username(), "foo");pub fn get_database(&self) -> Option<&str>
pub fn get_database(&self) -> Option<&str>
Get the current database name.
§Example
let options = MySqlConnectOptions::new()
    .database("postgres");
assert!(options.get_database().is_some());pub fn get_ssl_mode(&self) -> MySqlSslMode
pub fn get_ssl_mode(&self) -> MySqlSslMode
Get the SSL mode.
§Example
let options = MySqlConnectOptions::new();
assert!(matches!(options.get_ssl_mode(), MySqlSslMode::Preferred));pub fn get_charset(&self) -> &str
pub fn get_charset(&self) -> &str
Get the server charset.
§Example
let options = MySqlConnectOptions::new();
assert_eq!(options.get_charset(), "utf8mb4");pub fn get_collation(&self) -> Option<&str>
pub fn get_collation(&self) -> Option<&str>
Get the server collation.
§Example
let options = MySqlConnectOptions::new()
    .collation("collation");
assert!(options.get_collation().is_some());Trait Implementations§
§impl Clone for MySqlConnectOptions
 
impl Clone for MySqlConnectOptions
§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 more§impl ConnectOptions for MySqlConnectOptions
 
impl ConnectOptions for MySqlConnectOptions
type Connection = MySqlConnection
§fn to_url_lossy(&self) -> Url
 
fn to_url_lossy(&self) -> Url
ConnectOptions. Read more§fn connect(
    &self,
) -> Pin<Box<dyn Future<Output = Result<<MySqlConnectOptions as ConnectOptions>::Connection, Error>> + Send + '_>>
 
fn connect( &self, ) -> Pin<Box<dyn Future<Output = Result<<MySqlConnectOptions as ConnectOptions>::Connection, Error>> + Send + '_>>
self.§fn log_statements(self, level: LevelFilter) -> MySqlConnectOptions
 
fn log_statements(self, level: LevelFilter) -> MySqlConnectOptions
level§fn log_slow_statements(
    self,
    level: LevelFilter,
    duration: Duration,
) -> MySqlConnectOptions
 
fn log_slow_statements( self, level: LevelFilter, duration: Duration, ) -> MySqlConnectOptions
duration
at the specified level.§fn disable_statement_logging(self) -> Self
 
fn disable_statement_logging(self) -> Self
§impl Debug for MySqlConnectOptions
 
impl Debug for MySqlConnectOptions
§impl Default for MySqlConnectOptions
 
impl Default for MySqlConnectOptions
§fn default() -> MySqlConnectOptions
 
fn default() -> MySqlConnectOptions
§impl FromStr for MySqlConnectOptions
 
impl FromStr for MySqlConnectOptions
§impl<'a> TryFrom<&'a AnyConnectOptions> for MySqlConnectOptions
 
impl<'a> TryFrom<&'a AnyConnectOptions> for MySqlConnectOptions
§fn try_from(
    any_opts: &'a AnyConnectOptions,
) -> Result<MySqlConnectOptions, <MySqlConnectOptions as TryFrom<&'a AnyConnectOptions>>::Error>
 
fn try_from( any_opts: &'a AnyConnectOptions, ) -> Result<MySqlConnectOptions, <MySqlConnectOptions as TryFrom<&'a AnyConnectOptions>>::Error>
Auto Trait Implementations§
impl Freeze for MySqlConnectOptions
impl RefUnwindSafe for MySqlConnectOptions
impl Send for MySqlConnectOptions
impl Sync for MySqlConnectOptions
impl Unpin for MySqlConnectOptions
impl UnwindSafe for MySqlConnectOptions
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
§impl<T> Instrument for T
 
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
 
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
 
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
 
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more