Struct mysql_async::Opts
source · pub struct Opts { /* private fields */ }
Expand description
Mysql connection options.
Build one with OptsBuilder
.
Implementations§
source§impl Opts
impl Opts
pub fn from_url(url: &str) -> Result<Opts, UrlError>
sourcepub fn ip_or_hostname(&self) -> &str
pub fn ip_or_hostname(&self) -> &str
Address of mysql server (defaults to 127.0.0.1
). Hostnames should also work.
sourcepub fn resolved_ips(&self) -> &Option<Vec<IpAddr>>
pub fn resolved_ips(&self) -> &Option<Vec<IpAddr>>
The resolved IPs for the mysql server, if provided.
sourcepub fn user(&self) -> Option<&str>
pub fn user(&self) -> Option<&str>
User (defaults to None
).
§Connection URL
Can be defined in connection URL. E.g.
let opts = Opts::from_url("mysql://user@localhost/database_name")?;
assert_eq!(opts.user(), Some("user"));
sourcepub fn pass(&self) -> Option<&str>
pub fn pass(&self) -> Option<&str>
Password (defaults to None
).
§Connection URL
Can be defined in connection URL. E.g.
let opts = Opts::from_url("mysql://user:pass%20word@localhost/database_name")?;
assert_eq!(opts.pass(), Some("pass word"));
sourcepub fn db_name(&self) -> Option<&str>
pub fn db_name(&self) -> Option<&str>
Database name (defaults to None
).
§Connection URL
Database name can be defined in connection URL. E.g.
let opts = Opts::from_url("mysql://localhost/database_name")?;
assert_eq!(opts.db_name(), Some("database_name"));
sourcepub fn setup(&self) -> &[String]
pub fn setup(&self) -> &[String]
Commands to execute on new connection and every time
Conn::reset
or Conn::change_user
is invoked.
sourcepub fn tcp_keepalive(&self) -> Option<u32>
pub fn tcp_keepalive(&self) -> Option<u32>
TCP keep alive timeout in milliseconds (defaults to None
).
§Connection URL
You can use tcp_keepalive
URL parameter to set this value (in milliseconds). E.g.
let opts = Opts::from_url("mysql://localhost/db?tcp_keepalive=10000")?;
assert_eq!(opts.tcp_keepalive(), Some(10_000));
sourcepub fn tcp_nodelay(&self) -> bool
pub fn tcp_nodelay(&self) -> bool
Set the TCP_NODELAY
option for the mysql connection (defaults to true
).
Setting this option to false re-enables Nagle’s algorithm, which can cause unusually high latency (~40ms) but may increase maximum throughput. See #132.
§Connection URL
You can use tcp_nodelay
URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?tcp_nodelay=false")?;
assert_eq!(opts.tcp_nodelay(), false);
sourcepub fn local_infile_handler(&self) -> Option<Arc<dyn GlobalHandler>>
pub fn local_infile_handler(&self) -> Option<Arc<dyn GlobalHandler>>
Handler for local infile requests (defaults to None
).
sourcepub fn pool_opts(&self) -> &PoolOpts
pub fn pool_opts(&self) -> &PoolOpts
Connection pool options (defaults to Default::default
).
sourcepub fn conn_ttl(&self) -> Option<Duration>
pub fn conn_ttl(&self) -> Option<Duration>
Pool will close connection if time since last IO exceeds this number of seconds
(defaults to wait_timeout
. None
to reset to default).
§Connection URL
You can use conn_ttl
URL parameter to set this value (in seconds). E.g.
let opts = Opts::from_url("mysql://localhost/db?conn_ttl=360")?;
assert_eq!(opts.conn_ttl(), Some(Duration::from_secs(360)));
sourcepub fn abs_conn_ttl(&self) -> Option<Duration>
pub fn abs_conn_ttl(&self) -> Option<Duration>
The pool will close a connection when this absolute TTL has elapsed. Disabled by default.
Enables forced recycling and migration of connections in a guaranteed timeframe. This TTL bypasses pool constraints and an idle pool can go below the min size.
§Connection URL
You can use abs_conn_ttl
URL parameter to set this value (in seconds). E.g.
let opts = Opts::from_url("mysql://localhost/db?abs_conn_ttl=86400")?;
assert_eq!(opts.abs_conn_ttl(), Some(Duration::from_secs(24 * 60 * 60)));
sourcepub fn abs_conn_ttl_jitter(&self) -> Option<Duration>
pub fn abs_conn_ttl_jitter(&self) -> Option<Duration>
Upper bound of a random value added to the absolute TTL, if enabled. Disabled by default.
Should be used to prevent connections from closing at the same time.
§Connection URL
You can use abs_conn_ttl_jitter
URL parameter to set this value (in seconds). E.g.
let opts = Opts::from_url("mysql://localhost/db?abs_conn_ttl=7200&abs_conn_ttl_jitter=3600")?;
assert_eq!(opts.abs_conn_ttl_jitter(), Some(Duration::from_secs(60 * 60)));
sourcepub fn stmt_cache_size(&self) -> usize
pub fn stmt_cache_size(&self) -> usize
Number of prepared statements cached on the client side (per connection). Defaults to
DEFAULT_STMT_CACHE_SIZE
.
Call with None
to reset to default. Set to 0
to disable statement cache.
§Caveats
If statement cache is disabled (stmt_cache_size
is 0
), then you must close statements
manually.
§Connection URL
You can use stmt_cache_size
URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?stmt_cache_size=128")?;
assert_eq!(opts.stmt_cache_size(), 128);
sourcepub fn ssl_opts(&self) -> Option<&SslOpts>
pub fn ssl_opts(&self) -> Option<&SslOpts>
Driver will require SSL connection if this opts isn’t None
(defaults to None
).
§Connection URL parameters
Note that for securty reasons:
- CA and IDENTITY verifications are opt-out
- there is no way to give an idenity or root certs via query URL
URL Parameters:
require_ssl: bool
(defaults tofalse
) – requires SSL with defaultSslOpts
verify_ca: bool
(defaults totrue
) – requires server Certificate Authority (CA) certificate validation against the configured CA certificates. Makes no sence ifrequire_ssl
equalsfalse
.verify_identity: bool
(defaults totrue
) – perform host name identity verification by checking the host name the client uses for connecting to the server against the identity in the certificate that the server sends to the client. Makes no sence ifrequire_ssl
equalsfalse
.
sourcepub fn prefer_socket(&self) -> bool
pub fn prefer_socket(&self) -> bool
Prefer socket connection (defaults to true
temporary false
on Windows platform).
Will reconnect via socket (or named pipe on Windows) after TCP connection to 127.0.0.1
if true
.
Will fall back to TCP on error. Use socket
option to enforce socket connection.
§Note
Library will query the @@socket
server variable to get socket address,
and this address may be incorrect in some cases (e.g. docker).
§Connection URL
You can use prefer_socket
URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?prefer_socket=false")?;
assert_eq!(opts.prefer_socket(), false);
sourcepub fn socket(&self) -> Option<&str>
pub fn socket(&self) -> Option<&str>
Path to unix socket (or named pipe on Windows) (defaults to None
).
§Connection URL
You can use socket
URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?socket=%2Fpath%2Fto%2Fsocket")?;
assert_eq!(opts.socket(), Some("/path/to/socket"));
sourcepub fn compression(&self) -> Option<Compression>
pub fn compression(&self) -> Option<Compression>
If not None
, then client will ask for compression if server supports it
(defaults to None
).
§Connection URL
You can use compression
URL parameter to set this value:
fast
- for compression level 1;best
- for compression level 9;on
,true
- for default compression level;0
, …,9
.
Note that compression level defined here will affect only outgoing packets.
sourcepub fn max_allowed_packet(&self) -> Option<usize>
pub fn max_allowed_packet(&self) -> Option<usize>
Client side max_allowed_packet
value (defaults to None
).
By default Conn
will query this value from the server. One can avoid this step
by explicitly specifying it. Server side default is 4MB.
Available in connection URL via max_allowed_packet
parameter.
sourcepub fn wait_timeout(&self) -> Option<usize>
pub fn wait_timeout(&self) -> Option<usize>
Client side wait_timeout
value (defaults to None
).
By default Conn
will query this value from the server. One can avoid this step
by explicitly specifying it. Server side default is 28800.
Available in connection URL via wait_timeout
parameter.
sourcepub fn secure_auth(&self) -> bool
pub fn secure_auth(&self) -> bool
Disables mysql_old_password
plugin (defaults to true
).
Available via secure_auth
connection url parameter.
sourcepub fn client_found_rows(&self) -> bool
pub fn client_found_rows(&self) -> bool
Returns true
if CLIENT_FOUND_ROWS
capability is enabled (defaults to false
).
CLIENT_FOUND_ROWS
changes the behavior of the affected count returned for writes
(UPDATE/INSERT etc). It makes MySQL return the FOUND rows instead of the AFFECTED rows.
§Connection URL
Use client_found_rows
URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?client_found_rows=true")?;
assert!(opts.client_found_rows());
sourcepub fn enable_cleartext_plugin(&self) -> bool
pub fn enable_cleartext_plugin(&self) -> bool
Returns true
if mysql_clear_password
plugin support is enabled (defaults to false
).
mysql_clear_password
enables client to send passwords to the server as cleartext, without
hashing or encryption (consult MySql documentation for more info).
§Security Notes
Sending passwords as cleartext may be a security problem in some configurations. Please consider using TLS or encrypted tunnels for server connection.
§Connection URL
Use enable_cleartext_plugin
URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?enable_cleartext_plugin=true")?;
assert!(opts.enable_cleartext_plugin());
Trait Implementations§
source§impl From<OptsBuilder> for Opts
impl From<OptsBuilder> for Opts
source§fn from(builder: OptsBuilder) -> Opts
fn from(builder: OptsBuilder) -> Opts
impl Eq for Opts
impl StructuralPartialEq for Opts
Auto Trait Implementations§
impl Freeze for Opts
impl !RefUnwindSafe for Opts
impl Send for Opts
impl Sync for Opts
impl Unpin for Opts
impl !UnwindSafe for Opts
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,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.