Menu:
server-shutdown:: The Server Shutdown Process
*note 'mysqld': mysqld. is the MySQL server. The following discussion covers these MySQL server configuration topics:
Startup options that the server supports. You can specify these options on the command line, through configuration files, or both.
Server system variables. These variables reflect the current state and values of the startup options, some of which can be modified while the server is running.
Server status variables. These variables contain counters and statistics about runtime operation.
How to set the server SQL mode. This setting modifies certain aspects of SQL syntax and semantics, for example for compatibility with code from other database systems, or to control the error handling for particular situations.
How the server manages client connections.
Configuring and using IPv6 support.
Configuring and using time zone support.
Server-side help capabilities.
The server shutdown process. There are performance and reliability considerations depending on the type of table (transactional or nontransactional) and whether you use replication.
For listings of MySQL server variables and options that have been added, deprecated, or removed in MySQL 5.7, see *note added-deprecated-removed::.
Note:
Not all storage engines are supported by all MySQL server binaries and configurations. To find out how to determine which storage engines your MySQL server installation supports, see *note show-engines::.
File: manual.info.tmp, Node: server-configuration, Next: server-configuration-defaults, Prev: mysqld-server, Up: mysqld-server
The MySQL server, *note 'mysqld': mysqld, has many command options and system variables that can be set at startup to configure its operation. To determine the default command option and system variable values used by the server, execute this command:
$> mysqld --verbose --help
The command produces a list of all *note 'mysqld': mysqld. options and configurable system variables. Its output includes the default option and variable values and looks something like this:
abort-slave-event-count 0
allow-suspicious-udfs FALSE
archive ON
auto-increment-increment 1
auto-increment-offset 1
autocommit TRUE
automatic-sp-privileges TRUE
avoid-temporal-upgrade FALSE
back-log 80
basedir /home/jon/bin/mysql-5.7/
...
tmpdir /tmp
transaction-alloc-block-size 8192
transaction-isolation REPEATABLE-READ
transaction-prealloc-size 4096
transaction-read-only FALSE
transaction-write-set-extraction OFF
updatable-views-with-limit YES
validate-user-plugins TRUE
verbose TRUE
wait-timeout 28800
To see the current system variable values actually used by the server as it runs, connect to it and execute this statement:
mysql> SHOW VARIABLES;
To see some statistical and status indicators for a running server, execute this statement:
mysql> SHOW STATUS;
System variable and status information also is available using the *note 'mysqladmin': mysqladmin. command:
$> mysqladmin variables
$> mysqladmin extended-status
For a full description of all command options, system variables, and status variables, see these sections:
*note server-options::
*note server-system-variables::
*note server-status-variables::
More detailed monitoring information is available from the Performance Schema; see note performance-schema::. In addition, the MySQL 'sys' schema is a set of objects that provides convenient access to data collected by the Performance Schema; see note sys-schema::.
MySQL uses algorithms that are very scalable, so you can usually run with very little memory. However, normally better performance results from giving MySQL more memory.
When tuning a MySQL server, the two most important variables to configure are 'key_buffer_size' and 'table_open_cache'. You should first feel confident that you have these set appropriately before trying to change any other variables.
The following examples indicate some typical variable values for different runtime configurations.
If you have at least 1-2GB of memory and many tables and want maximum performance with a moderate number of clients, use something like this:
$> mysqld_safe --key_buffer_size=384M --table_open_cache=4000 \
--sort_buffer_size=4M --read_buffer_size=1M &
If you have only 256MB of memory and only a few tables, but you still do a lot of sorting, you can use something like this:
$> mysqld_safe --key_buffer_size=64M --sort_buffer_size=1M
If there are very many simultaneous connections, swapping problems may occur unless note 'mysqld': mysqld. has been configured to use very little memory for each connection. note 'mysqld': mysqld. performs better if you have enough memory for all connections.
With little memory and lots of connections, use something like this:
$> mysqld_safe --key_buffer_size=512K --sort_buffer_size=100K \
--read_buffer_size=100K &
Or even this:
$> mysqld_safe --key_buffer_size=512K --sort_buffer_size=16K \
--table_open_cache=32 --read_buffer_size=8K \
--net_buffer_length=1K &
If you are performing 'GROUP BY' or 'ORDER BY' operations on tables that are much larger than your available memory, increase the value of 'read_rnd_buffer_size' to speed up the reading of rows following sorting operations.
If you specify an option on the command line for note 'mysqld': mysqld. or note 'mysqld_safe': mysqld-safe, it remains in effect only for that invocation of the server. To use the option every time the server runs, put it in an option file. See *note option-files::.
File: manual.info.tmp, Node: server-configuration-defaults, Next: server-option-variable-reference, Prev: server-configuration, Up: mysqld-server
The MySQL server has many operating parameters, which you can change at server startup using command-line options or configuration files (option files). It is also possible to change many parameters at runtime. For general instructions on setting parameters at startup or runtime, see note server-options::, and note server-system-variables::.
On Windows, MySQL Installer interacts with the user and creates a file named 'my.ini' in the base installation directory as the default option file. If you install on Windows from a Zip archive, you can copy the 'my-default.ini' template file in the base installation directory to 'my.ini' and use the latter as the default option file.
Note:
As of MySQL 5.7.18, 'my-default.ini' is no longer included in or installed by distribution packages.
Note:
On Windows, the '.ini' or '.cnf' option file extension might not be displayed.
After completing the installation process, you can edit the default option file at any time to modify the parameters used by the server. For example, to use a parameter setting in the file that is commented with a '#' character at the beginning of the line, remove the '#', and modify the parameter value if necessary. To disable a setting, either add a '#' to the beginning of the line or remove it.
For non-Windows platforms, no default option file is created during either the server installation or the data directory initialization process. Create your option file by following the instructions given in note option-files::. Without an option file, the server just starts with its default settings--see note server-configuration-defaults:: on how to check those settings.
For additional information about option file format and syntax, see *note option-files::.
File: manual.info.tmp, Node: server-option-variable-reference, Next: server-system-variable-reference, Prev: server-configuration-defaults, Up: mysqld-server
The following table lists all command-line options, system variables, and status variables applicable within 'mysqld'.
The table lists command-line options (Cmd-line), options valid in configuration files (Option file), server system variables (System Var), and status variables (Status var) in one unified list, with an indication of where each option or variable is valid. If a server option set on the command line or in an option file differs from the name of the corresponding system variable, the variable name is noted immediately below the corresponding option. For system and status variables, the scope of the variable (Var Scope) is Global, Session, or both. Please see the corresponding item descriptions for details on setting and using the options and variables. Where appropriate, direct links to further information about the items are provided.
For a version of this table that is specific to NDB Cluster, see *note mysql-cluster-option-tables::.
Command-Line Option, System Variable, and Status Variable Summary
Name Cmd-Line Option System Status Var Scope Dynamic File Var Var
abort-slave-event-count
Yes Yes
Aborted_clients
Yes Global No
Aborted_connects
Yes Global No
allow-suspicious-udfs
Yes Yes
ansi
Yes Yes
audit-log
Yes Yes
audit_log_buffer_size
Yes Yes Yes Global No
audit_log_compression
Yes Yes Yes Global No
audit_log_connection_policy
Yes Yes Yes Global Yes
audit_log_current_session
Yes Both No
Audit_log_current_size
Yes Global No
audit_log_disable
Yes Yes Yes Global Yes
audit_log_encryption
Yes Yes Yes Global No
Audit_log_event_max_drop_size
Yes Global No
Audit_log_events
Yes Global No
Audit_log_events_filtered
Yes Global No
Audit_log_events_lost
Yes Global No
Audit_log_events_written
Yes Global No
audit_log_exclude_accounts
Yes Yes Yes Global Yes
audit_log_file
Yes Yes Yes Global No
audit_log_filter_id
Yes Both No
audit_log_flush
Yes Global Yes
audit_log_format
Yes Yes Yes Global No
audit_log_format_unix_timestamp
Yes Yes Yes Global Yes
audit_log_include_accounts
Yes Yes Yes Global Yes
audit_log_policy
Yes Yes Yes Global No
audit_log_read_buffer_size
Yes Yes Yes Varies Varies
audit_log_rotate_on_size
Yes Yes Yes Global Yes
audit_log_statement_policy
Yes Yes Yes Global Yes
audit_log_strategy
Yes Yes Yes Global No
Audit_log_total_size
Yes Global No
Audit_log_write_waits
Yes Global No
authentication_ldap_sasl_auth_method_name
Yes Yes Yes Global Yes
authentication_ldap_sasl_bind_base_dn
Yes Yes Yes Global Yes
authentication_ldap_sasl_bind_root_dn
Yes Yes Yes Global Yes
authentication_ldap_sasl_bind_root_pwd
Yes Yes Yes Global Yes
authentication_ldap_sasl_ca_path
Yes Yes Yes Global Yes
authentication_ldap_sasl_group_search_attr
Yes Yes Yes Global Yes
authentication_ldap_sasl_group_search_filter
Yes Yes Yes Global Yes
authentication_ldap_sasl_init_pool_size
Yes Yes Yes Global Yes
authentication_ldap_sasl_log_status
Yes Yes Yes Global Yes
authentication_ldap_sasl_max_pool_size
Yes Yes Yes Global Yes
authentication_ldap_sasl_server_host
Yes Yes Yes Global Yes
authentication_ldap_sasl_server_port
Yes Yes Yes Global Yes
authentication_ldap_sasl_tls
Yes Yes Yes Global Yes
authentication_ldap_sasl_user_search_attr
Yes Yes Yes Global Yes
authentication_ldap_simple_auth_method_name
Yes Yes Yes Global Yes
authentication_ldap_simple_bind_base_dn
Yes Yes Yes Global Yes
authentication_ldap_simple_bind_root_dn
Yes Yes Yes Global Yes
authentication_ldap_simple_bind_root_pwd
Yes Yes Yes Global Yes
authentication_ldap_simple_ca_path
Yes Yes Yes Global Yes
authentication_ldap_simple_group_search_attr
Yes Yes Yes Global Yes
authentication_ldap_simple_group_search_filter
Yes Yes Yes Global Yes
authentication_ldap_simple_init_pool_size
Yes Yes Yes Global Yes
authentication_ldap_simple_log_status
Yes Yes Yes Global Yes
authentication_ldap_simple_max_pool_size
Yes Yes Yes Global Yes
authentication_ldap_simple_server_host
Yes Yes Yes Global Yes
authentication_ldap_simple_server_port
Yes Yes Yes Global Yes
authentication_ldap_simple_tls
Yes Yes Yes Global Yes
authentication_ldap_simple_user_search_attr
Yes Yes Yes Global Yes
authentication_windows_log_level
Yes Yes Yes Global No
authentication_windows_use_principal_name
Yes Yes Yes Global No
auto_generate_certs
Yes Yes Yes Global No
auto_increment_increment
Yes Yes Yes Both Yes
auto_increment_offset
Yes Yes Yes Both Yes
autocommit
Yes Yes Yes Both Yes
automatic_sp_privileges
Yes Yes Yes Global Yes
avoid_temporal_upgrade
Yes Yes Yes Global Yes
back_log
Yes Yes Yes Global No
basedir
Yes Yes Yes Global No
big_tables
Yes Yes Yes Both Yes
bind_address
Yes Yes Yes Global No
Binlog_cache_disk_use
Yes Global No
binlog_cache_size
Yes Yes Yes Global Yes
Binlog_cache_use
Yes Global No
binlog-checksum
Yes Yes
binlog_checksum
Yes Yes Yes Global Yes
binlog_direct_non_transactional_updates
Yes Yes Yes Both Yes
binlog-do-db
Yes Yes
binlog_error_action
Yes Yes Yes Global Yes
binlog_format
Yes Yes Yes Both Yes
binlog_group_commit_sync_delay
Yes Yes Yes Global Yes
binlog_group_commit_sync_no_delay_count
Yes Yes Yes Global Yes
binlog_gtid_simple_recovery
Yes Yes Yes Global No
binlog-ignore-db
Yes Yes
binlog_max_flush_queue_time
Yes Yes Yes Global Yes
binlog_order_commits
Yes Yes Yes Global Yes
binlog-row-event-max-size
Yes Yes
binlog_row_image
Yes Yes Yes Both Yes
binlog_rows_query_log_events
Yes Yes Yes Both Yes
Binlog_stmt_cache_disk_use
Yes Global No
binlog_stmt_cache_size
Yes Yes Yes Global Yes
Binlog_stmt_cache_use
Yes Global No
binlog_transaction_dependency_history_size
Yes Yes Yes Global Yes
binlog_transaction_dependency_tracking
Yes Yes Yes Global Yes
block_encryption_mode
Yes Yes Yes Both Yes
bootstrap
Yes Yes
bulk_insert_buffer_size
Yes Yes Yes Both Yes
Bytes_received
Yes Both No
Bytes_sent
Yes Both No
character_set_client
Yes Both Yes
character-set-client-handshake
Yes Yes
character_set_connection
Yes Both Yes
character_set_database (note 1)
Yes Both Yes
character_set_filesystem
Yes Yes Yes Both Yes
character_set_results
Yes Both Yes
character_set_server
Yes Yes Yes Both Yes
character_set_system
Yes Global No
character_sets_dir
Yes Yes Yes Global No
check_proxy_users
Yes Yes Yes Global Yes
chroot
Yes Yes
collation_connection
Yes Both Yes
collation_database (note 1)
Yes Both Yes
collation_server
Yes Yes Yes Both Yes
Com_admin_commands
Yes Both No
Com_alter_db
Yes Both No
Com_alter_db_upgrade
Yes Both No
Com_alter_event
Yes Both No
Com_alter_function
Yes Both No
Com_alter_procedure
Yes Both No
Com_alter_server
Yes Both No
Com_alter_table
Yes Both No
Com_alter_tablespace
Yes Both No
Com_alter_user
Yes Both No
Com_analyze
Yes Both No
Com_assign_to_keycache
Yes Both No
Com_begin
Yes Both No
Com_binlog
Yes Both No
Com_call_procedure
Yes Both No
Com_change_db
Yes Both No
Com_change_master
Yes Both No
Com_change_repl_filter
Yes Both No
Com_check
Yes Both No
Com_checksum
Yes Both No
Com_commit
Yes Both No
Com_create_db
Yes Both No
Com_create_event
Yes Both No
Com_create_function
Yes Both No
Com_create_index
Yes Both No
Com_create_procedure
Yes Both No
Com_create_server
Yes Both No
Com_create_table
Yes Both No
Com_create_trigger
Yes Both No
Com_create_udf
Yes Both No
Com_create_user
Yes Both No
Com_create_view
Yes Both No
Com_dealloc_sql
Yes Both No
Com_delete
Yes Both No
Com_delete_multi
Yes Both No
Com_do
Yes Both No
Com_drop_db
Yes Both No
Com_drop_event
Yes Both No
Com_drop_function
Yes Both No
Com_drop_index
Yes Both No
Com_drop_procedure
Yes Both No
Com_drop_server
Yes Both No
Com_drop_table
Yes Both No
Com_drop_trigger
Yes Both No
Com_drop_user
Yes Both No
Com_drop_view
Yes Both No
Com_empty_query
Yes Both No
Com_execute_sql
Yes Both No
Com_explain_other
Yes Both No
Com_flush
Yes Both No
Com_get_diagnostics
Yes Both No
Com_grant
Yes Both No
Com_group_replication_start
Yes Global No
Com_group_replication_stop
Yes Global No
Com_ha_close
Yes Both No
Com_ha_open
Yes Both No
Com_ha_read
Yes Both No
Com_help
Yes Both No
Com_insert
Yes Both No
Com_insert_select
Yes Both No
Com_install_plugin
Yes Both No
Com_kill
Yes Both No
Com_load
Yes Both No
Com_lock_tables
Yes Both No
Com_optimize
Yes Both No
Com_preload_keys
Yes Both No
Com_prepare_sql
Yes Both No
Com_purge
Yes Both No
Com_purge_before_date
Yes Both No
Com_release_savepoint
Yes Both No
Com_rename_table
Yes Both No
Com_rename_user
Yes Both No
Com_repair
Yes Both No
Com_replace
Yes Both No
Com_replace_select
Yes Both No
Com_reset
Yes Both No
Com_resignal
Yes Both No
Com_revoke
Yes Both No
Com_revoke_all
Yes Both No
Com_rollback
Yes Both No
Com_rollback_to_savepoint
Yes Both No
Com_savepoint
Yes Both No
Com_select
Yes Both No
Com_set_option
Yes Both No
Com_show_authors
Yes Both No
Com_show_binlog_events
Yes Both No
Com_show_binlogs
Yes Both No
Com_show_charsets
Yes Both No
Com_show_collations
Yes Both No
Com_show_contributors
Yes Both No
Com_show_create_db
Yes Both No
Com_show_create_event
Yes Both No
Com_show_create_func
Yes Both No
Com_show_create_proc
Yes Both No
Com_show_create_table
Yes Both No
Com_show_create_trigger
Yes Both No
Com_show_create_user
Yes Both No
Com_show_databases
Yes Both No
Com_show_engine_logs
Yes Both No
Com_show_engine_mutex
Yes Both No
Com_show_engine_status
Yes Both No
Com_show_errors
Yes Both No
Com_show_events
Yes Both No
Com_show_fields
Yes Both No
Com_show_function_code
Yes Both No
Com_show_function_status
Yes Both No
Com_show_grants
Yes Both No
Com_show_keys
Yes Both No
Com_show_master_status
Yes Both No
Com_show_ndb_status
Yes Both No
Com_show_open_tables
Yes Both No
Com_show_plugins
Yes Both No
Com_show_privileges
Yes Both No
Com_show_procedure_code
Yes Both No
Com_show_procedure_status
Yes Both No
Com_show_processlist
Yes Both No
Com_show_profile
Yes Both No
Com_show_profiles
Yes Both No
Com_show_relaylog_events
Yes Both No
Com_show_slave_hosts
Yes Both No
Com_show_slave_status
Yes Both No
Com_show_status
Yes Both No
Com_show_storage_engines
Yes Both No
Com_show_table_status
Yes Both No
Com_show_tables
Yes Both No
Com_show_triggers
Yes Both No
Com_show_variables
Yes Both No
Com_show_warnings
Yes Both No
Com_shutdown
Yes Both No
Com_signal
Yes Both No
Com_slave_start
Yes Both No
Com_slave_stop
Yes Both No
Com_stmt_close
Yes Both No
Com_stmt_execute
Yes Both No
Com_stmt_fetch
Yes Both No
Com_stmt_prepare
Yes Both No
Com_stmt_reprepare
Yes Both No
Com_stmt_reset
Yes Both No
Com_stmt_send_long_data
Yes Both No
Com_truncate
Yes Both No
Com_uninstall_plugin
Yes Both No
Com_unlock_tables
Yes Both No
Com_update
Yes Both No
Com_update_multi
Yes Both No
Com_xa_commit
Yes Both No
Com_xa_end
Yes Both No
Com_xa_prepare
Yes Both No
Com_xa_recover
Yes Both No
Com_xa_rollback
Yes Both No
Com_xa_start
Yes Both No
completion_type
Yes Yes Yes Both Yes
Compression
Yes Session No
concurrent_insert
Yes Yes Yes Global Yes
connect_timeout
Yes Yes Yes Global Yes
Connection_control_delay_generated
Yes Global No
connection_control_failed_connections_threshold
Yes Yes Yes Global Yes
connection_control_max_connection_delay
Yes Yes Yes Global Yes
connection_control_min_connection_delay
Yes Yes Yes Global Yes
Connection_errors_accept
Yes Global No
Connection_errors_internal
Yes Global No
Connection_errors_max_connections
Yes Global No
Connection_errors_peer_address
Yes Global No
Connection_errors_select
Yes Global No
Connection_errors_tcpwrap
Yes Global No
Connections
Yes Global No
console
Yes Yes
core-file
Yes Yes
core_file
Yes Global No
Created_tmp_disk_tables
Yes Both No
Created_tmp_files
Yes Global No
Created_tmp_tables
Yes Both No
daemon_memcached_enable_binlog
Yes Yes Yes Global No
daemon_memcached_engine_lib_name
Yes Yes Yes Global No
daemon_memcached_engine_lib_path
Yes Yes Yes Global No
daemon_memcached_option
Yes Yes Yes Global No
daemon_memcached_r_batch_size
Yes Yes Yes Global No
daemon_memcached_w_batch_size
Yes Yes Yes Global No
daemonize
Yes Yes
datadir
Yes Yes Yes Global No
date_format
Yes Global No
datetime_format
Yes Global No
debug
Yes Yes Yes Both Yes
debug_sync
Yes Session Yes
debug-sync-timeout
Yes Yes
default_authentication_plugin
Yes Yes Yes Global No
default_password_lifetime
Yes Yes Yes Global Yes
default_storage_engine
Yes Yes Yes Both Yes
default-time-zone
Yes Yes
default_tmp_storage_engine
Yes Yes Yes Both Yes
default_week_format
Yes Yes Yes Both Yes
defaults-extra-file
Yes
defaults-file
Yes
defaults-group-suffix
Yes
delay_key_write
Yes Yes Yes Global Yes
Delayed_errors
Yes Global No
delayed_insert_limit
Yes Yes Yes Global Yes
Delayed_insert_threads
Yes Global No
delayed_insert_timeout
Yes Yes Yes Global Yes
delayed_queue_size
Yes Yes Yes Global Yes
Delayed_writes
Yes Global No
des-key-file
Yes Yes
disable-partition-engine-check
Yes Yes
disabled_storage_engines
Yes Yes Yes Global No
disconnect_on_expired_password
Yes Yes Yes Global No
disconnect-slave-event-count
Yes Yes
div_precision_increment
Yes Yes Yes Both Yes
early-plugin-load
Yes Yes
end_markers_in_json
Yes Yes Yes Both Yes
enforce_gtid_consistency
Yes Yes Yes Global Varies
eq_range_index_dive_limit
Yes Yes Yes Both Yes
error_count
Yes Session No
event_scheduler
Yes Yes Yes Global Yes
exit-info
Yes Yes
expire_logs_days
Yes Yes Yes Global Yes
explicit_defaults_for_timestamp
Yes Yes Yes Both Yes
external-locking
Yes Yes
external_user
Yes Session No
*note federated: federated-storage-engine.
Yes Yes
Firewall_access_denied
Yes Global No
Firewall_access_granted
Yes Global No
Firewall_cached_entries
Yes Global No
flush
Yes Yes Yes Global Yes
Flush_commands
Yes Global No
flush_time
Yes Yes Yes Global Yes
foreign_key_checks
Yes Both Yes
ft_boolean_syntax
Yes Yes Yes Global Yes
ft_max_word_len
Yes Yes Yes Global No
ft_min_word_len
Yes Yes Yes Global No
ft_query_expansion_limit
Yes Yes Yes Global No
ft_stopword_file
Yes Yes Yes Global No
gdb
Yes Yes
general_log
Yes Yes Yes Global Yes
general_log_file
Yes Yes Yes Global Yes
group_concat_max_len
Yes Yes Yes Both Yes
group_replication_allow_local_disjoint_gtids_join
Yes Yes Yes Global Yes
group_replication_allow_local_lower_version_join
Yes Yes Yes Global Yes
group_replication_auto_increment_increment
Yes Yes Yes Global Yes
group_replication_bootstrap_group
Yes Yes Yes Global Yes
group_replication_components_stop_timeout
Yes Yes Yes Global Yes
group_replication_compression_threshold
Yes Yes Yes Global Yes
group_replication_enforce_update_everywhere_checks
Yes Yes Yes Global Yes
group_replication_exit_state_action
Yes Yes Yes Global Yes
group_replication_flow_control_applier_threshold
Yes Yes Yes Global Yes
group_replication_flow_control_certifier_threshold
Yes Yes Yes Global Yes
group_replication_flow_control_mode
Yes Yes Yes Global Yes
group_replication_force_members
Yes Yes Yes Global Yes
group_replication_group_name
Yes Yes Yes Global Yes
group_replication_group_seeds
Yes Yes Yes Global Yes
group_replication_gtid_assignment_block_size
Yes Yes Yes Global Yes
group_replication_ip_whitelist
Yes Yes Yes Global Yes
group_replication_local_address
Yes Yes Yes Global Yes
group_replication_member_weight
Yes Yes Yes Global Yes
group_replication_poll_spin_loops
Yes Yes Yes Global Yes
group_replication_primary_member
Yes Global No
group_replication_recovery_complete_at
Yes Yes Yes Global Yes
group_replication_recovery_reconnect_interval
Yes Yes Yes Global Yes
group_replication_recovery_retry_count
Yes Yes Yes Global Yes
group_replication_recovery_ssl_ca
Yes Yes Yes Global Yes
group_replication_recovery_ssl_capath
Yes Yes Yes Global Yes
group_replication_recovery_ssl_cert
Yes Yes Yes Global Yes
group_replication_recovery_ssl_cipher
Yes Yes Yes Global Yes
group_replication_recovery_ssl_crl
Yes Yes Yes Global Yes
group_replication_recovery_ssl_crlpath
Yes Yes Yes Global Yes
group_replication_recovery_ssl_key
Yes Yes Yes Global Yes
group_replication_recovery_ssl_verify_server_cert
Yes Yes Yes Global Yes
group_replication_recovery_use_ssl
Yes Yes Yes Global Yes
group_replication_single_primary_mode
Yes Yes Yes Global Yes
group_replication_ssl_mode
Yes Yes Yes Global Yes
group_replication_start_on_boot
Yes Yes Yes Global Yes
group_replication_transaction_size_limit
Yes Yes Yes Global Yes
group_replication_unreachable_majority_timeout
Yes Yes Yes Global Yes
gtid_executed
Yes Varies No
gtid_executed_compression_period
Yes Yes Yes Global Yes
gtid_mode
Yes Yes Yes Global Varies
gtid_next
Yes Session Yes
gtid_owned
Yes Both No
gtid_purged
Yes Global Yes
Handler_commit
Yes Both No
Handler_delete
Yes Both No
Handler_discover
Yes Both No
Handler_external_lock
Yes Both No
Handler_mrr_init
Yes Both No
Handler_prepare
Yes Both No
Handler_read_first
Yes Both No
Handler_read_key
Yes Both No
Handler_read_last
Yes Both No
Handler_read_next
Yes Both No
Handler_read_prev
Yes Both No
Handler_read_rnd
Yes Both No
Handler_read_rnd_next
Yes Both No
Handler_rollback
Yes Both No
Handler_savepoint
Yes Both No
Handler_savepoint_rollback
Yes Both No
Handler_update
Yes Both No
Handler_write
Yes Both No
have_compress
Yes Global No
have_crypt
Yes Global No
have_dynamic_loading
Yes Global No
have_geometry
Yes Global No
have_openssl
Yes Global No
have_profiling
Yes Global No
have_query_cache
Yes Global No
have_rtree_keys
Yes Global No
have_ssl
Yes Global No
have_statement_timeout
Yes Global No
have_symlink
Yes Global No
help
Yes Yes
host_cache_size
Yes Yes Yes Global Yes
hostname
Yes Global No
identity
Yes Session Yes
ignore_builtin_innodb
Yes Yes Yes Global No
ignore-db-dir
Yes Yes
ignore_db_dirs
Yes Global No
init_connect
Yes Yes Yes Global Yes
init_file
Yes Yes Yes Global No
init_slave
Yes Yes Yes Global Yes
initialize
Yes Yes
initialize-insecure
Yes Yes
innodb
Yes Yes
innodb_adaptive_flushing
Yes Yes Yes Global Yes
innodb_adaptive_flushing_lwm
Yes Yes Yes Global Yes
innodb_adaptive_hash_index
Yes Yes Yes Global Yes
innodb_adaptive_hash_index_parts
Yes Yes Yes Global No
innodb_adaptive_max_sleep_delay
Yes Yes Yes Global Yes
innodb_api_bk_commit_interval
Yes Yes Yes Global Yes
innodb_api_disable_rowlock
Yes Yes Yes Global No
innodb_api_enable_binlog
Yes Yes Yes Global No
innodb_api_enable_mdl
Yes Yes Yes Global No
innodb_api_trx_level
Yes Yes Yes Global Yes
innodb_autoextend_increment
Yes Yes Yes Global Yes
innodb_autoinc_lock_mode
Yes Yes Yes Global No
Innodb_available_undo_logs
Yes Global No
innodb_background_drop_list_empty
Yes Yes Yes Global Yes
Innodb_buffer_pool_bytes_data
Yes Global No
Innodb_buffer_pool_bytes_dirty
Yes Global No
innodb_buffer_pool_chunk_size
Yes Yes Yes Global No
innodb_buffer_pool_dump_at_shutdown
Yes Yes Yes Global Yes
innodb_buffer_pool_dump_now
Yes Yes Yes Global Yes
innodb_buffer_pool_dump_pct
Yes Yes Yes Global Yes
Innodb_buffer_pool_dump_status
Yes Global No
innodb_buffer_pool_filename
Yes Yes Yes Global Yes
innodb_buffer_pool_instances
Yes Yes Yes Global No
innodb_buffer_pool_load_abort
Yes Yes Yes Global Yes
innodb_buffer_pool_load_at_startup
Yes Yes Yes Global No
innodb_buffer_pool_load_now
Yes Yes Yes Global Yes
Innodb_buffer_pool_load_status
Yes Global No
Innodb_buffer_pool_pages_data
Yes Global No
Innodb_buffer_pool_pages_dirty
Yes Global No
Innodb_buffer_pool_pages_flushed
Yes Global No
Innodb_buffer_pool_pages_free
Yes Global No
Innodb_buffer_pool_pages_latched
Yes Global No
Innodb_buffer_pool_pages_misc
Yes Global No
Innodb_buffer_pool_pages_total
Yes Global No
Innodb_buffer_pool_read_ahead
Yes Global No
Innodb_buffer_pool_read_ahead_evicted
Yes Global No
Innodb_buffer_pool_read_ahead_rnd
Yes Global No
Innodb_buffer_pool_read_requests
Yes Global No
Innodb_buffer_pool_reads
Yes Global No
Innodb_buffer_pool_resize_status
Yes Global No
innodb_buffer_pool_size
Yes Yes Yes Global Varies
Innodb_buffer_pool_wait_free
Yes Global No
Innodb_buffer_pool_write_requests
Yes Global No
innodb_change_buffer_max_size
Yes Yes Yes Global Yes
innodb_change_buffering
Yes Yes Yes Global Yes
innodb_change_buffering_debug
Yes Yes Yes Global Yes
innodb_checksum_algorithm
Yes Yes Yes Global Yes
innodb_checksums
Yes Yes Yes Global No
innodb_cmp_per_index_enabled
Yes Yes Yes Global Yes
innodb_commit_concurrency
Yes Yes Yes Global Yes
innodb_compress_debug
Yes Yes Yes Global Yes
innodb_compression_failure_threshold_pct
Yes Yes Yes Global Yes
innodb_compression_level
Yes Yes Yes Global Yes
innodb_compression_pad_pct_max
Yes Yes Yes Global Yes
innodb_concurrency_tickets
Yes Yes Yes Global Yes
innodb_data_file_path
Yes Yes Yes Global No
Innodb_data_fsyncs
Yes Global No
innodb_data_home_dir
Yes Yes Yes Global No
Innodb_data_pending_fsyncs
Yes Global No
Innodb_data_pending_reads
Yes Global No
Innodb_data_pending_writes
Yes Global No
Innodb_data_read
Yes Global No
Innodb_data_reads
Yes Global No
Innodb_data_writes
Yes Global No
Innodb_data_written
Yes Global No
Innodb_dblwr_pages_written
Yes Global No
Innodb_dblwr_writes
Yes Global No
innodb_deadlock_detect
Yes Yes Yes Global Yes
innodb_default_row_format
Yes Yes Yes Global Yes
innodb_disable_resize_buffer_pool_debug
Yes Yes Yes Global Yes
innodb_disable_sort_file_cache
Yes Yes Yes Global Yes
innodb_doublewrite
Yes Yes Yes Global No
innodb_fast_shutdown
Yes Yes Yes Global Yes
innodb_fil_make_page_dirty_debug
Yes Yes Yes Global Yes
innodb_file_format
Yes Yes Yes Global Yes
innodb_file_format_check
Yes Yes Yes Global No
innodb_file_format_max
Yes Yes Yes Global Yes
innodb_file_per_table
Yes Yes Yes Global Yes
innodb_fill_factor
Yes Yes Yes Global Yes
innodb_flush_log_at_timeout
Yes Yes Yes Global Yes
innodb_flush_log_at_trx_commit
Yes Yes Yes Global Yes
innodb_flush_method
Yes Yes Yes Global No
innodb_flush_neighbors
Yes Yes Yes Global Yes
innodb_flush_sync
Yes Yes Yes Global Yes
innodb_flushing_avg_loops
Yes Yes Yes Global Yes
innodb_force_load_corrupted
Yes Yes Yes Global No
innodb_force_recovery
Yes Yes Yes Global No
innodb_ft_aux_table
Yes Global Yes
innodb_ft_cache_size
Yes Yes Yes Global No
innodb_ft_enable_diag_print
Yes Yes Yes Global Yes
innodb_ft_enable_stopword
Yes Yes Yes Both Yes
innodb_ft_max_token_size
Yes Yes Yes Global No
innodb_ft_min_token_size
Yes Yes Yes Global No
innodb_ft_num_word_optimize
Yes Yes Yes Global Yes
innodb_ft_result_cache_limit
Yes Yes Yes Global Yes
innodb_ft_server_stopword_table
Yes Yes Yes Global Yes
innodb_ft_sort_pll_degree
Yes Yes Yes Global No
innodb_ft_total_cache_size
Yes Yes Yes Global No
innodb_ft_user_stopword_table
Yes Yes Yes Both Yes
Innodb_have_atomic_builtins
Yes Global No
innodb_io_capacity
Yes Yes Yes Global Yes
innodb_io_capacity_max
Yes Yes Yes Global Yes
innodb_large_prefix
Yes Yes Yes Global Yes
innodb_limit_optimistic_insert_debug
Yes Yes Yes Global Yes
innodb_lock_wait_timeout
Yes Yes Yes Both Yes
innodb_locks_unsafe_for_binlog
Yes Yes Yes Global No
innodb_log_buffer_size
Yes Yes Yes Global No
innodb_log_checkpoint_now
Yes Yes Yes Global Yes
innodb_log_checksums
Yes Yes Yes Global Yes
innodb_log_compressed_pages
Yes Yes Yes Global Yes
innodb_log_file_size
Yes Yes Yes Global No
innodb_log_files_in_group
Yes Yes Yes Global No
innodb_log_group_home_dir
Yes Yes Yes Global No
Innodb_log_waits
Yes Global No
innodb_log_write_ahead_size
Yes Yes Yes Global Yes
Innodb_log_write_requests
Yes Global No
Innodb_log_writes
Yes Global No
innodb_lru_scan_depth
Yes Yes Yes Global Yes
innodb_max_dirty_pages_pct
Yes Yes Yes Global Yes
innodb_max_dirty_pages_pct_lwm
Yes Yes Yes Global Yes
innodb_max_purge_lag
Yes Yes Yes Global Yes
innodb_max_purge_lag_delay
Yes Yes Yes Global Yes
innodb_max_undo_log_size
Yes Yes Yes Global Yes
innodb_merge_threshold_set_all_debug
Yes Yes Yes Global Yes
innodb_monitor_disable
Yes Yes Yes Global Yes
innodb_monitor_enable
Yes Yes Yes Global Yes
innodb_monitor_reset
Yes Yes Yes Global Yes
innodb_monitor_reset_all
Yes Yes Yes Global Yes
Innodb_num_open_files
Yes Global No
innodb_numa_interleave
Yes Yes Yes Global No
innodb_old_blocks_pct
Yes Yes Yes Global Yes
innodb_old_blocks_time
Yes Yes Yes Global Yes
innodb_online_alter_log_max_size
Yes Yes Yes Global Yes
innodb_open_files
Yes Yes Yes Global No
innodb_optimize_fulltext_only
Yes Yes Yes Global Yes
Innodb_os_log_fsyncs
Yes Global No
Innodb_os_log_pending_fsyncs
Yes Global No
Innodb_os_log_pending_writes
Yes Global No
Innodb_os_log_written
Yes Global No
innodb_page_cleaners
Yes Yes Yes Global No
Innodb_page_size
Yes Global No
innodb_page_size
Yes Yes Yes Global No
Innodb_pages_created
Yes Global No
Innodb_pages_read
Yes Global No
Innodb_pages_written
Yes Global No
innodb_print_all_deadlocks
Yes Yes Yes Global Yes
innodb_purge_batch_size
Yes Yes Yes Global Yes
innodb_purge_rseg_truncate_frequency
Yes Yes Yes Global Yes
innodb_purge_threads
Yes Yes Yes Global No
innodb_random_read_ahead
Yes Yes Yes Global Yes
innodb_read_ahead_threshold
Yes Yes Yes Global Yes
innodb_read_io_threads
Yes Yes Yes Global No
innodb_read_only
Yes Yes Yes Global No
innodb_replication_delay
Yes Yes Yes Global Yes
innodb_rollback_on_timeout
Yes Yes Yes Global No
innodb_rollback_segments
Yes Yes Yes Global Yes
Innodb_row_lock_current_waits
Yes Global No
Innodb_row_lock_time
Yes Global No
Innodb_row_lock_time_avg
Yes Global No
Innodb_row_lock_time_max
Yes Global No
Innodb_row_lock_waits
Yes Global No
Innodb_rows_deleted
Yes Global No
Innodb_rows_inserted
Yes Global No
Innodb_rows_read
Yes Global No
Innodb_rows_updated
Yes Global No
innodb_saved_page_number_debug
Yes Yes Yes Global Yes
innodb_sort_buffer_size
Yes Yes Yes Global No
innodb_spin_wait_delay
Yes Yes Yes Global Yes
innodb_stats_auto_recalc
Yes Yes Yes Global Yes
innodb_stats_include_delete_marked
Yes Yes Yes Global Yes
innodb_stats_method
Yes Yes Yes Global Yes
innodb_stats_on_metadata
Yes Yes Yes Global Yes
innodb_stats_persistent
Yes Yes Yes Global Yes
innodb_stats_persistent_sample_pages
Yes Yes Yes Global Yes
innodb_stats_sample_pages
Yes Yes Yes Global Yes
innodb_stats_transient_sample_pages
Yes Yes Yes Global Yes
innodb-status-file
Yes Yes
innodb_status_output
Yes Yes Yes Global Yes
innodb_status_output_locks
Yes Yes Yes Global Yes
innodb_strict_mode
Yes Yes Yes Both Yes
innodb_support_xa
Yes Yes Yes Both Yes
innodb_sync_array_size
Yes Yes Yes Global No
innodb_sync_debug
Yes Yes Yes Global No
innodb_sync_spin_loops
Yes Yes Yes Global Yes
innodb_table_locks
Yes Yes Yes Both Yes
innodb_temp_data_file_path
Yes Yes Yes Global No
innodb_thread_concurrency
Yes Yes Yes Global Yes
innodb_thread_sleep_delay
Yes Yes Yes Global Yes
innodb_tmpdir
Yes Yes Yes Both Yes
Innodb_truncated_status_writes
Yes Global No
innodb_trx_purge_view_update_only_debug
Yes Yes Yes Global Yes
innodb_trx_rseg_n_slots_debug
Yes Yes Yes Global Yes
innodb_undo_directory
Yes Yes Yes Global No
innodb_undo_log_truncate
Yes Yes Yes Global Yes
innodb_undo_logs
Yes Yes Yes Global Yes
innodb_undo_tablespaces
Yes Yes Yes Global No
innodb_use_native_aio
Yes Yes Yes Global No
innodb_version
Yes Global No
innodb_write_io_threads
Yes Yes Yes Global No
insert_id
Yes Session Yes
install
Yes
install-manual
Yes
interactive_timeout
Yes Yes Yes Both Yes
internal_tmp_disk_storage_engine
Yes Yes Yes Global Yes
join_buffer_size
Yes Yes Yes Both Yes
keep_files_on_create
Yes Yes Yes Both Yes
Key_blocks_not_flushed
Yes Global No
Key_blocks_unused
Yes Global No
Key_blocks_used
Yes Global No
key_buffer_size
Yes Yes Yes Global Yes
key_cache_age_threshold
Yes Yes Yes Global Yes
key_cache_block_size
Yes Yes Yes Global Yes
key_cache_division_limit
Yes Yes Yes Global Yes
Key_read_requests
Yes Global No
Key_reads
Yes Global No
Key_write_requests
Yes Global No
Key_writes
Yes Global No
keyring_aws_cmk_id
Yes Yes Yes Global Yes
keyring_aws_conf_file
Yes Yes Yes Global No
keyring_aws_data_file
Yes Yes Yes Global No
keyring_aws_region
Yes Yes Yes Global Yes
keyring_encrypted_file_data
Yes Yes Yes Global Yes
keyring_encrypted_file_password
Yes Yes Yes Global Yes
keyring_file_data
Yes Yes Yes Global Yes
keyring-migration-destination
Yes Yes
keyring-migration-host
Yes Yes
keyring-migration-password
Yes Yes
keyring-migration-port
Yes Yes
keyring-migration-socket
Yes Yes
keyring-migration-source
Yes Yes
keyring-migration-user
Yes Yes
keyring_okv_conf_dir
Yes Yes Yes Global Yes
keyring_operations
Yes Global Yes
language
Yes Yes Yes Global No
large_files_support
Yes Global No
large_page_size
Yes Global No
large_pages
Yes Yes Yes Global No
last_insert_id
Yes Session Yes
Last_query_cost
Yes Session No
Last_query_partial_plans
Yes Session No
lc_messages
Yes Yes Yes Both Yes
lc_messages_dir
Yes Yes Yes Global No
lc_time_names
Yes Yes Yes Both Yes
license
Yes Global No
local_infile
Yes Yes Yes Global Yes
local-service
Yes
lock_wait_timeout
Yes Yes Yes Both Yes
Locked_connects
Yes Global No
locked_in_memory
Yes Global No
log-bin
Yes Yes
log_bin
Yes Global No
log_bin_basename
Yes Global No
log_bin_index
Yes Yes Yes Global No
log_bin_trust_function_creators
Yes Yes Yes Global Yes
log_bin_use_v1_row_events
Yes Yes Yes Global Yes
log_builtin_as_identified_by_password
Yes Yes Yes Global Yes
log_error
Yes Yes Yes Global No
log_error_verbosity
Yes Yes Yes Global Yes
log-isam
Yes Yes
log_output
Yes Yes Yes Global Yes
log_queries_not_using_indexes
Yes Yes Yes Global Yes
log-raw
Yes Yes
log-short-format
Yes Yes
log_slave_updates
Yes Yes Yes Global No
log_slow_admin_statements
Yes Yes Yes Global Yes
log_slow_slave_statements
Yes Yes Yes Global Yes
log_statements_unsafe_for_binlog
Yes Yes Yes Global Yes
log_syslog
Yes Yes Yes Global Yes
log_syslog_facility
Yes Yes Yes Global Yes
log_syslog_include_pid
Yes Yes Yes Global Yes
log_syslog_tag
Yes Yes Yes Global Yes
log-tc
Yes Yes
log-tc-size
Yes Yes
log_throttle_queries_not_using_indexes
Yes Yes Yes Global Yes
log_timestamps
Yes Yes Yes Global Yes
log_warnings
Yes Yes Yes Global Yes
long_query_time
Yes Yes Yes Both Yes
low_priority_updates
Yes Yes Yes Both Yes
lower_case_file_system
Yes Global No
lower_case_table_names
Yes Yes Yes Global No
master-info-file
Yes Yes
master_info_repository
Yes Yes Yes Global Yes
master-retry-count
Yes Yes
master_verify_checksum
Yes Yes Yes Global Yes
max_allowed_packet
Yes Yes Yes Both Yes
max_binlog_cache_size
Yes Yes Yes Global Yes
max-binlog-dump-events
Yes Yes
max_binlog_size
Yes Yes Yes Global Yes
max_binlog_stmt_cache_size
Yes Yes Yes Global Yes
max_connect_errors
Yes Yes Yes Global Yes
max_connections
Yes Yes Yes Global Yes
max_delayed_threads
Yes Yes Yes Both Yes
max_digest_length
Yes Yes Yes Global No
max_error_count
Yes Yes Yes Both Yes
max_execution_time
Yes Yes Yes Both Yes
Max_execution_time_exceeded
Yes Both No
Max_execution_time_set
Yes Both No
Max_execution_time_set_failed
Yes Both No
max_heap_table_size
Yes Yes Yes Both Yes
max_insert_delayed_threads
Yes Both Yes
max_join_size
Yes Yes Yes Both Yes
max_length_for_sort_data
Yes Yes Yes Both Yes
max_points_in_geometry
Yes Yes Yes Both Yes
max_prepared_stmt_count
Yes Yes Yes Global Yes
max_relay_log_size
Yes Yes Yes Global Yes
max_seeks_for_key
Yes Yes Yes Both Yes
max_sort_length
Yes Yes Yes Both Yes
max_sp_recursion_depth
Yes Yes Yes Both Yes
max_tmp_tables
Yes Both Yes
Max_used_connections
Yes Global No
Max_used_connections_time
Yes Global No
max_user_connections
Yes Yes Yes Both Yes
max_write_lock_count
Yes Yes Yes Global Yes
mecab_charset
Yes Global No
mecab_rc_file
Yes Yes Yes Global No
memlock
Yes Yes
metadata_locks_cache_size
Yes Yes Yes Global No
metadata_locks_hash_instances
Yes Yes Yes Global No
min_examined_row_limit
Yes Yes Yes Both Yes
multi_range_count
Yes Yes Yes Both Yes
myisam-block-size
Yes Yes
myisam_data_pointer_size
Yes Yes Yes Global Yes
myisam_max_sort_file_size
Yes Yes Yes Global Yes
myisam_mmap_size
Yes Yes Yes Global No
myisam_recover_options
Yes Yes Yes Global No
myisam_repair_threads
Yes Yes Yes Both Yes
myisam_sort_buffer_size
Yes Yes Yes Both Yes
myisam_stats_method
Yes Yes Yes Both Yes
myisam_use_mmap
Yes Yes Yes Global Yes
mysql_firewall_mode
Yes Yes Yes Global Yes
mysql_firewall_trace
Yes Yes Yes Global Yes
mysql_native_password_proxy_users
Yes Yes Yes Global Yes
mysqlx
Yes Yes
Mysqlx_address
Yes Global No
mysqlx_bind_address
Yes Yes Yes Global No
Mysqlx_bytes_received
Yes Both No
Mysqlx_bytes_sent
Yes Both No
mysqlx_connect_timeout
Yes Yes Yes Global Yes
Mysqlx_connection_accept_errors
Yes Both No
Mysqlx_connection_errors
Yes Both No
Mysqlx_connections_accepted
Yes Global No
Mysqlx_connections_closed
Yes Global No
Mysqlx_connections_rejected
Yes Global No
Mysqlx_crud_create_view
Yes Both No
Mysqlx_crud_delete
Yes Both No
Mysqlx_crud_drop_view
Yes Both No
Mysqlx_crud_find
Yes Both No
Mysqlx_crud_insert
Yes Both No
Mysqlx_crud_modify_view
Yes Both No
Mysqlx_crud_update
Yes Both No
Mysqlx_errors_sent
Yes Both No
Mysqlx_errors_unknown_message_type
Yes Both No
Mysqlx_expect_close
Yes Both No
Mysqlx_expect_open
Yes Both No
mysqlx_idle_worker_thread_timeout
Yes Yes Yes Global Yes
Mysqlx_init_error
Yes Both No
mysqlx_max_allowed_packet
Yes Yes Yes Global Yes
mysqlx_max_connections
Yes Yes Yes Global Yes
mysqlx_min_worker_threads
Yes Yes Yes Global Yes
Mysqlx_notice_other_sent
Yes Both No
Mysqlx_notice_warning_sent
Yes Both No
Mysqlx_port
Yes Global No
mysqlx_port
Yes Yes Yes Global No
mysqlx_port_open_timeout
Yes Yes Yes Global No
Mysqlx_rows_sent
Yes Both No
Mysqlx_sessions
Yes Global No
Mysqlx_sessions_accepted
Yes Global No
Mysqlx_sessions_closed
Yes Global No
Mysqlx_sessions_fatal_error
Yes Global No
Mysqlx_sessions_killed
Yes Global No
Mysqlx_sessions_rejected
Yes Global No
Mysqlx_socket
Yes Global No
mysqlx_socket
Yes Yes Yes Global No
Mysqlx_ssl_accept_renegotiates
Yes Global No
Mysqlx_ssl_accepts
Yes Global No
Mysqlx_ssl_active
Yes Both No
mysqlx_ssl_ca
Yes Yes Yes Global No
mysqlx_ssl_capath
Yes Yes Yes Global No
mysqlx_ssl_cert
Yes Yes Yes Global No
Mysqlx_ssl_cipher
Yes Both No
mysqlx_ssl_cipher
Yes Yes Yes Global No
Mysqlx_ssl_cipher_list
Yes Both No
mysqlx_ssl_crl
Yes Yes Yes Global No
mysqlx_ssl_crlpath
Yes Yes Yes Global No
Mysqlx_ssl_ctx_verify_depth
Yes Both No
Mysqlx_ssl_ctx_verify_mode
Yes Both No
Mysqlx_ssl_finished_accepts
Yes Global No
mysqlx_ssl_key
Yes Yes Yes Global No
Mysqlx_ssl_server_not_after
Yes Global No
Mysqlx_ssl_server_not_before
Yes Global No
Mysqlx_ssl_verify_depth
Yes Global No
Mysqlx_ssl_verify_mode
Yes Global No
Mysqlx_ssl_version
Yes Both No
Mysqlx_stmt_create_collection
Yes Both No
Mysqlx_stmt_create_collection_index
Yes Both No
Mysqlx_stmt_disable_notices
Yes Both No
Mysqlx_stmt_drop_collection
Yes Both No
Mysqlx_stmt_drop_collection_index
Yes Both No
Mysqlx_stmt_enable_notices
Yes Both No
Mysqlx_stmt_ensure_collection
Yes Both No
Mysqlx_stmt_execute_mysqlx
Yes Both No
Mysqlx_stmt_execute_sql
Yes Both No
Mysqlx_stmt_execute_xplugin
Yes Both No
Mysqlx_stmt_kill_client
Yes Both No
Mysqlx_stmt_list_clients
Yes Both No
Mysqlx_stmt_list_notices
Yes Both No
Mysqlx_stmt_list_objects
Yes Both No
Mysqlx_stmt_ping
Yes Both No
Mysqlx_worker_threads
Yes Global No
Mysqlx_worker_threads_active
Yes Global No
named_pipe
Yes Yes Yes Global No
named_pipe_full_access_group
Yes Yes Yes Global No
ndb_allow_copying_alter_table
Yes Yes Yes Both Yes
Ndb_api_adaptive_send_deferred_count
Yes Global No
Ndb_api_adaptive_send_deferred_count_session
Yes Global No
Ndb_api_adaptive_send_deferred_count_slave
Yes Global No
Ndb_api_adaptive_send_forced_count
Yes Global No
Ndb_api_adaptive_send_forced_count_session
Yes Global No
Ndb_api_adaptive_send_forced_count_slave
Yes Global No
Ndb_api_adaptive_send_unforced_count
Yes Global No
Ndb_api_adaptive_send_unforced_count_session
Yes Global No
Ndb_api_adaptive_send_unforced_count_slave
Yes Global No
Ndb_api_bytes_received_count
Yes Global No
Ndb_api_bytes_received_count_session
Yes Session No
Ndb_api_bytes_received_count_slave
Yes Global No
Ndb_api_bytes_sent_count
Yes Global No
Ndb_api_bytes_sent_count_session
Yes Session No
Ndb_api_bytes_sent_count_slave
Yes Global No
Ndb_api_event_bytes_count
Yes Global No
Ndb_api_event_bytes_count_injector
Yes Global No
Ndb_api_event_data_count
Yes Global No
Ndb_api_event_data_count_injector
Yes Global No
Ndb_api_event_nondata_count
Yes Global No
Ndb_api_event_nondata_count_injector
Yes Global No
Ndb_api_pk_op_count
Yes Global No
Ndb_api_pk_op_count_session
Yes Session No
Ndb_api_pk_op_count_slave
Yes Global No
Ndb_api_pruned_scan_count
Yes Global No
Ndb_api_pruned_scan_count_session
Yes Session No
Ndb_api_pruned_scan_count_slave
Yes Global No
Ndb_api_range_scan_count
Yes Global No
Ndb_api_range_scan_count_session
Yes Session No
Ndb_api_range_scan_count_slave
Yes Global No
Ndb_api_read_row_count
Yes Global No
Ndb_api_read_row_count_session
Yes Session No
Ndb_api_read_row_count_slave
Yes Global No
Ndb_api_scan_batch_count
Yes Global No
Ndb_api_scan_batch_count_session
Yes Session No
Ndb_api_scan_batch_count_slave
Yes Global No
Ndb_api_table_scan_count
Yes Global No
Ndb_api_table_scan_count_session
Yes Session No
Ndb_api_table_scan_count_slave
Yes Global No
Ndb_api_trans_abort_count
Yes Global No
Ndb_api_trans_abort_count_session
Yes Session No
Ndb_api_trans_abort_count_slave
Yes Global No
Ndb_api_trans_close_count
Yes Global No
Ndb_api_trans_close_count_session
Yes Session No
Ndb_api_trans_close_count_slave
Yes Global No
Ndb_api_trans_commit_count
Yes Global No
Ndb_api_trans_commit_count_session
Yes Session No
Ndb_api_trans_commit_count_slave
Yes Global No
Ndb_api_trans_local_read_row_count
Yes Global No
Ndb_api_trans_local_read_row_count_session
Yes Session No
Ndb_api_trans_local_read_row_count_slave
Yes Global No
Ndb_api_trans_start_count
Yes Global No
Ndb_api_trans_start_count_session
Yes Session No
Ndb_api_trans_start_count_slave
Yes Global No
Ndb_api_uk_op_count
Yes Global No
Ndb_api_uk_op_count_session
Yes Session No
Ndb_api_uk_op_count_slave
Yes Global No
Ndb_api_wait_exec_complete_count
Yes Global No
Ndb_api_wait_exec_complete_count_session
Yes Session No
Ndb_api_wait_exec_complete_count_slave
Yes Global No
Ndb_api_wait_meta_request_count
Yes Global No
Ndb_api_wait_meta_request_count_session
Yes Session No
Ndb_api_wait_meta_request_count_slave
Yes Global No
Ndb_api_wait_nanos_count
Yes Global No
Ndb_api_wait_nanos_count_session
Yes Session No
Ndb_api_wait_nanos_count_slave
Yes Global No
Ndb_api_wait_scan_result_count
Yes Global No
Ndb_api_wait_scan_result_count_session
Yes Session No
Ndb_api_wait_scan_result_count_slave
Yes Global No
ndb_autoincrement_prefetch_sz
Yes Yes Yes Both Yes
ndb_batch_size
Yes Yes Yes Both Yes
ndb_blob_read_batch_bytes
Yes Yes Yes Both Yes
ndb_blob_write_batch_bytes
Yes Yes Yes Both Yes
ndb_cache_check_time
Yes Yes Yes Global Yes
ndb_clear_apply_status
Yes Yes Global Yes
ndb_cluster_connection_pool
Yes Yes Yes Global No
ndb_cluster_connection_pool_nodeids
Yes Yes Yes Global No
Ndb_cluster_node_id
Yes Global No
Ndb_config_from_host
Yes Both No
Ndb_config_from_port
Yes Both No
Ndb_conflict_fn_epoch
Yes Global No
Ndb_conflict_fn_epoch_trans
Yes Global No
Ndb_conflict_fn_epoch2
Yes Global No
Ndb_conflict_fn_epoch2_trans
Yes Global No
Ndb_conflict_fn_max
Yes Global No
Ndb_conflict_fn_max_del_win
Yes Global No
Ndb_conflict_fn_old
Yes Global No
Ndb_conflict_last_conflict_epoch
Yes Global No
Ndb_conflict_last_stable_epoch
Yes Global No
Ndb_conflict_reflected_op_discard_count
Yes Global No
Ndb_conflict_reflected_op_prepare_count
Yes Global No
Ndb_conflict_refresh_op_count
Yes Global No
Ndb_conflict_trans_conflict_commit_count
Yes Global No
Ndb_conflict_trans_detect_iter_count
Yes Global No
Ndb_conflict_trans_reject_count
Yes Global No
Ndb_conflict_trans_row_conflict_count
Yes Global No
Ndb_conflict_trans_row_reject_count
Yes Global No
ndb-connectstring
Yes Yes
ndb_data_node_neighbour
Yes Yes Yes Global Yes
ndb_default_column_format
Yes Yes Yes Global Yes
ndb_default_column_format
Yes Yes Yes Global Yes
ndb_deferred_constraints
Yes Yes Yes Both Yes
ndb_deferred_constraints
Yes Yes Yes Both Yes
ndb_distribution
Yes Yes Yes Global Yes
ndb_distribution
Yes Yes Yes Global Yes
Ndb_epoch_delete_delete_count
Yes Global No
ndb_eventbuffer_free_percent
Yes Yes Yes Global Yes
ndb_eventbuffer_max_alloc
Yes Yes Yes Global Yes
Ndb_execute_count
Yes Global No
ndb_extra_logging
Yes Yes Yes Global Yes
ndb_force_send
Yes Yes Yes Both Yes
ndb_fully_replicated
Yes Yes Yes Both Yes
ndb_index_stat_enable
Yes Yes Yes Both Yes
ndb_index_stat_option
Yes Yes Yes Both Yes
ndb_join_pushdown
Yes Both Yes
Ndb_last_commit_epoch_server
Yes Global No
Ndb_last_commit_epoch_session
Yes Session No
ndb_log_apply_status
Yes Yes Yes Global No
ndb_log_apply_status
Yes Yes Yes Global No
ndb_log_bin
Yes Yes Both No
ndb_log_binlog_index
Yes Yes Global Yes
ndb_log_empty_epochs
Yes Yes Yes Global Yes
ndb_log_empty_epochs
Yes Yes Yes Global Yes
ndb_log_empty_update
Yes Yes Yes Global Yes
ndb_log_empty_update
Yes Yes Yes Global Yes
ndb_log_exclusive_reads
Yes Yes Yes Both Yes
ndb_log_exclusive_reads
Yes Yes Yes Both Yes
ndb_log_fail_terminate
Yes Yes Yes Global No
ndb_log_orig
Yes Yes Yes Global No
ndb_log_orig
Yes Yes Yes Global No
ndb_log_transaction_id
Yes Yes Yes Global No
ndb_log_transaction_id
Yes Global No
ndb_log_update_as_write
Yes Yes Yes Global Yes
ndb_log_update_minimal
Yes Yes Yes Global Yes
ndb_log_updated_only
Yes Yes Yes Global Yes
ndb-mgmd-host
Yes Yes
ndb_nodeid
Yes Yes Yes Global No
Ndb_number_of_data_nodes
Yes Global No
ndb_optimization_delay
Yes Yes Yes Global Yes
ndb-optimized-node-selection
Yes
ndb_optimized_node_selection
Yes Yes Yes Global No
Ndb_pruned_scan_count
Yes Global No
Ndb_pushed_queries_defined
Yes Global No
Ndb_pushed_queries_dropped
Yes Global No
Ndb_pushed_queries_executed
Yes Global No
Ndb_pushed_reads
Yes Global No
ndb_read_backup
Yes Yes Yes Global Yes
ndb_recv_thread_activation_threshold
Yes Yes Yes Global Yes
ndb_recv_thread_cpu_mask
Yes Yes Yes Global Yes
ndb_report_thresh_binlog_epoch_slip
Yes Yes Yes Global Yes
ndb_report_thresh_binlog_mem_usage
Yes Yes Yes Global Yes
ndb_row_checksum
Yes Both Yes
Ndb_scan_count
Yes Global No
ndb_show_foreign_key_mock_tables
Yes Yes Yes Global Yes
ndb_slave_conflict_role
Yes Yes Yes Global Yes
Ndb_slave_max_replicated_epoch
Yes Global No
Ndb_system_name
Yes Global No
ndb_table_no_logging
Yes Session Yes
ndb_table_temporary
Yes Session Yes
ndb-transid-mysql-connection-map
Yes
ndb_use_copying_alter_table
Yes Both No
ndb_use_exact_count
Yes Both Yes
ndb_use_transactions
Yes Yes Yes Both Yes
ndb_version
Yes Global No
ndb_version_string
Yes Global No
ndb_wait_connected
Yes Yes Yes Global No
ndb_wait_setup
Yes Yes Yes Global No
ndbcluster
Yes Yes
ndbinfo_database
Yes Global No
ndbinfo_max_bytes
Yes Yes Both Yes
ndbinfo_max_rows
Yes Yes Both Yes
ndbinfo_offline
Yes Global Yes
ndbinfo_show_hidden
Yes Yes Both Yes
ndbinfo_table_prefix
Yes Global No
ndbinfo_version
Yes Global No
net_buffer_length
Yes Yes Yes Both Yes
net_read_timeout
Yes Yes Yes Both Yes
net_retry_count
Yes Yes Yes Both Yes
net_write_timeout
Yes Yes Yes Both Yes
new
Yes Yes Yes Both Yes
ngram_token_size
Yes Yes Yes Global No
no-defaults
Yes
Not_flushed_delayed_rows
Yes Global No
offline_mode
Yes Yes Yes Global Yes
old
Yes Yes Yes Global No
old_alter_table
Yes Yes Yes Both Yes
old_passwords
Yes Yes Yes Both Yes
old-style-user-limits
Yes Yes
Ongoing_anonymous_gtid_violating_transaction_count
Yes Global No
Ongoing_anonymous_transaction_count
Yes Global No
Ongoing_automatic_gtid_violating_transaction_count
Yes Global No
Open_files
Yes Global No
open_files_limit
Yes Yes Yes Global No
Open_streams
Yes Global No
Open_table_definitions
Yes Global No
Open_tables
Yes Both No
Opened_files
Yes Global No
Opened_table_definitions
Yes Both No
Opened_tables
Yes Both No
optimizer_prune_level
Yes Yes Yes Both Yes
optimizer_search_depth
Yes Yes Yes Both Yes
optimizer_switch
Yes Yes Yes Both Yes
optimizer_trace
Yes Yes Yes Both Yes
optimizer_trace_features
Yes Yes Yes Both Yes
optimizer_trace_limit
Yes Yes Yes Both Yes
optimizer_trace_max_mem_size
Yes Yes Yes Both Yes
optimizer_trace_offset
Yes Yes Yes Both Yes
parser_max_mem_size
Yes Yes Yes Both Yes
partition
Yes Yes
performance_schema
Yes Yes Yes Global No
Performance_schema_accounts_lost
Yes Global No
performance_schema_accounts_size
Yes Yes Yes Global No
Performance_schema_cond_classes_lost
Yes Global No
Performance_schema_cond_instances_lost
Yes Global No
performance-schema-consumer-events-stages-current
Yes Yes
performance-schema-consumer-events-stages-history
Yes Yes
performance-schema-consumer-events-stages-history-long
Yes Yes
performance-schema-consumer-events-statements-current
Yes Yes
performance-schema-consumer-events-statements-history
Yes Yes
performance-schema-consumer-events-statements-history-long
Yes Yes
performance-schema-consumer-events-transactions-current
Yes Yes
performance-schema-consumer-events-transactions-history
Yes Yes
performance-schema-consumer-events-transactions-history-long
Yes Yes
performance-schema-consumer-events-waits-current
Yes Yes
performance-schema-consumer-events-waits-history
Yes Yes
performance-schema-consumer-events-waits-history-long
Yes Yes
performance-schema-consumer-global-instrumentation
Yes Yes
performance-schema-consumer-statements-digest
Yes Yes
performance-schema-consumer-thread-instrumentation
Yes Yes
Performance_schema_digest_lost
Yes Global No
performance_schema_digests_size
Yes Yes Yes Global No
performance_schema_events_stages_history_long_size
Yes Yes Yes Global No
performance_schema_events_stages_history_size
Yes Yes Yes Global No
performance_schema_events_statements_history_long_size
Yes Yes Yes Global No
performance_schema_events_statements_history_size
Yes Yes Yes Global No
performance_schema_events_transactions_history_long_size
Yes Yes Yes Global No
performance_schema_events_transactions_history_size
Yes Yes Yes Global No
performance_schema_events_waits_history_long_size
Yes Yes Yes Global No
performance_schema_events_waits_history_size
Yes Yes Yes Global No
Performance_schema_file_classes_lost
Yes Global No
Performance_schema_file_handles_lost
Yes Global No
Performance_schema_file_instances_lost
Yes Global No
Performance_schema_hosts_lost
Yes Global No
performance_schema_hosts_size
Yes Yes Yes Global No
Performance_schema_index_stat_lost
Yes Global No
performance-schema-instrument
Yes Yes
Performance_schema_locker_lost
Yes Global No
performance_schema_max_cond_classes
Yes Yes Yes Global No
performance_schema_max_cond_instances
Yes Yes Yes Global No
performance_schema_max_digest_length
Yes Yes Yes Global No
performance_schema_max_file_classes
Yes Yes Yes Global No
performance_schema_max_file_handles
Yes Yes Yes Global No
performance_schema_max_file_instances
Yes Yes Yes Global No
performance_schema_max_index_stat
Yes Yes Yes Global No
performance_schema_max_memory_classes
Yes Yes Yes Global No
performance_schema_max_metadata_locks
Yes Yes Yes Global No
performance_schema_max_mutex_classes
Yes Yes Yes Global No
performance_schema_max_mutex_instances
Yes Yes Yes Global No
performance_schema_max_prepared_statements_instances
Yes Yes Yes Global No
performance_schema_max_program_instances
Yes Yes Yes Global No
performance_schema_max_rwlock_classes
Yes Yes Yes Global No
performance_schema_max_rwlock_instances
Yes Yes Yes Global No
performance_schema_max_socket_classes
Yes Yes Yes Global No
performance_schema_max_socket_instances
Yes Yes Yes Global No
performance_schema_max_sql_text_length
Yes Yes Yes Global No
performance_schema_max_stage_classes
Yes Yes Yes Global No
performance_schema_max_statement_classes
Yes Yes Yes Global No
performance_schema_max_statement_stack
Yes Yes Yes Global No
performance_schema_max_table_handles
Yes Yes Yes Global No
performance_schema_max_table_instances
Yes Yes Yes Global No
performance_schema_max_table_lock_stat
Yes Yes Yes Global No
performance_schema_max_thread_classes
Yes Yes Yes Global No
performance_schema_max_thread_instances
Yes Yes Yes Global No
Performance_schema_memory_classes_lost
Yes Global No
Performance_schema_metadata_lock_lost
Yes Global No
Performance_schema_mutex_classes_lost
Yes Global No
Performance_schema_mutex_instances_lost
Yes Global No
Performance_schema_nested_statement_lost
Yes Global No
Performance_schema_prepared_statements_lost
Yes Global No
Performance_schema_program_lost
Yes Global No
Performance_schema_rwlock_classes_lost
Yes Global No
Performance_schema_rwlock_instances_lost
Yes Global No
Performance_schema_session_connect_attrs_lost
Yes Global No
performance_schema_session_connect_attrs_size
Yes Yes Yes Global No
performance_schema_setup_actors_size
Yes Yes Yes Global No
performance_schema_setup_objects_size
Yes Yes Yes Global No
performance_schema_show_processlist
Yes Yes Yes Global Yes
Performance_schema_socket_classes_lost
Yes Global No
Performance_schema_socket_instances_lost
Yes Global No
Performance_schema_stage_classes_lost
Yes Global No
Performance_schema_statement_classes_lost
Yes Global No
Performance_schema_table_handles_lost
Yes Global No
Performance_schema_table_instances_lost
Yes Global No
Performance_schema_table_lock_stat_lost
Yes Global No
Performance_schema_thread_classes_lost
Yes Global No
Performance_schema_thread_instances_lost
Yes Global No
Performance_schema_users_lost
Yes Global No
performance_schema_users_size
Yes Yes Yes Global No
pid_file
Yes Yes Yes Global No
plugin_dir
Yes Yes Yes Global No
plugin-load
Yes Yes
plugin-load-add
Yes Yes
plugin-xxx
Yes Yes
port
Yes Yes Yes Global No
port-open-timeout
Yes Yes
preload_buffer_size
Yes Yes Yes Both Yes
Prepared_stmt_count
Yes Global No
print-defaults
Yes
profiling
Yes Both Yes
profiling_history_size
Yes Yes Yes Both Yes
protocol_version
Yes Global No
proxy_user
Yes Session No
pseudo_slave_mode
Yes Session Yes
pseudo_thread_id
Yes Session Yes
Qcache_free_blocks
Yes Global No
Qcache_free_memory
Yes Global No
Qcache_hits
Yes Global No
Qcache_inserts
Yes Global No
Qcache_lowmem_prunes
Yes Global No
Qcache_not_cached
Yes Global No
Qcache_queries_in_cache
Yes Global No
Qcache_total_blocks
Yes Global No
Queries
Yes Both No
query_alloc_block_size
Yes Yes Yes Both Yes
query_cache_limit
Yes Yes Yes Global Yes
query_cache_min_res_unit
Yes Yes Yes Global Yes
query_cache_size
Yes Yes Yes Global Yes
query_cache_type
Yes Yes Yes Both Yes
query_cache_wlock_invalidate
Yes Yes Yes Both Yes
query_prealloc_size
Yes Yes Yes Both Yes
Questions
Yes Both No
rand_seed1
Yes Session Yes
rand_seed2
Yes Session Yes
range_alloc_block_size
Yes Yes Yes Both Yes
range_optimizer_max_mem_size
Yes Yes Yes Both Yes
rbr_exec_mode
Yes Session Yes
read_buffer_size
Yes Yes Yes Both Yes
read_only
Yes Yes Yes Global Yes
read_rnd_buffer_size
Yes Yes Yes Both Yes
relay_log
Yes Yes Yes Global No
relay_log_basename
Yes Global No
relay_log_index
Yes Yes Yes Global No
relay_log_info_file
Yes Yes Yes Global No
relay_log_info_repository
Yes Yes Yes Global Yes
relay_log_purge
Yes Yes Yes Global Yes
relay_log_recovery
Yes Yes Yes Global No
relay_log_space_limit
Yes Yes Yes Global No
remove
Yes
replicate-do-db
Yes Yes
replicate-do-table
Yes Yes
replicate-ignore-db
Yes Yes
replicate-ignore-table
Yes Yes
replicate-rewrite-db
Yes Yes
replicate-same-server-id
Yes Yes
replicate-wild-do-table
Yes Yes
replicate-wild-ignore-table
Yes Yes
replication_optimize_for_static_plugin_config
Yes Yes Yes Global Yes
replication_sender_observe_commit_only
Yes Yes Yes Global Yes
report_host
Yes Yes Yes Global No
report_password
Yes Yes Yes Global No
report_port
Yes Yes Yes Global No
report_user
Yes Yes Yes Global No
require_secure_transport
Yes Yes Yes Global Yes
rewriter_enabled
Yes Global Yes
Rewriter_number_loaded_rules
Yes Global No
Rewriter_number_reloads
Yes Global No
Rewriter_number_rewritten_queries
Yes Global No
Rewriter_reload_error
Yes Global No
rewriter_verbose
Yes Global Yes
Rpl_semi_sync_master_clients
Yes Global No
rpl_semi_sync_master_enabled
Yes Yes Yes Global Yes
Rpl_semi_sync_master_net_avg_wait_time
Yes Global No
Rpl_semi_sync_master_net_wait_time
Yes Global No
Rpl_semi_sync_master_net_waits
Yes Global No
Rpl_semi_sync_master_no_times
Yes Global No
Rpl_semi_sync_master_no_tx
Yes Global No
Rpl_semi_sync_master_status
Yes Global No
Rpl_semi_sync_master_timefunc_failures
Yes Global No
rpl_semi_sync_master_timeout
Yes Yes Yes Global Yes
rpl_semi_sync_master_trace_level
Yes Yes Yes Global Yes
Rpl_semi_sync_master_tx_avg_wait_time
Yes Global No
Rpl_semi_sync_master_tx_wait_time
Yes Global No
Rpl_semi_sync_master_tx_waits
Yes Global No
rpl_semi_sync_master_wait_for_slave_count
Yes Yes Yes Global Yes
rpl_semi_sync_master_wait_no_slave
Yes Yes Yes Global Yes
rpl_semi_sync_master_wait_point
Yes Yes Yes Global Yes
Rpl_semi_sync_master_wait_pos_backtraverse
Yes Global No
Rpl_semi_sync_master_wait_sessions
Yes Global No
Rpl_semi_sync_master_yes_tx
Yes Global No
rpl_semi_sync_slave_enabled
Yes Yes Yes Global Yes
Rpl_semi_sync_slave_status
Yes Global No
rpl_semi_sync_slave_trace_level
Yes Yes Yes Global Yes
rpl_stop_slave_timeout
Yes Yes Yes Global Yes
Rsa_public_key
Yes Global No
safe-user-create
Yes Yes
secure_auth
Yes Yes Yes Global Yes
secure_file_priv
Yes Yes Yes Global No
Select_full_join
Yes Both No
Select_full_range_join
Yes Both No
Select_range
Yes Both No
Select_range_check
Yes Both No
Select_scan
Yes Both No
server_id
Yes Yes Yes Global Yes
server_id_bits
Yes Yes Yes Global No
server_uuid
Yes Global No
session_track_gtids
Yes Yes Yes Both Yes
session_track_schema
Yes Yes Yes Both Yes
session_track_state_change
Yes Yes Yes Both Yes
session_track_system_variables
Yes Yes Yes Both Yes
session_track_transaction_info
Yes Yes Yes Both Yes
sha256_password_auto_generate_rsa_keys
Yes Yes Yes Global No
sha256_password_private_key_path
Yes Yes Yes Global No
sha256_password_proxy_users
Yes Yes Yes Global Yes
sha256_password_public_key_path
Yes Yes Yes Global No
shared_memory
Yes Yes Yes Global No
shared_memory_base_name
Yes Yes Yes Global No
show_compatibility_56
Yes Yes Yes Global Yes
show_create_table_verbosity
Yes Yes Yes Both Yes
show_old_temporals
Yes Yes Yes Both Yes
show-slave-auth-info
Yes Yes
skip-character-set-client-handshake
Yes Yes
skip_external_locking
Yes Yes Yes Global No
skip-grant-tables
Yes Yes
skip-host-cache
Yes Yes
skip_name_resolve
Yes Yes Yes Global No
skip-ndbcluster
Yes Yes
skip_networking
Yes Yes Yes Global No
skip-new
Yes Yes
skip-partition
Yes Yes
skip_show_database
Yes Yes Yes Global No
skip_slave_start
Yes Yes Yes Global No
skip-ssl
Yes Yes
skip-stack-trace
Yes Yes
slave_allow_batching
Yes Yes Yes Global Yes
slave_checkpoint_group
Yes Yes Yes Global Yes
slave_checkpoint_period
Yes Yes Yes Global Yes
slave_compressed_protocol
Yes Yes Yes Global Yes
slave_exec_mode
Yes Yes Yes Global Yes
Slave_heartbeat_period
Yes Global No
Slave_last_heartbeat
Yes Global No
slave_load_tmpdir
Yes Yes Yes Global No
slave_max_allowed_packet
Yes Yes Yes Global Yes
slave_net_timeout
Yes Yes Yes Global Yes
Slave_open_temp_tables
Yes Global No
slave_parallel_type
Yes Yes Yes Global Yes
slave_parallel_workers
Yes Yes Yes Global Yes
slave_pending_jobs_size_max
Yes Yes Yes Global Yes
slave_preserve_commit_order
Yes Yes Yes Global Yes
Slave_received_heartbeats
Yes Global No
Slave_retried_transactions
Yes Global No
Slave_rows_last_search_algorithm_used
Yes Global No
slave_rows_search_algorithms
Yes Yes Yes Global Yes
Slave_running
Yes Global No
slave_skip_errors
Yes Yes Yes Global No
slave-sql-verify-checksum
Yes Yes
slave_sql_verify_checksum
Yes Yes Yes Global Yes
slave_transaction_retries
Yes Yes Yes Global Yes
slave_type_conversions
Yes Yes Yes Global Yes
Slow_launch_threads
Yes Both No
slow_launch_time
Yes Yes Yes Global Yes
Slow_queries
Yes Both No
slow_query_log
Yes Yes Yes Global Yes
slow_query_log_file
Yes Yes Yes Global Yes
slow-start-timeout
Yes Yes
socket
Yes Yes Yes Global No
sort_buffer_size
Yes Yes Yes Both Yes
Sort_merge_passes
Yes Both No
Sort_range
Yes Both No
Sort_rows
Yes Both No
Sort_scan
Yes Both No
sporadic-binlog-dump-fail
Yes Yes
sql_auto_is_null
Yes Both Yes
sql_big_selects
Yes Both Yes
sql_buffer_result
Yes Both Yes
sql_log_bin
Yes Session Yes
sql_log_off
Yes Both Yes
sql_mode
Yes Yes Yes Both Yes
sql_notes
Yes Both Yes
sql_quote_show_create
Yes Both Yes
sql_safe_updates
Yes Both Yes
sql_select_limit
Yes Both Yes
sql_slave_skip_counter
Yes Global Yes
sql_warnings
Yes Both Yes
ssl
Yes Yes
Ssl_accept_renegotiates
Yes Global No
Ssl_accepts
Yes Global No
ssl_ca
Yes Yes Yes Global No
Ssl_callback_cache_hits
Yes Global No
ssl_capath
Yes Yes Yes Global No
ssl_cert
Yes Yes Yes Global No
Ssl_cipher
Yes Both No
ssl_cipher
Yes Yes Yes Global No
Ssl_cipher_list
Yes Both No
Ssl_client_connects
Yes Global No
Ssl_connect_renegotiates
Yes Global No
ssl_crl
Yes Yes Yes Global No
ssl_crlpath
Yes Yes Yes Global No
Ssl_ctx_verify_depth
Yes Global No
Ssl_ctx_verify_mode
Yes Global No
Ssl_default_timeout
Yes Both No
Ssl_finished_accepts
Yes Global No
Ssl_finished_connects
Yes Global No
ssl_key
Yes Yes Yes Global No
Ssl_server_not_after
Yes Both No
Ssl_server_not_before
Yes Both No
Ssl_session_cache_hits
Yes Global No
Ssl_session_cache_misses
Yes Global No
Ssl_session_cache_mode
Yes Global No
Ssl_session_cache_overflows
Yes Global No
Ssl_session_cache_size
Yes Global No
Ssl_session_cache_timeouts
Yes Global No
Ssl_sessions_reused
Yes Session No
Ssl_used_session_cache_entries
Yes Global No
Ssl_verify_depth
Yes Both No
Ssl_verify_mode
Yes Both No
Ssl_version
Yes Both No
standalone
Yes Yes
stored_program_cache
Yes Yes Yes Global Yes
super-large-pages
Yes Yes
super_read_only
Yes Yes Yes Global Yes
symbolic-links
Yes Yes
sync_binlog
Yes Yes Yes Global Yes
sync_frm
Yes Yes Yes Global Yes
sync_master_info
Yes Yes Yes Global Yes
sync_relay_log
Yes Yes Yes Global Yes
sync_relay_log_info
Yes Yes Yes Global Yes
sysdate-is-now
Yes Yes
system_time_zone
Yes Global No
table_definition_cache
Yes Yes Yes Global Yes
Table_locks_immediate
Yes Global No
Table_locks_waited
Yes Global No
table_open_cache
Yes Yes Yes Global Yes
Table_open_cache_hits
Yes Both No
table_open_cache_instances
Yes Yes Yes Global No
Table_open_cache_misses
Yes Both No
Table_open_cache_overflows
Yes Both No
tc-heuristic-recover
Yes Yes
Tc_log_max_pages_used
Yes Global No
Tc_log_page_size
Yes Global No
Tc_log_page_waits
Yes Global No
temp-pool
Yes Yes
thread_cache_size
Yes Yes Yes Global Yes
thread_handling
Yes Yes Yes Global No
thread_pool_algorithm
Yes Yes Yes Global No
thread_pool_high_priority_connection
Yes Yes Yes Both Yes
thread_pool_max_unused_threads
Yes Yes Yes Global Yes
thread_pool_prio_kickup_timer
Yes Yes Yes Global Yes
thread_pool_size
Yes Yes Yes Global No
thread_pool_stall_limit
Yes Yes Yes Global Yes
thread_stack
Yes Yes Yes Global No
Threads_cached
Yes Global No
Threads_connected
Yes Global No
Threads_created
Yes Global No
Threads_running
Yes Global No
time_format
Yes Global No
time_zone
Yes Both Yes
timestamp
Yes Session Yes
tls_version
Yes Yes Yes Global No
tmp_table_size
Yes Yes Yes Both Yes
tmpdir
Yes Yes Yes Global No
transaction_alloc_block_size
Yes Yes Yes Both Yes
transaction_allow_batching
Yes Session Yes
transaction_isolation
Yes Yes Both Yes
Variable: tx_isolation
Yes Both Yes
transaction_prealloc_size
Yes Yes Yes Both Yes
transaction_read_only
Yes Yes Both Yes
Variable: tx_read_only
Yes Both Yes
transaction_write_set_extraction
Yes Yes Yes Both Yes
tx_isolation
Yes Both Yes
tx_read_only
Yes Both Yes
unique_checks
Yes Both Yes
updatable_views_with_limit
Yes Yes Yes Both Yes
Uptime
Yes Global No
Uptime_since_flush_status
Yes Global No
user
Yes Yes
validate-password
Yes Yes
validate_password_check_user_name
Yes Yes Yes Global Yes
validate_password_dictionary_file
Yes Yes Yes Global Varies
validate_password_dictionary_file_last_parsed
Yes Global No
validate_password_dictionary_file_words_count
Yes Global No
validate_password_length
Yes Yes Yes Global Yes
validate_password_mixed_case_count
Yes Yes Yes Global Yes
validate_password_number_count
Yes Yes Yes Global Yes
validate_password_policy
Yes Yes Yes Global Yes
validate_password_special_char_count
Yes Yes Yes Global Yes
validate-user-plugins
Yes Yes
verbose
Yes Yes
version
Yes Global No
version_comment
Yes Global No
version_compile_machine
Yes Global No
version_compile_os
Yes Global No
version_tokens_session
Yes Yes Yes Both Yes
version_tokens_session_number
Yes Yes Yes Both No
wait_timeout
Yes Yes Yes Both Yes
warning_count
Yes Session No
Notes: 1. This option is dynamic, but should be set only by server. You should not set this variable manually.
File: manual.info.tmp, Node: server-system-variable-reference, Next: server-status-variable-reference, Prev: server-option-variable-reference, Up: mysqld-server
The following table lists all system variables applicable within 'mysqld'.
The table lists command-line options (Cmd-line), options valid in configuration files (Option file), server system variables (System Var), and status variables (Status var) in one unified list, with an indication of where each option or variable is valid. If a server option set on the command line or in an option file differs from the name of the corresponding system variable, the variable name is noted immediately below the corresponding option. The scope of the variable (Var Scope) is Global, Session, or both. Please see the corresponding item descriptions for details on setting and using the variables. Where appropriate, direct links to further information about the items are provided.
System Variable Summary
Name Cmd-Line Option System Var Scope Dynamic File Var
audit_log_buffer_size
Yes Yes Yes Global No
audit_log_compression
Yes Yes Yes Global No
audit_log_connection_policy
Yes Yes Yes Global Yes
audit_log_current_session
Yes Both No
audit_log_disable
Yes Yes Yes Global Yes
audit_log_encryption
Yes Yes Yes Global No
audit_log_exclude_accounts
Yes Yes Yes Global Yes
audit_log_file
Yes Yes Yes Global No
audit_log_filter_id
Yes Both No
audit_log_flush
Yes Global Yes
audit_log_format
Yes Yes Yes Global No
audit_log_format_unix_timestamp
Yes Yes Yes Global Yes
audit_log_include_accounts
Yes Yes Yes Global Yes
audit_log_policy
Yes Yes Yes Global No
audit_log_read_buffer_size
Yes Yes Yes Varies Varies
audit_log_rotate_on_size
Yes Yes Yes Global Yes
audit_log_statement_policy
Yes Yes Yes Global Yes
audit_log_strategy
Yes Yes Yes Global No
authentication_ldap_sasl_auth_method_name
Yes Yes Yes Global Yes
authentication_ldap_sasl_bind_base_dn
Yes Yes Yes Global Yes
authentication_ldap_sasl_bind_root_dn
Yes Yes Yes Global Yes
authentication_ldap_sasl_bind_root_pwd
Yes Yes Yes Global Yes
authentication_ldap_sasl_ca_path
Yes Yes Yes Global Yes
authentication_ldap_sasl_group_search_attr
Yes Yes Yes Global Yes
authentication_ldap_sasl_group_search_filter
Yes Yes Yes Global Yes
authentication_ldap_sasl_init_pool_size
Yes Yes Yes Global Yes
authentication_ldap_sasl_log_status
Yes Yes Yes Global Yes
authentication_ldap_sasl_max_pool_size
Yes Yes Yes Global Yes
authentication_ldap_sasl_server_host
Yes Yes Yes Global Yes
authentication_ldap_sasl_server_port
Yes Yes Yes Global Yes
authentication_ldap_sasl_tls
Yes Yes Yes Global Yes
authentication_ldap_sasl_user_search_attr
Yes Yes Yes Global Yes
authentication_ldap_simple_auth_method_name
Yes Yes Yes Global Yes
authentication_ldap_simple_bind_base_dn
Yes Yes Yes Global Yes
authentication_ldap_simple_bind_root_dn
Yes Yes Yes Global Yes
authentication_ldap_simple_bind_root_pwd
Yes Yes Yes Global Yes
authentication_ldap_simple_ca_path
Yes Yes Yes Global Yes
authentication_ldap_simple_group_search_attr
Yes Yes Yes Global Yes
authentication_ldap_simple_group_search_filter
Yes Yes Yes Global Yes
authentication_ldap_simple_init_pool_size
Yes Yes Yes Global Yes
authentication_ldap_simple_log_status
Yes Yes Yes Global Yes
authentication_ldap_simple_max_pool_size
Yes Yes Yes Global Yes
authentication_ldap_simple_server_host
Yes Yes Yes Global Yes
authentication_ldap_simple_server_port
Yes Yes Yes Global Yes
authentication_ldap_simple_tls
Yes Yes Yes Global Yes
authentication_ldap_simple_user_search_attr
Yes Yes Yes Global Yes
authentication_windows_log_level
Yes Yes Yes Global No
authentication_windows_use_principal_name
Yes Yes Yes Global No
auto_generate_certs
Yes Yes Yes Global No
auto_increment_increment
Yes Yes Yes Both Yes
auto_increment_offset
Yes Yes Yes Both Yes
autocommit
Yes Yes Yes Both Yes
automatic_sp_privileges
Yes Yes Yes Global Yes
avoid_temporal_upgrade
Yes Yes Yes Global Yes
back_log
Yes Yes Yes Global No
basedir
Yes Yes Yes Global No
big_tables
Yes Yes Yes Both Yes
bind_address
Yes Yes Yes Global No
binlog_cache_size
Yes Yes Yes Global Yes
binlog_checksum
Yes Yes Yes Global Yes
binlog_direct_non_transactional_updates
Yes Yes Yes Both Yes
binlog_error_action
Yes Yes Yes Global Yes
binlog_format
Yes Yes Yes Both Yes
binlog_group_commit_sync_delay
Yes Yes Yes Global Yes
binlog_group_commit_sync_no_delay_count
Yes Yes Yes Global Yes
binlog_gtid_simple_recovery
Yes Yes Yes Global No
binlog_max_flush_queue_time
Yes Yes Yes Global Yes
binlog_order_commits
Yes Yes Yes Global Yes
binlog_row_image
Yes Yes Yes Both Yes
binlog_rows_query_log_events
Yes Yes Yes Both Yes
binlog_stmt_cache_size
Yes Yes Yes Global Yes
binlog_transaction_dependency_history_size
Yes Yes Yes Global Yes
binlog_transaction_dependency_tracking
Yes Yes Yes Global Yes
block_encryption_mode
Yes Yes Yes Both Yes
bulk_insert_buffer_size
Yes Yes Yes Both Yes
character_set_client
Yes Both Yes
character_set_connection
Yes Both Yes
character_set_database (note 1)
Yes Both Yes
character_set_filesystem
Yes Yes Yes Both Yes
character_set_results
Yes Both Yes
character_set_server
Yes Yes Yes Both Yes
character_set_system
Yes Global No
character_sets_dir
Yes Yes Yes Global No
check_proxy_users
Yes Yes Yes Global Yes
collation_connection
Yes Both Yes
collation_database (note 1)
Yes Both Yes
collation_server
Yes Yes Yes Both Yes
completion_type
Yes Yes Yes Both Yes
concurrent_insert
Yes Yes Yes Global Yes
connect_timeout
Yes Yes Yes Global Yes
connection_control_failed_connections_threshold
Yes Yes Yes Global Yes
connection_control_max_connection_delay
Yes Yes Yes Global Yes
connection_control_min_connection_delay
Yes Yes Yes Global Yes
core_file
Yes Global No
daemon_memcached_enable_binlog
Yes Yes Yes Global No
daemon_memcached_engine_lib_name
Yes Yes Yes Global No
daemon_memcached_engine_lib_path
Yes Yes Yes Global No
daemon_memcached_option
Yes Yes Yes Global No
daemon_memcached_r_batch_size
Yes Yes Yes Global No
daemon_memcached_w_batch_size
Yes Yes Yes Global No
datadir
Yes Yes Yes Global No
date_format
Yes Global No
datetime_format
Yes Global No
debug
Yes Yes Yes Both Yes
debug_sync
Yes Session Yes
default_authentication_plugin
Yes Yes Yes Global No
default_password_lifetime
Yes Yes Yes Global Yes
default_storage_engine
Yes Yes Yes Both Yes
default_tmp_storage_engine
Yes Yes Yes Both Yes
default_week_format
Yes Yes Yes Both Yes
delay_key_write
Yes Yes Yes Global Yes
delayed_insert_limit
Yes Yes Yes Global Yes
delayed_insert_timeout
Yes Yes Yes Global Yes
delayed_queue_size
Yes Yes Yes Global Yes
disabled_storage_engines
Yes Yes Yes Global No
disconnect_on_expired_password
Yes Yes Yes Global No
div_precision_increment
Yes Yes Yes Both Yes
end_markers_in_json
Yes Yes Yes Both Yes
enforce_gtid_consistency
Yes Yes Yes Global Varies
eq_range_index_dive_limit
Yes Yes Yes Both Yes
error_count
Yes Session No
event_scheduler
Yes Yes Yes Global Yes
expire_logs_days
Yes Yes Yes Global Yes
explicit_defaults_for_timestamp
Yes Yes Yes Both Yes
external_user
Yes Session No
flush
Yes Yes Yes Global Yes
flush_time
Yes Yes Yes Global Yes
foreign_key_checks
Yes Both Yes
ft_boolean_syntax
Yes Yes Yes Global Yes
ft_max_word_len
Yes Yes Yes Global No
ft_min_word_len
Yes Yes Yes Global No
ft_query_expansion_limit
Yes Yes Yes Global No
ft_stopword_file
Yes Yes Yes Global No
general_log
Yes Yes Yes Global Yes
general_log_file
Yes Yes Yes Global Yes
group_concat_max_len
Yes Yes Yes Both Yes
group_replication_allow_local_disjoint_gtids_join
Yes Yes Yes Global Yes
group_replication_allow_local_lower_version_join
Yes Yes Yes Global Yes
group_replication_auto_increment_increment
Yes Yes Yes Global Yes
group_replication_bootstrap_group
Yes Yes Yes Global Yes
group_replication_components_stop_timeout
Yes Yes Yes Global Yes
group_replication_compression_threshold
Yes Yes Yes Global Yes
group_replication_enforce_update_everywhere_checks
Yes Yes Yes Global Yes
group_replication_exit_state_action
Yes Yes Yes Global Yes
group_replication_flow_control_applier_threshold
Yes Yes Yes Global Yes
group_replication_flow_control_certifier_threshold
Yes Yes Yes Global Yes
group_replication_flow_control_mode
Yes Yes Yes Global Yes
group_replication_force_members
Yes Yes Yes Global Yes
group_replication_group_name
Yes Yes Yes Global Yes
group_replication_group_seeds
Yes Yes Yes Global Yes
group_replication_gtid_assignment_block_size
Yes Yes Yes Global Yes
group_replication_ip_whitelist
Yes Yes Yes Global Yes
group_replication_local_address
Yes Yes Yes Global Yes
group_replication_member_weight
Yes Yes Yes Global Yes
group_replication_poll_spin_loops
Yes Yes Yes Global Yes
group_replication_recovery_complete_at
Yes Yes Yes Global Yes
group_replication_recovery_reconnect_interval
Yes Yes Yes Global Yes
group_replication_recovery_retry_count
Yes Yes Yes Global Yes
group_replication_recovery_ssl_ca
Yes Yes Yes Global Yes
group_replication_recovery_ssl_capath
Yes Yes Yes Global Yes
group_replication_recovery_ssl_cert
Yes Yes Yes Global Yes
group_replication_recovery_ssl_cipher
Yes Yes Yes Global Yes
group_replication_recovery_ssl_crl
Yes Yes Yes Global Yes
group_replication_recovery_ssl_crlpath
Yes Yes Yes Global Yes
group_replication_recovery_ssl_key
Yes Yes Yes Global Yes
group_replication_recovery_ssl_verify_server_cert
Yes Yes Yes Global Yes
group_replication_recovery_use_ssl
Yes Yes Yes Global Yes
group_replication_single_primary_mode
Yes Yes Yes Global Yes
group_replication_ssl_mode
Yes Yes Yes Global Yes
group_replication_start_on_boot
Yes Yes Yes Global Yes
group_replication_transaction_size_limit
Yes Yes Yes Global Yes
group_replication_unreachable_majority_timeout
Yes Yes Yes Global Yes
gtid_executed
Yes Varies No
gtid_executed_compression_period
Yes Yes Yes Global Yes
gtid_mode
Yes Yes Yes Global Varies
gtid_next
Yes Session Yes
gtid_owned
Yes Both No
gtid_purged
Yes Global Yes
have_compress
Yes Global No
have_crypt
Yes Global No
have_dynamic_loading
Yes Global No
have_geometry
Yes Global No
have_openssl
Yes Global No
have_profiling
Yes Global No
have_query_cache
Yes Global No
have_rtree_keys
Yes Global No
have_ssl
Yes Global No
have_statement_timeout
Yes Global No
have_symlink
Yes Global No
host_cache_size
Yes Yes Yes Global Yes
hostname
Yes Global No
identity
Yes Session Yes
ignore_builtin_innodb
Yes Yes Yes Global No
ignore_db_dirs
Yes Global No
init_connect
Yes Yes Yes Global Yes
init_file
Yes Yes Yes Global No
init_slave
Yes Yes Yes Global Yes
innodb_adaptive_flushing
Yes Yes Yes Global Yes
innodb_adaptive_flushing_lwm
Yes Yes Yes Global Yes
innodb_adaptive_hash_index
Yes Yes Yes Global Yes
innodb_adaptive_hash_index_parts
Yes Yes Yes Global No
innodb_adaptive_max_sleep_delay
Yes Yes Yes Global Yes
innodb_api_bk_commit_interval
Yes Yes Yes Global Yes
innodb_api_disable_rowlock
Yes Yes Yes Global No
innodb_api_enable_binlog
Yes Yes Yes Global No
innodb_api_enable_mdl
Yes Yes Yes Global No
innodb_api_trx_level
Yes Yes Yes Global Yes
innodb_autoextend_increment
Yes Yes Yes Global Yes
innodb_autoinc_lock_mode
Yes Yes Yes Global No
innodb_background_drop_list_empty
Yes Yes Yes Global Yes
innodb_buffer_pool_chunk_size
Yes Yes Yes Global No
innodb_buffer_pool_dump_at_shutdown
Yes Yes Yes Global Yes
innodb_buffer_pool_dump_now
Yes Yes Yes Global Yes
innodb_buffer_pool_dump_pct
Yes Yes Yes Global Yes
innodb_buffer_pool_filename
Yes Yes Yes Global Yes
innodb_buffer_pool_instances
Yes Yes Yes Global No
innodb_buffer_pool_load_abort
Yes Yes Yes Global Yes
innodb_buffer_pool_load_at_startup
Yes Yes Yes Global No
innodb_buffer_pool_load_now
Yes Yes Yes Global Yes
innodb_buffer_pool_size
Yes Yes Yes Global Varies
innodb_change_buffer_max_size
Yes Yes Yes Global Yes
innodb_change_buffering
Yes Yes Yes Global Yes
innodb_change_buffering_debug
Yes Yes Yes Global Yes
innodb_checksum_algorithm
Yes Yes Yes Global Yes
innodb_checksums
Yes Yes Yes Global No
innodb_cmp_per_index_enabled
Yes Yes Yes Global Yes
innodb_commit_concurrency
Yes Yes Yes Global Yes
innodb_compress_debug
Yes Yes Yes Global Yes
innodb_compression_failure_threshold_pct
Yes Yes Yes Global Yes
innodb_compression_level
Yes Yes Yes Global Yes
innodb_compression_pad_pct_max
Yes Yes Yes Global Yes
innodb_concurrency_tickets
Yes Yes Yes Global Yes
innodb_data_file_path
Yes Yes Yes Global No
innodb_data_home_dir
Yes Yes Yes Global No
innodb_deadlock_detect
Yes Yes Yes Global Yes
innodb_default_row_format
Yes Yes Yes Global Yes
innodb_disable_resize_buffer_pool_debug
Yes Yes Yes Global Yes
innodb_disable_sort_file_cache
Yes Yes Yes Global Yes
innodb_doublewrite
Yes Yes Yes Global No
innodb_fast_shutdown
Yes Yes Yes Global Yes
innodb_fil_make_page_dirty_debug
Yes Yes Yes Global Yes
innodb_file_format
Yes Yes Yes Global Yes
innodb_file_format_check
Yes Yes Yes Global No
innodb_file_format_max
Yes Yes Yes Global Yes
innodb_file_per_table
Yes Yes Yes Global Yes
innodb_fill_factor
Yes Yes Yes Global Yes
innodb_flush_log_at_timeout
Yes Yes Yes Global Yes
innodb_flush_log_at_trx_commit
Yes Yes Yes Global Yes
innodb_flush_method
Yes Yes Yes Global No
innodb_flush_neighbors
Yes Yes Yes Global Yes
innodb_flush_sync
Yes Yes Yes Global Yes
innodb_flushing_avg_loops
Yes Yes Yes Global Yes
innodb_force_load_corrupted
Yes Yes Yes Global No
innodb_force_recovery
Yes Yes Yes Global No
innodb_ft_aux_table
Yes Global Yes
innodb_ft_cache_size
Yes Yes Yes Global No
innodb_ft_enable_diag_print
Yes Yes Yes Global Yes
innodb_ft_enable_stopword
Yes Yes Yes Both Yes
innodb_ft_max_token_size
Yes Yes Yes Global No
innodb_ft_min_token_size
Yes Yes Yes Global No
innodb_ft_num_word_optimize
Yes Yes Yes Global Yes
innodb_ft_result_cache_limit
Yes Yes Yes Global Yes
innodb_ft_server_stopword_table
Yes Yes Yes Global Yes
innodb_ft_sort_pll_degree
Yes Yes Yes Global No
innodb_ft_total_cache_size
Yes Yes Yes Global No
innodb_ft_user_stopword_table
Yes Yes Yes Both Yes
innodb_io_capacity
Yes Yes Yes Global Yes
innodb_io_capacity_max
Yes Yes Yes Global Yes
innodb_large_prefix
Yes Yes Yes Global Yes
innodb_limit_optimistic_insert_debug
Yes Yes Yes Global Yes
innodb_lock_wait_timeout
Yes Yes Yes Both Yes
innodb_locks_unsafe_for_binlog
Yes Yes Yes Global No
innodb_log_buffer_size
Yes Yes Yes Global No
innodb_log_checkpoint_now
Yes Yes Yes Global Yes
innodb_log_checksums
Yes Yes Yes Global Yes
innodb_log_compressed_pages
Yes Yes Yes Global Yes
innodb_log_file_size
Yes Yes Yes Global No
innodb_log_files_in_group
Yes Yes Yes Global No
innodb_log_group_home_dir
Yes Yes Yes Global No
innodb_log_write_ahead_size
Yes Yes Yes Global Yes
innodb_lru_scan_depth
Yes Yes Yes Global Yes
innodb_max_dirty_pages_pct
Yes Yes Yes Global Yes
innodb_max_dirty_pages_pct_lwm
Yes Yes Yes Global Yes
innodb_max_purge_lag
Yes Yes Yes Global Yes
innodb_max_purge_lag_delay
Yes Yes Yes Global Yes
innodb_max_undo_log_size
Yes Yes Yes Global Yes
innodb_merge_threshold_set_all_debug
Yes Yes Yes Global Yes
innodb_monitor_disable
Yes Yes Yes Global Yes
innodb_monitor_enable
Yes Yes Yes Global Yes
innodb_monitor_reset
Yes Yes Yes Global Yes
innodb_monitor_reset_all
Yes Yes Yes Global Yes
innodb_numa_interleave
Yes Yes Yes Global No
innodb_old_blocks_pct
Yes Yes Yes Global Yes
innodb_old_blocks_time
Yes Yes Yes Global Yes
innodb_online_alter_log_max_size
Yes Yes Yes Global Yes
innodb_open_files
Yes Yes Yes Global No
innodb_optimize_fulltext_only
Yes Yes Yes Global Yes
innodb_page_cleaners
Yes Yes Yes Global No
innodb_page_size
Yes Yes Yes Global No
innodb_print_all_deadlocks
Yes Yes Yes Global Yes
innodb_purge_batch_size
Yes Yes Yes Global Yes
innodb_purge_rseg_truncate_frequency
Yes Yes Yes Global Yes
innodb_purge_threads
Yes Yes Yes Global No
innodb_random_read_ahead
Yes Yes Yes Global Yes
innodb_read_ahead_threshold
Yes Yes Yes Global Yes
innodb_read_io_threads
Yes Yes Yes Global No
innodb_read_only
Yes Yes Yes Global No
innodb_replication_delay
Yes Yes Yes Global Yes
innodb_rollback_on_timeout
Yes Yes Yes Global No
innodb_rollback_segments
Yes Yes Yes Global Yes
innodb_saved_page_number_debug
Yes Yes Yes Global Yes
innodb_sort_buffer_size
Yes Yes Yes Global No
innodb_spin_wait_delay
Yes Yes Yes Global Yes
innodb_stats_auto_recalc
Yes Yes Yes Global Yes
innodb_stats_include_delete_marked
Yes Yes Yes Global Yes
innodb_stats_method
Yes Yes Yes Global Yes
innodb_stats_on_metadata
Yes Yes Yes Global Yes
innodb_stats_persistent
Yes Yes Yes Global Yes
innodb_stats_persistent_sample_pages
Yes Yes Yes Global Yes
innodb_stats_sample_pages
Yes Yes Yes Global Yes
innodb_stats_transient_sample_pages
Yes Yes Yes Global Yes
innodb_status_output
Yes Yes Yes Global Yes
innodb_status_output_locks
Yes Yes Yes Global Yes
innodb_strict_mode
Yes Yes Yes Both Yes
innodb_support_xa
Yes Yes Yes Both Yes
innodb_sync_array_size
Yes Yes Yes Global No
innodb_sync_debug
Yes Yes Yes Global No
innodb_sync_spin_loops
Yes Yes Yes Global Yes
innodb_table_locks
Yes Yes Yes Both Yes
innodb_temp_data_file_path
Yes Yes Yes Global No
innodb_thread_concurrency
Yes Yes Yes Global Yes
innodb_thread_sleep_delay
Yes Yes Yes Global Yes
innodb_tmpdir
Yes Yes Yes Both Yes
innodb_trx_purge_view_update_only_debug
Yes Yes Yes Global Yes
innodb_trx_rseg_n_slots_debug
Yes Yes Yes Global Yes
innodb_undo_directory
Yes Yes Yes Global No
innodb_undo_log_truncate
Yes Yes Yes Global Yes
innodb_undo_logs
Yes Yes Yes Global Yes
innodb_undo_tablespaces
Yes Yes Yes Global No
innodb_use_native_aio
Yes Yes Yes Global No
innodb_version
Yes Global No
innodb_write_io_threads
Yes Yes Yes Global No
insert_id
Yes Session Yes
interactive_timeout
Yes Yes Yes Both Yes
internal_tmp_disk_storage_engine
Yes Yes Yes Global Yes
join_buffer_size
Yes Yes Yes Both Yes
keep_files_on_create
Yes Yes Yes Both Yes
key_buffer_size
Yes Yes Yes Global Yes
key_cache_age_threshold
Yes Yes Yes Global Yes
key_cache_block_size
Yes Yes Yes Global Yes
key_cache_division_limit
Yes Yes Yes Global Yes
keyring_aws_cmk_id
Yes Yes Yes Global Yes
keyring_aws_conf_file
Yes Yes Yes Global No
keyring_aws_data_file
Yes Yes Yes Global No
keyring_aws_region
Yes Yes Yes Global Yes
keyring_encrypted_file_data
Yes Yes Yes Global Yes
keyring_encrypted_file_password
Yes Yes Yes Global Yes
keyring_file_data
Yes Yes Yes Global Yes
keyring_okv_conf_dir
Yes Yes Yes Global Yes
keyring_operations
Yes Global Yes
language
Yes Yes Yes Global No
large_files_support
Yes Global No
large_page_size
Yes Global No
large_pages
Yes Yes Yes Global No
last_insert_id
Yes Session Yes
lc_messages
Yes Yes Yes Both Yes
lc_messages_dir
Yes Yes Yes Global No
lc_time_names
Yes Yes Yes Both Yes
license
Yes Global No
local_infile
Yes Yes Yes Global Yes
lock_wait_timeout
Yes Yes Yes Both Yes
locked_in_memory
Yes Global No
log_bin
Yes Global No
log_bin_basename
Yes Global No
log_bin_index
Yes Yes Yes Global No
log_bin_trust_function_creators
Yes Yes Yes Global Yes
log_bin_use_v1_row_events
Yes Yes Yes Global Yes
log_builtin_as_identified_by_password
Yes Yes Yes Global Yes
log_error
Yes Yes Yes Global No
log_error_verbosity
Yes Yes Yes Global Yes
log_output
Yes Yes Yes Global Yes
log_queries_not_using_indexes
Yes Yes Yes Global Yes
log_slave_updates
Yes Yes Yes Global No
log_slow_admin_statements
Yes Yes Yes Global Yes
log_slow_slave_statements
Yes Yes Yes Global Yes
log_statements_unsafe_for_binlog
Yes Yes Yes Global Yes
log_syslog
Yes Yes Yes Global Yes
log_syslog_facility
Yes Yes Yes Global Yes
log_syslog_include_pid
Yes Yes Yes Global Yes
log_syslog_tag
Yes Yes Yes Global Yes
log_throttle_queries_not_using_indexes
Yes Yes Yes Global Yes
log_timestamps
Yes Yes Yes Global Yes
log_warnings
Yes Yes Yes Global Yes
long_query_time
Yes Yes Yes Both Yes
low_priority_updates
Yes Yes Yes Both Yes
lower_case_file_system
Yes Global No
lower_case_table_names
Yes Yes Yes Global No
master_info_repository
Yes Yes Yes Global Yes
master_verify_checksum
Yes Yes Yes Global Yes
max_allowed_packet
Yes Yes Yes Both Yes
max_binlog_cache_size
Yes Yes Yes Global Yes
max_binlog_size
Yes Yes Yes Global Yes
max_binlog_stmt_cache_size
Yes Yes Yes Global Yes
max_connect_errors
Yes Yes Yes Global Yes
max_connections
Yes Yes Yes Global Yes
max_delayed_threads
Yes Yes Yes Both Yes
max_digest_length
Yes Yes Yes Global No
max_error_count
Yes Yes Yes Both Yes
max_execution_time
Yes Yes Yes Both Yes
max_heap_table_size
Yes Yes Yes Both Yes
max_insert_delayed_threads
Yes Both Yes
max_join_size
Yes Yes Yes Both Yes
max_length_for_sort_data
Yes Yes Yes Both Yes
max_points_in_geometry
Yes Yes Yes Both Yes
max_prepared_stmt_count
Yes Yes Yes Global Yes
max_relay_log_size
Yes Yes Yes Global Yes
max_seeks_for_key
Yes Yes Yes Both Yes
max_sort_length
Yes Yes Yes Both Yes
max_sp_recursion_depth
Yes Yes Yes Both Yes
max_tmp_tables
Yes Both Yes
max_user_connections
Yes Yes Yes Both Yes
max_write_lock_count
Yes Yes Yes Global Yes
mecab_rc_file
Yes Yes Yes Global No
metadata_locks_cache_size
Yes Yes Yes Global No
metadata_locks_hash_instances
Yes Yes Yes Global No
min_examined_row_limit
Yes Yes Yes Both Yes
multi_range_count
Yes Yes Yes Both Yes
myisam_data_pointer_size
Yes Yes Yes Global Yes
myisam_max_sort_file_size
Yes Yes Yes Global Yes
myisam_mmap_size
Yes Yes Yes Global No
myisam_recover_options
Yes Yes Yes Global No
myisam_repair_threads
Yes Yes Yes Both Yes
myisam_sort_buffer_size
Yes Yes Yes Both Yes
myisam_stats_method
Yes Yes Yes Both Yes
myisam_use_mmap
Yes Yes Yes Global Yes
mysql_firewall_mode
Yes Yes Yes Global Yes
mysql_firewall_trace
Yes Yes Yes Global Yes
mysql_native_password_proxy_users
Yes Yes Yes Global Yes
mysqlx_bind_address
Yes Yes Yes Global No
mysqlx_connect_timeout
Yes Yes Yes Global Yes
mysqlx_idle_worker_thread_timeout
Yes Yes Yes Global Yes
mysqlx_max_allowed_packet
Yes Yes Yes Global Yes
mysqlx_max_connections
Yes Yes Yes Global Yes
mysqlx_min_worker_threads
Yes Yes Yes Global Yes
mysqlx_port
Yes Yes Yes Global No
mysqlx_port_open_timeout
Yes Yes Yes Global No
mysqlx_socket
Yes Yes Yes Global No
mysqlx_ssl_ca
Yes Yes Yes Global No
mysqlx_ssl_capath
Yes Yes Yes Global No
mysqlx_ssl_cert
Yes Yes Yes Global No
mysqlx_ssl_cipher
Yes Yes Yes Global No
mysqlx_ssl_crl
Yes Yes Yes Global No
mysqlx_ssl_crlpath
Yes Yes Yes Global No
mysqlx_ssl_key
Yes Yes Yes Global No
named_pipe
Yes Yes Yes Global No
named_pipe_full_access_group
Yes Yes Yes Global No
ndb_allow_copying_alter_table
Yes Yes Yes Both Yes
ndb_autoincrement_prefetch_sz
Yes Yes Yes Both Yes
ndb_batch_size
Yes Yes Yes Both Yes
ndb_blob_read_batch_bytes
Yes Yes Yes Both Yes
ndb_blob_write_batch_bytes
Yes Yes Yes Both Yes
ndb_cache_check_time
Yes Yes Yes Global Yes
ndb_clear_apply_status
Yes Yes Global Yes
ndb_cluster_connection_pool
Yes Yes Yes Global No
ndb_cluster_connection_pool_nodeids
Yes Yes Yes Global No
ndb_data_node_neighbour
Yes Yes Yes Global Yes
ndb_default_column_format
Yes Yes Yes Global Yes
ndb_default_column_format
Yes Yes Yes Global Yes
ndb_deferred_constraints
Yes Yes Yes Both Yes
ndb_deferred_constraints
Yes Yes Yes Both Yes
ndb_distribution
Yes Yes Yes Global Yes
ndb_distribution
Yes Yes Yes Global Yes
ndb_eventbuffer_free_percent
Yes Yes Yes Global Yes
ndb_eventbuffer_max_alloc
Yes Yes Yes Global Yes
ndb_extra_logging
Yes Yes Yes Global Yes
ndb_force_send
Yes Yes Yes Both Yes
ndb_fully_replicated
Yes Yes Yes Both Yes
ndb_index_stat_enable
Yes Yes Yes Both Yes
ndb_index_stat_option
Yes Yes Yes Both Yes
ndb_join_pushdown
Yes Both Yes
ndb_log_apply_status
Yes Yes Yes Global No
ndb_log_apply_status
Yes Yes Yes Global No
ndb_log_bin
Yes Yes Both No
ndb_log_binlog_index
Yes Yes Global Yes
ndb_log_empty_epochs
Yes Yes Yes Global Yes
ndb_log_empty_epochs
Yes Yes Yes Global Yes
ndb_log_empty_update
Yes Yes Yes Global Yes
ndb_log_empty_update
Yes Yes Yes Global Yes
ndb_log_exclusive_reads
Yes Yes Yes Both Yes
ndb_log_exclusive_reads
Yes Yes Yes Both Yes
ndb_log_fail_terminate
Yes Yes Yes Global No
ndb_log_orig
Yes Yes Yes Global No
ndb_log_orig
Yes Yes Yes Global No
ndb_log_transaction_id
Yes Yes Yes Global No
ndb_log_transaction_id
Yes Global No
ndb_log_update_as_write
Yes Yes Yes Global Yes
ndb_log_update_minimal
Yes Yes Yes Global Yes
ndb_log_updated_only
Yes Yes Yes Global Yes
ndb_optimization_delay
Yes Yes Yes Global Yes
ndb_optimized_node_selection
Yes Yes Yes Global No
ndb_read_backup
Yes Yes Yes Global Yes
ndb_recv_thread_activation_threshold
Yes Yes Yes Global Yes
ndb_recv_thread_cpu_mask
Yes Yes Yes Global Yes
ndb_report_thresh_binlog_epoch_slip
Yes Yes Yes Global Yes
ndb_report_thresh_binlog_mem_usage
Yes Yes Yes Global Yes
ndb_row_checksum
Yes Both Yes
ndb_show_foreign_key_mock_tables
Yes Yes Yes Global Yes
ndb_slave_conflict_role
Yes Yes Yes Global Yes
Ndb_system_name
Yes Global No
ndb_table_no_logging
Yes Session Yes
ndb_table_temporary
Yes Session Yes
ndb_use_copying_alter_table
Yes Both No
ndb_use_exact_count
Yes Both Yes
ndb_use_transactions
Yes Yes Yes Both Yes
ndb_version
Yes Global No
ndb_version_string
Yes Global No
ndb_wait_connected
Yes Yes Yes Global No
ndb_wait_setup
Yes Yes Yes Global No
ndbinfo_database
Yes Global No
ndbinfo_max_bytes
Yes Yes Both Yes
ndbinfo_max_rows
Yes Yes Both Yes
ndbinfo_offline
Yes Global Yes
ndbinfo_show_hidden
Yes Yes Both Yes
ndbinfo_table_prefix
Yes Global No
ndbinfo_version
Yes Global No
net_buffer_length
Yes Yes Yes Both Yes
net_read_timeout
Yes Yes Yes Both Yes
net_retry_count
Yes Yes Yes Both Yes
net_write_timeout
Yes Yes Yes Both Yes
new
Yes Yes Yes Both Yes
ngram_token_size
Yes Yes Yes Global No
offline_mode
Yes Yes Yes Global Yes
old
Yes Yes Yes Global No
old_alter_table
Yes Yes Yes Both Yes
old_passwords
Yes Yes Yes Both Yes
open_files_limit
Yes Yes Yes Global No
optimizer_prune_level
Yes Yes Yes Both Yes
optimizer_search_depth
Yes Yes Yes Both Yes
optimizer_switch
Yes Yes Yes Both Yes
optimizer_trace
Yes Yes Yes Both Yes
optimizer_trace_features
Yes Yes Yes Both Yes
optimizer_trace_limit
Yes Yes Yes Both Yes
optimizer_trace_max_mem_size
Yes Yes Yes Both Yes
optimizer_trace_offset
Yes Yes Yes Both Yes
parser_max_mem_size
Yes Yes Yes Both Yes
performance_schema
Yes Yes Yes Global No
performance_schema_accounts_size
Yes Yes Yes Global No
performance_schema_digests_size
Yes Yes Yes Global No
performance_schema_events_stages_history_long_size
Yes Yes Yes Global No
performance_schema_events_stages_history_size
Yes Yes Yes Global No
performance_schema_events_statements_history_long_size
Yes Yes Yes Global No
performance_schema_events_statements_history_size
Yes Yes Yes Global No
performance_schema_events_transactions_history_long_size
Yes Yes Yes Global No
performance_schema_events_transactions_history_size
Yes Yes Yes Global No
performance_schema_events_waits_history_long_size
Yes Yes Yes Global No
performance_schema_events_waits_history_size
Yes Yes Yes Global No
performance_schema_hosts_size
Yes Yes Yes Global No
performance_schema_max_cond_classes
Yes Yes Yes Global No
performance_schema_max_cond_instances
Yes Yes Yes Global No
performance_schema_max_digest_length
Yes Yes Yes Global No
performance_schema_max_file_classes
Yes Yes Yes Global No
performance_schema_max_file_handles
Yes Yes Yes Global No
performance_schema_max_file_instances
Yes Yes Yes Global No
performance_schema_max_index_stat
Yes Yes Yes Global No
performance_schema_max_memory_classes
Yes Yes Yes Global No
performance_schema_max_metadata_locks
Yes Yes Yes Global No
performance_schema_max_mutex_classes
Yes Yes Yes Global No
performance_schema_max_mutex_instances
Yes Yes Yes Global No
performance_schema_max_prepared_statements_instances
Yes Yes Yes Global No
performance_schema_max_program_instances
Yes Yes Yes Global No
performance_schema_max_rwlock_classes
Yes Yes Yes Global No
performance_schema_max_rwlock_instances
Yes Yes Yes Global No
performance_schema_max_socket_classes
Yes Yes Yes Global No
performance_schema_max_socket_instances
Yes Yes Yes Global No
performance_schema_max_sql_text_length
Yes Yes Yes Global No
performance_schema_max_stage_classes
Yes Yes Yes Global No
performance_schema_max_statement_classes
Yes Yes Yes Global No
performance_schema_max_statement_stack
Yes Yes Yes Global No
performance_schema_max_table_handles
Yes Yes Yes Global No
performance_schema_max_table_instances
Yes Yes Yes Global No
performance_schema_max_table_lock_stat
Yes Yes Yes Global No
performance_schema_max_thread_classes
Yes Yes Yes Global No
performance_schema_max_thread_instances
Yes Yes Yes Global No
performance_schema_session_connect_attrs_size
Yes Yes Yes Global No
performance_schema_setup_actors_size
Yes Yes Yes Global No
performance_schema_setup_objects_size
Yes Yes Yes Global No
performance_schema_show_processlist
Yes Yes Yes Global Yes
performance_schema_users_size
Yes Yes Yes Global No
pid_file
Yes Yes Yes Global No
plugin_dir
Yes Yes Yes Global No
port
Yes Yes Yes Global No
preload_buffer_size
Yes Yes Yes Both Yes
profiling
Yes Both Yes
profiling_history_size
Yes Yes Yes Both Yes
protocol_version
Yes Global No
proxy_user
Yes Session No
pseudo_slave_mode
Yes Session Yes
pseudo_thread_id
Yes Session Yes
query_alloc_block_size
Yes Yes Yes Both Yes
query_cache_limit
Yes Yes Yes Global Yes
query_cache_min_res_unit
Yes Yes Yes Global Yes
query_cache_size
Yes Yes Yes Global Yes
query_cache_type
Yes Yes Yes Both Yes
query_cache_wlock_invalidate
Yes Yes Yes Both Yes
query_prealloc_size
Yes Yes Yes Both Yes
rand_seed1
Yes Session Yes
rand_seed2
Yes Session Yes
range_alloc_block_size
Yes Yes Yes Both Yes
range_optimizer_max_mem_size
Yes Yes Yes Both Yes
rbr_exec_mode
Yes Session Yes
read_buffer_size
Yes Yes Yes Both Yes
read_only
Yes Yes Yes Global Yes
read_rnd_buffer_size
Yes Yes Yes Both Yes
relay_log
Yes Yes Yes Global No
relay_log_basename
Yes Global No
relay_log_index
Yes Yes Yes Global No
relay_log_info_file
Yes Yes Yes Global No
relay_log_info_repository
Yes Yes Yes Global Yes
relay_log_purge
Yes Yes Yes Global Yes
relay_log_recovery
Yes Yes Yes Global No
relay_log_space_limit
Yes Yes Yes Global No
replication_optimize_for_static_plugin_config
Yes Yes Yes Global Yes
replication_sender_observe_commit_only
Yes Yes Yes Global Yes
report_host
Yes Yes Yes Global No
report_password
Yes Yes Yes Global No
report_port
Yes Yes Yes Global No
report_user
Yes Yes Yes Global No
require_secure_transport
Yes Yes Yes Global Yes
rewriter_enabled
Yes Global Yes
rewriter_verbose
Yes Global Yes
rpl_semi_sync_master_enabled
Yes Yes Yes Global Yes
rpl_semi_sync_master_timeout
Yes Yes Yes Global Yes
rpl_semi_sync_master_trace_level
Yes Yes Yes Global Yes
rpl_semi_sync_master_wait_for_slave_count
Yes Yes Yes Global Yes
rpl_semi_sync_master_wait_no_slave
Yes Yes Yes Global Yes
rpl_semi_sync_master_wait_point
Yes Yes Yes Global Yes
rpl_semi_sync_slave_enabled
Yes Yes Yes Global Yes
rpl_semi_sync_slave_trace_level
Yes Yes Yes Global Yes
rpl_stop_slave_timeout
Yes Yes Yes Global Yes
secure_auth
Yes Yes Yes Global Yes
secure_file_priv
Yes Yes Yes Global No
server_id
Yes Yes Yes Global Yes
server_id_bits
Yes Yes Yes Global No
server_uuid
Yes Global No
session_track_gtids
Yes Yes Yes Both Yes
session_track_schema
Yes Yes Yes Both Yes
session_track_state_change
Yes Yes Yes Both Yes
session_track_system_variables
Yes Yes Yes Both Yes
session_track_transaction_info
Yes Yes Yes Both Yes
sha256_password_auto_generate_rsa_keys
Yes Yes Yes Global No
sha256_password_private_key_path
Yes Yes Yes Global No
sha256_password_proxy_users
Yes Yes Yes Global Yes
sha256_password_public_key_path
Yes Yes Yes Global No
shared_memory
Yes Yes Yes Global No
shared_memory_base_name
Yes Yes Yes Global No
show_compatibility_56
Yes Yes Yes Global Yes
show_create_table_verbosity
Yes Yes Yes Both Yes
show_old_temporals
Yes Yes Yes Both Yes
skip_external_locking
Yes Yes Yes Global No
skip_name_resolve
Yes Yes Yes Global No
skip_networking
Yes Yes Yes Global No
skip_show_database
Yes Yes Yes Global No
skip_slave_start
Yes Yes Yes Global No
slave_allow_batching
Yes Yes Yes Global Yes
slave_checkpoint_group
Yes Yes Yes Global Yes
slave_checkpoint_period
Yes Yes Yes Global Yes
slave_compressed_protocol
Yes Yes Yes Global Yes
slave_exec_mode
Yes Yes Yes Global Yes
slave_load_tmpdir
Yes Yes Yes Global No
slave_max_allowed_packet
Yes Yes Yes Global Yes
slave_net_timeout
Yes Yes Yes Global Yes
slave_parallel_type
Yes Yes Yes Global Yes
slave_parallel_workers
Yes Yes Yes Global Yes
slave_pending_jobs_size_max
Yes Yes Yes Global Yes
slave_preserve_commit_order
Yes Yes Yes Global Yes
slave_rows_search_algorithms
Yes Yes Yes Global Yes
slave_skip_errors
Yes Yes Yes Global No
slave_sql_verify_checksum
Yes Yes Yes Global Yes
slave_transaction_retries
Yes Yes Yes Global Yes
slave_type_conversions
Yes Yes Yes Global Yes
slow_launch_time
Yes Yes Yes Global Yes
slow_query_log
Yes Yes Yes Global Yes
slow_query_log_file
Yes Yes Yes Global Yes
socket
Yes Yes Yes Global No
sort_buffer_size
Yes Yes Yes Both Yes
sql_auto_is_null
Yes Both Yes
sql_big_selects
Yes Both Yes
sql_buffer_result
Yes Both Yes
sql_log_bin
Yes Session Yes
sql_log_off
Yes Both Yes
sql_mode
Yes Yes Yes Both Yes
sql_notes
Yes Both Yes
sql_quote_show_create
Yes Both Yes
sql_safe_updates
Yes Both Yes
sql_select_limit
Yes Both Yes
sql_slave_skip_counter
Yes Global Yes
sql_warnings
Yes Both Yes
ssl_ca
Yes Yes Yes Global No
ssl_capath
Yes Yes Yes Global No
ssl_cert
Yes Yes Yes Global No
ssl_cipher
Yes Yes Yes Global No
ssl_crl
Yes Yes Yes Global No
ssl_crlpath
Yes Yes Yes Global No
ssl_key
Yes Yes Yes Global No
stored_program_cache
Yes Yes Yes Global Yes
super_read_only
Yes Yes Yes Global Yes
sync_binlog
Yes Yes Yes Global Yes
sync_frm
Yes Yes Yes Global Yes
sync_master_info
Yes Yes Yes Global Yes
sync_relay_log
Yes Yes Yes Global Yes
sync_relay_log_info
Yes Yes Yes Global Yes
system_time_zone
Yes Global No
table_definition_cache
Yes Yes Yes Global Yes
table_open_cache
Yes Yes Yes Global Yes
table_open_cache_instances
Yes Yes Yes Global No
thread_cache_size
Yes Yes Yes Global Yes
thread_handling
Yes Yes Yes Global No
thread_pool_algorithm
Yes Yes Yes Global No
thread_pool_high_priority_connection
Yes Yes Yes Both Yes
thread_pool_max_unused_threads
Yes Yes Yes Global Yes
thread_pool_prio_kickup_timer
Yes Yes Yes Global Yes
thread_pool_size
Yes Yes Yes Global No
thread_pool_stall_limit
Yes Yes Yes Global Yes
thread_stack
Yes Yes Yes Global No
time_format
Yes Global No
time_zone
Yes Both Yes
timestamp
Yes Session Yes
tls_version
Yes Yes Yes Global No
tmp_table_size
Yes Yes Yes Both Yes
tmpdir
Yes Yes Yes Global No
transaction_alloc_block_size
Yes Yes Yes Both Yes
transaction_allow_batching
Yes Session Yes
transaction_isolation
Yes Yes Yes
Variable: tx_isolation
Yes Both Yes
transaction_prealloc_size
Yes Yes Yes Both Yes
transaction_read_only
Yes Yes Yes
Variable: tx_read_only
Yes Both Yes
transaction_write_set_extraction
Yes Yes Yes Both Yes
tx_isolation
Yes Both Yes
tx_read_only
Yes Both Yes
unique_checks
Yes Both Yes
updatable_views_with_limit
Yes Yes Yes Both Yes
validate_password_check_user_name
Yes Yes Yes Global Yes
validate_password_dictionary_file
Yes Yes Yes Global Varies
validate_password_length
Yes Yes Yes Global Yes
validate_password_mixed_case_count
Yes Yes Yes Global Yes
validate_password_number_count
Yes Yes Yes Global Yes
validate_password_policy
Yes Yes Yes Global Yes
validate_password_special_char_count
Yes Yes Yes Global Yes
version
Yes Global No
version_comment
Yes Global No
version_compile_machine
Yes Global No
version_compile_os
Yes Global No
version_tokens_session
Yes Yes Yes Both Yes
version_tokens_session_number
Yes Yes Yes Both No
wait_timeout
Yes Yes Yes Both Yes
warning_count
Yes Session No
Notes: 1. This option is dynamic, but should be set only by server. You should not set this variable manually.
File: manual.info.tmp, Node: server-status-variable-reference, Next: server-options, Prev: server-system-variable-reference, Up: mysqld-server
The following table lists all status variables applicable within 'mysqld'.
The table lists each variable's data type and scope. The last column indicates whether the scope for each variable is Global, Session, or both. Please see the corresponding item descriptions for details on setting and using the variables. Where appropriate, direct links to further information about the items are provided.
Status Variable Summary
Variable Name Variable Variable Type Scope
Aborted_clients
Integer Global
Aborted_connects
Integer Global
Audit_log_current_size
Integer Global
Audit_log_event_max_drop_size
Integer Global
Audit_log_events
Integer Global
Audit_log_events_filtered
Integer Global
Audit_log_events_lost
Integer Global
Audit_log_events_written
Integer Global
Audit_log_total_size
Integer Global
Audit_log_write_waits
Integer Global
Binlog_cache_disk_use
Integer Global
Binlog_cache_use
Integer Global
Binlog_stmt_cache_disk_use
Integer Global
Binlog_stmt_cache_use
Integer Global
Bytes_received
Integer Both
Bytes_sent
Integer Both
Com_admin_commands
Integer Both
Com_alter_db
Integer Both
Com_alter_db_upgrade
Integer Both
Com_alter_event
Integer Both
Com_alter_function
Integer Both
Com_alter_procedure
Integer Both
Com_alter_server
Integer Both
Com_alter_table
Integer Both
Com_alter_tablespace
Integer Both
Com_alter_user
Integer Both
Com_analyze
Integer Both
Com_assign_to_keycache
Integer Both
Com_begin
Integer Both
Com_binlog
Integer Both
Com_call_procedure
Integer Both
Com_change_db
Integer Both
Com_change_master
Integer Both
Com_change_repl_filter
Integer Both
Com_check
Integer Both
Com_checksum
Integer Both
Com_commit
Integer Both
Com_create_db
Integer Both
Com_create_event
Integer Both
Com_create_function
Integer Both
Com_create_index
Integer Both
Com_create_procedure
Integer Both
Com_create_server
Integer Both
Com_create_table
Integer Both
Com_create_trigger
Integer Both
Com_create_udf
Integer Both
Com_create_user
Integer Both
Com_create_view
Integer Both
Com_dealloc_sql
Integer Both
Com_delete
Integer Both
Com_delete_multi
Integer Both
Com_do
Integer Both
Com_drop_db
Integer Both
Com_drop_event
Integer Both
Com_drop_function
Integer Both
Com_drop_index
Integer Both
Com_drop_procedure
Integer Both
Com_drop_server
Integer Both
Com_drop_table
Integer Both
Com_drop_trigger
Integer Both
Com_drop_user
Integer Both
Com_drop_view
Integer Both
Com_empty_query
Integer Both
Com_execute_sql
Integer Both
Com_explain_other
Integer Both
Com_flush
Integer Both
Com_get_diagnostics
Integer Both
Com_grant
Integer Both
Com_group_replication_start
Integer Global
Com_group_replication_stop
Integer Global
Com_ha_close
Integer Both
Com_ha_open
Integer Both
Com_ha_read
Integer Both
Com_help
Integer Both
Com_insert
Integer Both
Com_insert_select
Integer Both
Com_install_plugin
Integer Both
Com_kill
Integer Both
Com_load
Integer Both
Com_lock_tables
Integer Both
Com_optimize
Integer Both
Com_preload_keys
Integer Both
Com_prepare_sql
Integer Both
Com_purge
Integer Both
Com_purge_before_date
Integer Both
Com_release_savepoint
Integer Both
Com_rename_table
Integer Both
Com_rename_user
Integer Both
Com_repair
Integer Both
Com_replace
Integer Both
Com_replace_select
Integer Both
Com_reset
Integer Both
Com_resignal
Integer Both
Com_revoke
Integer Both
Com_revoke_all
Integer Both
Com_rollback
Integer Both
Com_rollback_to_savepoint
Integer Both
Com_savepoint
Integer Both
Com_select
Integer Both
Com_set_option
Integer Both
Com_show_authors
Integer Both
Com_show_binlog_events
Integer Both
Com_show_binlogs
Integer Both
Com_show_charsets
Integer Both
Com_show_collations
Integer Both
Com_show_contributors
Integer Both
Com_show_create_db
Integer Both
Com_show_create_event
Integer Both
Com_show_create_func
Integer Both
Com_show_create_proc
Integer Both
Com_show_create_table
Integer Both
Com_show_create_trigger
Integer Both
Com_show_create_user
Integer Both
Com_show_databases
Integer Both
Com_show_engine_logs
Integer Both
Com_show_engine_mutex
Integer Both
Com_show_engine_status
Integer Both
Com_show_errors
Integer Both
Com_show_events
Integer Both
Com_show_fields
Integer Both
Com_show_function_code
Integer Both
Com_show_function_status
Integer Both
Com_show_grants
Integer Both
Com_show_keys
Integer Both
Com_show_master_status
Integer Both
Com_show_ndb_status
Integer Both
Com_show_open_tables
Integer Both
Com_show_plugins
Integer Both
Com_show_privileges
Integer Both
Com_show_procedure_code
Integer Both
Com_show_procedure_status
Integer Both
Com_show_processlist
Integer Both
Com_show_profile
Integer Both
Com_show_profiles
Integer Both
Com_show_relaylog_events
Integer Both
Com_show_slave_hosts
Integer Both
Com_show_slave_status
Integer Both
Com_show_status
Integer Both
Com_show_storage_engines
Integer Both
Com_show_table_status
Integer Both
Com_show_tables
Integer Both
Com_show_triggers
Integer Both
Com_show_variables
Integer Both
Com_show_warnings
Integer Both
Com_shutdown
Integer Both
Com_signal
Integer Both
Com_slave_start
Integer Both
Com_slave_stop
Integer Both
Com_stmt_close
Integer Both
Com_stmt_execute
Integer Both
Com_stmt_fetch
Integer Both
Com_stmt_prepare
Integer Both
Com_stmt_reprepare
Integer Both
Com_stmt_reset
Integer Both
Com_stmt_send_long_data
Integer Both
Com_truncate
Integer Both
Com_uninstall_plugin
Integer Both
Com_unlock_tables
Integer Both
Com_update
Integer Both
Com_update_multi
Integer Both
Com_xa_commit
Integer Both
Com_xa_end
Integer Both
Com_xa_prepare
Integer Both
Com_xa_recover
Integer Both
Com_xa_rollback
Integer Both
Com_xa_start
Integer Both
Compression
Integer Session
Connection_control_delay_generated
Integer Global
Connection_errors_accept
Integer Global
Connection_errors_internal
Integer Global
Connection_errors_max_connections
Integer Global
Connection_errors_peer_address
Integer Global
Connection_errors_select
Integer Global
Connection_errors_tcpwrap
Integer Global
Connections
Integer Global
Created_tmp_disk_tables
Integer Both
Created_tmp_files
Integer Global
Created_tmp_tables
Integer Both
Delayed_errors
Integer Global
Delayed_insert_threads
Integer Global
Delayed_writes
Integer Global
Firewall_access_denied
Integer Global
Firewall_access_granted
Integer Global
Firewall_cached_entries
Integer Global
Flush_commands
Integer Global
group_replication_primary_member
String Global
Handler_commit
Integer Both
Handler_delete
Integer Both
Handler_discover
Integer Both
Handler_external_lock
Integer Both
Handler_mrr_init
Integer Both
Handler_prepare
Integer Both
Handler_read_first
Integer Both
Handler_read_key
Integer Both
Handler_read_last
Integer Both
Handler_read_next
Integer Both
Handler_read_prev
Integer Both
Handler_read_rnd
Integer Both
Handler_read_rnd_next
Integer Both
Handler_rollback
Integer Both
Handler_savepoint
Integer Both
Handler_savepoint_rollback
Integer Both
Handler_update
Integer Both
Handler_write
Integer Both
Innodb_available_undo_logs
Integer Global
Innodb_buffer_pool_bytes_data
Integer Global
Innodb_buffer_pool_bytes_dirty
Integer Global
Innodb_buffer_pool_dump_status
String Global
Innodb_buffer_pool_load_status
String Global
Innodb_buffer_pool_pages_data
Integer Global
Innodb_buffer_pool_pages_dirty
Integer Global
Innodb_buffer_pool_pages_flushed
Integer Global
Innodb_buffer_pool_pages_free
Integer Global
Innodb_buffer_pool_pages_latched
Integer Global
Innodb_buffer_pool_pages_misc
Integer Global
Innodb_buffer_pool_pages_total
Integer Global
Innodb_buffer_pool_read_ahead
Integer Global
Innodb_buffer_pool_read_ahead_evicted
Integer Global
Innodb_buffer_pool_read_ahead_rnd
Integer Global
Innodb_buffer_pool_read_requests
Integer Global
Innodb_buffer_pool_reads
Integer Global
Innodb_buffer_pool_resize_status
String Global
Innodb_buffer_pool_wait_free
Integer Global
Innodb_buffer_pool_write_requests
Integer Global
Innodb_data_fsyncs
Integer Global
Innodb_data_pending_fsyncs
Integer Global
Innodb_data_pending_reads
Integer Global
Innodb_data_pending_writes
Integer Global
Innodb_data_read
Integer Global
Innodb_data_reads
Integer Global
Innodb_data_writes
Integer Global
Innodb_data_written
Integer Global
Innodb_dblwr_pages_written
Integer Global
Innodb_dblwr_writes
Integer Global
Innodb_have_atomic_builtins
Integer Global
Innodb_log_waits
Integer Global
Innodb_log_write_requests
Integer Global
Innodb_log_writes
Integer Global
Innodb_num_open_files
Integer Global
Innodb_os_log_fsyncs
Integer Global
Innodb_os_log_pending_fsyncs
Integer Global
Innodb_os_log_pending_writes
Integer Global
Innodb_os_log_written
Integer Global
Innodb_page_size
Integer Global
Innodb_pages_created
Integer Global
Innodb_pages_read
Integer Global
Innodb_pages_written
Integer Global
Innodb_row_lock_current_waits
Integer Global
Innodb_row_lock_time
Integer Global
Innodb_row_lock_time_avg
Integer Global
Innodb_row_lock_time_max
Integer Global
Innodb_row_lock_waits
Integer Global
Innodb_rows_deleted
Integer Global
Innodb_rows_inserted
Integer Global
Innodb_rows_read
Integer Global
Innodb_rows_updated
Integer Global
Innodb_truncated_status_writes
Integer Global
Key_blocks_not_flushed
Integer Global
Key_blocks_unused
Integer Global
Key_blocks_used
Integer Global
Key_read_requests
Integer Global
Key_reads
Integer Global
Key_write_requests
Integer Global
Key_writes
Integer Global
Last_query_cost
Numeric Session
Last_query_partial_plans
Integer Session
Locked_connects
Integer Global
Max_execution_time_exceeded
Integer Both
Max_execution_time_set
Integer Both
Max_execution_time_set_failed
Integer Both
Max_used_connections
Integer Global
Max_used_connections_time
Datetime Global
mecab_charset
String Global
Mysqlx_address
String Global
Mysqlx_bytes_received
Integer Both
Mysqlx_bytes_sent
Integer Both
Mysqlx_connection_accept_errors
Integer Both
Mysqlx_connection_errors
Integer Both
Mysqlx_connections_accepted
Integer Global
Mysqlx_connections_closed
Integer Global
Mysqlx_connections_rejected
Integer Global
Mysqlx_crud_create_view
Integer Both
Mysqlx_crud_delete
Integer Both
Mysqlx_crud_drop_view
Integer Both
Mysqlx_crud_find
Integer Both
Mysqlx_crud_insert
Integer Both
Mysqlx_crud_modify_view
Integer Both
Mysqlx_crud_update
Integer Both
Mysqlx_errors_sent
Integer Both
Mysqlx_errors_unknown_message_type
Integer Both
Mysqlx_expect_close
Integer Both
Mysqlx_expect_open
Integer Both
Mysqlx_init_error
Integer Both
Mysqlx_notice_other_sent
Integer Both
Mysqlx_notice_warning_sent
Integer Both
Mysqlx_port
String Global
Mysqlx_rows_sent
Integer Both
Mysqlx_sessions
Integer Global
Mysqlx_sessions_accepted
Integer Global
Mysqlx_sessions_closed
Integer Global
Mysqlx_sessions_fatal_error
Integer Global
Mysqlx_sessions_killed
Integer Global
Mysqlx_sessions_rejected
Integer Global
Mysqlx_socket
String Global
Mysqlx_ssl_accept_renegotiates
Integer Global
Mysqlx_ssl_accepts
Integer Global
Mysqlx_ssl_active
Integer Both
Mysqlx_ssl_cipher
Integer Both
Mysqlx_ssl_cipher_list
Integer Both
Mysqlx_ssl_ctx_verify_depth
Integer Both
Mysqlx_ssl_ctx_verify_mode
Integer Both
Mysqlx_ssl_finished_accepts
Integer Global
Mysqlx_ssl_server_not_after
Integer Global
Mysqlx_ssl_server_not_before
Integer Global
Mysqlx_ssl_verify_depth
Integer Global
Mysqlx_ssl_verify_mode
Integer Global
Mysqlx_ssl_version
Integer Both
Mysqlx_stmt_create_collection
Integer Both
Mysqlx_stmt_create_collection_index
Integer Both
Mysqlx_stmt_disable_notices
Integer Both
Mysqlx_stmt_drop_collection
Integer Both
Mysqlx_stmt_drop_collection_index
Integer Both
Mysqlx_stmt_enable_notices
Integer Both
Mysqlx_stmt_ensure_collection
String Both
Mysqlx_stmt_execute_mysqlx
Integer Both
Mysqlx_stmt_execute_sql
Integer Both
Mysqlx_stmt_execute_xplugin
Integer Both
Mysqlx_stmt_kill_client
Integer Both
Mysqlx_stmt_list_clients
Integer Both
Mysqlx_stmt_list_notices
Integer Both
Mysqlx_stmt_list_objects
Integer Both
Mysqlx_stmt_ping
Integer Both
Mysqlx_worker_threads
Integer Global
Mysqlx_worker_threads_active
Integer Global
Ndb_api_adaptive_send_deferred_count
Integer Global
Ndb_api_adaptive_send_deferred_count_session
Integer Global
Ndb_api_adaptive_send_deferred_count_slave
Integer Global
Ndb_api_adaptive_send_forced_count
Integer Global
Ndb_api_adaptive_send_forced_count_session
Integer Global
Ndb_api_adaptive_send_forced_count_slave
Integer Global
Ndb_api_adaptive_send_unforced_count
Integer Global
Ndb_api_adaptive_send_unforced_count_session
Integer Global
Ndb_api_adaptive_send_unforced_count_slave
Integer Global
Ndb_api_bytes_received_count
Integer Global
Ndb_api_bytes_received_count_session
Integer Session
Ndb_api_bytes_received_count_slave
Integer Global
Ndb_api_bytes_sent_count
Integer Global
Ndb_api_bytes_sent_count_session
Integer Session
Ndb_api_bytes_sent_count_slave
Integer Global
Ndb_api_event_bytes_count
Integer Global
Ndb_api_event_bytes_count_injector
Integer Global
Ndb_api_event_data_count
Integer Global
Ndb_api_event_data_count_injector
Integer Global
Ndb_api_event_nondata_count
Integer Global
Ndb_api_event_nondata_count_injector
Integer Global
Ndb_api_pk_op_count
Integer Global
Ndb_api_pk_op_count_session
Integer Session
Ndb_api_pk_op_count_slave
Integer Global
Ndb_api_pruned_scan_count
Integer Global
Ndb_api_pruned_scan_count_session
Integer Session
Ndb_api_pruned_scan_count_slave
Integer Global
Ndb_api_range_scan_count
Integer Global
Ndb_api_range_scan_count_session
Integer Session
Ndb_api_range_scan_count_slave
Integer Global
Ndb_api_read_row_count
Integer Global
Ndb_api_read_row_count_session
Integer Session
Ndb_api_read_row_count_slave
Integer Global
Ndb_api_scan_batch_count
Integer Global
Ndb_api_scan_batch_count_session
Integer Session
Ndb_api_scan_batch_count_slave
Integer Global
Ndb_api_table_scan_count
Integer Global
Ndb_api_table_scan_count_session
Integer Session
Ndb_api_table_scan_count_slave
Integer Global
Ndb_api_trans_abort_count
Integer Global
Ndb_api_trans_abort_count_session
Integer Session
Ndb_api_trans_abort_count_slave
Integer Global
Ndb_api_trans_close_count
Integer Global
Ndb_api_trans_close_count_session
Integer Session
Ndb_api_trans_close_count_slave
Integer Global
Ndb_api_trans_commit_count
Integer Global
Ndb_api_trans_commit_count_session
Integer Session
Ndb_api_trans_commit_count_slave
Integer Global
Ndb_api_trans_local_read_row_count
Integer Global
Ndb_api_trans_local_read_row_count_session
Integer Session
Ndb_api_trans_local_read_row_count_slave
Integer Global
Ndb_api_trans_start_count
Integer Global
Ndb_api_trans_start_count_session
Integer Session
Ndb_api_trans_start_count_slave
Integer Global
Ndb_api_uk_op_count
Integer Global
Ndb_api_uk_op_count_session
Integer Session
Ndb_api_uk_op_count_slave
Integer Global
Ndb_api_wait_exec_complete_count
Integer Global
Ndb_api_wait_exec_complete_count_session
Integer Session
Ndb_api_wait_exec_complete_count_slave
Integer Global
Ndb_api_wait_meta_request_count
Integer Global
Ndb_api_wait_meta_request_count_session
Integer Session
Ndb_api_wait_meta_request_count_slave
Integer Global
Ndb_api_wait_nanos_count
Integer Global
Ndb_api_wait_nanos_count_session
Integer Session
Ndb_api_wait_nanos_count_slave
Integer Global
Ndb_api_wait_scan_result_count
Integer Global
Ndb_api_wait_scan_result_count_session
Integer Session
Ndb_api_wait_scan_result_count_slave
Integer Global
Ndb_cluster_node_id
Integer Global
Ndb_config_from_host
Integer Both
Ndb_config_from_port
Integer Both
Ndb_conflict_fn_epoch
Integer Global
Ndb_conflict_fn_epoch_trans
Integer Global
Ndb_conflict_fn_epoch2
Integer Global
Ndb_conflict_fn_epoch2_trans
Integer Global
Ndb_conflict_fn_max
Integer Global
Ndb_conflict_fn_max_del_win
Integer Global
Ndb_conflict_fn_old
Integer Global
Ndb_conflict_last_conflict_epoch
Integer Global
Ndb_conflict_last_stable_epoch
Integer Global
Ndb_conflict_reflected_op_discard_count
Integer Global
Ndb_conflict_reflected_op_prepare_count
Integer Global
Ndb_conflict_refresh_op_count
Integer Global
Ndb_conflict_trans_conflict_commit_count
Integer Global
Ndb_conflict_trans_detect_iter_count
Integer Global
Ndb_conflict_trans_reject_count
Integer Global
Ndb_conflict_trans_row_conflict_count
Integer Global
Ndb_conflict_trans_row_reject_count
Integer Global
Ndb_epoch_delete_delete_count
Integer Global
Ndb_execute_count
Integer Global
Ndb_last_commit_epoch_server
Integer Global
Ndb_last_commit_epoch_session
Integer Session
Ndb_cluster_node_id
Integer Global
Ndb_number_of_data_nodes
Integer Global
Ndb_pruned_scan_count
Integer Global
Ndb_pushed_queries_defined
Integer Global
Ndb_pushed_queries_dropped
Integer Global
Ndb_pushed_queries_executed
Integer Global
Ndb_pushed_reads
Integer Global
Ndb_scan_count
Integer Global
Ndb_slave_max_replicated_epoch
Integer Global
Not_flushed_delayed_rows
Integer Global
Ongoing_anonymous_gtid_violating_transaction_count
Integer Global
Ongoing_anonymous_transaction_count
Integer Global
Ongoing_automatic_gtid_violating_transaction_count
Integer Global
Open_files
Integer Global
Open_streams
Integer Global
Open_table_definitions
Integer Global
Open_tables
Integer Both
Opened_files
Integer Global
Opened_table_definitions
Integer Both
Opened_tables
Integer Both
Performance_schema_accounts_lost
Integer Global
Performance_schema_cond_classes_lost
Integer Global
Performance_schema_cond_instances_lost
Integer Global
Performance_schema_digest_lost
Integer Global
Performance_schema_file_classes_lost
Integer Global
Performance_schema_file_handles_lost
Integer Global
Performance_schema_file_instances_lost
Integer Global
Performance_schema_hosts_lost
Integer Global
Performance_schema_index_stat_lost
Integer Global
Performance_schema_locker_lost
Integer Global
Performance_schema_memory_classes_lost
Integer Global
Performance_schema_metadata_lock_lost
Integer Global
Performance_schema_mutex_classes_lost
Integer Global
Performance_schema_mutex_instances_lost
Integer Global
Performance_schema_nested_statement_lost
Integer Global
Performance_schema_prepared_statements_lost
Integer Global
Performance_schema_program_lost
Integer Global
Performance_schema_rwlock_classes_lost
Integer Global
Performance_schema_rwlock_instances_lost
Integer Global
Performance_schema_session_connect_attrs_lost
Integer Global
Performance_schema_socket_classes_lost
Integer Global
Performance_schema_socket_instances_lost
Integer Global
Performance_schema_stage_classes_lost
Integer Global
Performance_schema_statement_classes_lost
Integer Global
Performance_schema_table_handles_lost
Integer Global
Performance_schema_table_instances_lost
Integer Global
Performance_schema_table_lock_stat_lost
Integer Global
Performance_schema_thread_classes_lost
Integer Global
Performance_schema_thread_instances_lost
Integer Global
Performance_schema_users_lost
Integer Global
Prepared_stmt_count
Integer Global
Qcache_free_blocks
Integer Global
Qcache_free_memory
Integer Global
Qcache_hits
Integer Global
Qcache_inserts
Integer Global
Qcache_lowmem_prunes
Integer Global
Qcache_not_cached
Integer Global
Qcache_queries_in_cache
Integer Global
Qcache_total_blocks
Integer Global
Queries
Integer Both
Questions
Integer Both
Rewriter_number_loaded_rules
Integer Global
Rewriter_number_reloads
Integer Global
Rewriter_number_rewritten_queries
Integer Global
Rewriter_reload_error
Boolean Global
Rpl_semi_sync_master_clients
Integer Global
Rpl_semi_sync_master_net_avg_wait_time
Integer Global
Rpl_semi_sync_master_net_wait_time
Integer Global
Rpl_semi_sync_master_net_waits
Integer Global
Rpl_semi_sync_master_no_times
Integer Global
Rpl_semi_sync_master_no_tx
Integer Global
Rpl_semi_sync_master_status
Boolean Global
Rpl_semi_sync_master_timefunc_failures
Integer Global
Rpl_semi_sync_master_tx_avg_wait_time
Integer Global
Rpl_semi_sync_master_tx_wait_time
Integer Global
Rpl_semi_sync_master_tx_waits
Integer Global
Rpl_semi_sync_master_wait_pos_backtraverse
Integer Global
Rpl_semi_sync_master_wait_sessions
Integer Global
Rpl_semi_sync_master_yes_tx
Integer Global
Rpl_semi_sync_slave_status
Boolean Global
Rsa_public_key
String Global
Select_full_join
Integer Both
Select_full_range_join
Integer Both
Select_range
Integer Both
Select_range_check
Integer Both
Select_scan
Integer Both
Slave_heartbeat_period
Numeric Global
Slave_last_heartbeat
Datetime Global
Slave_open_temp_tables
Integer Global
Slave_received_heartbeats
Integer Global
Slave_retried_transactions
Integer Global
Slave_rows_last_search_algorithm_used
String Global
Slave_running
String Global
Slow_launch_threads
Integer Both
Slow_queries
Integer Both
Sort_merge_passes
Integer Both
Sort_range
Integer Both
Sort_rows
Integer Both
Sort_scan
Integer Both
Ssl_accept_renegotiates
Integer Global
Ssl_accepts
Integer Global
Ssl_callback_cache_hits
Integer Global
Ssl_cipher
String Both
Ssl_cipher_list
String Both
Ssl_client_connects
Integer Global
Ssl_connect_renegotiates
Integer Global
Ssl_ctx_verify_depth
Integer Global
Ssl_ctx_verify_mode
Integer Global
Ssl_default_timeout
Integer Both
Ssl_finished_accepts
Integer Global
Ssl_finished_connects
Integer Global
Ssl_server_not_after
Integer Both
Ssl_server_not_before
Integer Both
Ssl_session_cache_hits
Integer Global
Ssl_session_cache_misses
Integer Global
Ssl_session_cache_mode
String Global
Ssl_session_cache_overflows
Integer Global
Ssl_session_cache_size
Integer Global
Ssl_session_cache_timeouts
Integer Global
Ssl_sessions_reused
Integer Session
Ssl_used_session_cache_entries
Integer Global
Ssl_verify_depth
Integer Both
Ssl_verify_mode
Integer Both
Ssl_version
String Both
Table_locks_immediate
Integer Global
Table_locks_waited
Integer Global
Table_open_cache_hits
Integer Both
Table_open_cache_misses
Integer Both
Table_open_cache_overflows
Integer Both
Tc_log_max_pages_used
Integer Global
Tc_log_page_size
Integer Global
Tc_log_page_waits
Integer Global
Threads_cached
Integer Global
Threads_connected
Integer Global
Threads_created
Integer Global
Threads_running
Integer Global
Uptime
Integer Global
Uptime_since_flush_status
Integer Global
validate_password_dictionary_file_last_parsed
Datetime Global
validate_password_dictionary_file_words_count
Integer Global
File: manual.info.tmp, Node: server-options, Next: server-system-variables, Prev: server-status-variable-reference, Up: mysqld-server
When you start the note 'mysqld': mysqld. server, you can specify program options using any of the methods described in note program-options::. The most common methods are to provide options in an option file or on the command line. However, in most cases it is desirable to make sure that the server uses the same options each time it runs. The best way to ensure this is to list them in an option file. See *note option-files::. That section also describes option file format and syntax.
note 'mysqld': mysqld. reads options from the '[mysqld]' and '[server]' groups. note 'mysqld_safe': mysqld-safe. reads options from the '[mysqld]', '[server]', '[mysqld_safe]', and '[safe_mysqld]' groups. *note 'mysql.server': mysql-server. reads options from the '[mysqld]' and '[mysql.server]' groups.
An embedded MySQL server usually reads options from the '[server]', '[embedded]', and '[XXXXX_SERVER]' groups, where XXXXX is the name of the application into which the server is embedded.
*note 'mysqld': mysqld. accepts many command options. For a brief summary, execute this command:
mysqld --help
To see the full list, use this command:
mysqld --verbose --help
Some of the items in the list are actually system variables that can be set at server startup. These can be displayed at runtime using the note 'SHOW VARIABLES': show-variables. statement. Some items displayed by the preceding note 'mysqld': mysqld. command do not appear in *note 'SHOW VARIABLES': show-variables. output; this is because they are options only and not system variables.
The following list shows some of the most common server options. Additional options are described in other sections:
Options that affect security: See *note security-options::.
SSL-related options: See *note encrypted-connection-options::.
Binary log control options: See *note binary-log::.
Replication-related options: See *note replication-options::.
Options for loading plugins such as pluggable storage engines: See *note plugin-loading::.
Options specific to particular storage engines: See note innodb-parameters:: and note myisam-start::.
Some options control the size of buffers or caches. For a given buffer, the server might need to allocate internal data structures. These structures typically are allocated from the total memory allocated to the buffer, and the amount of space required might be platform dependent. This means that when you assign a value to an option that controls a buffer size, the amount of space actually available might differ from the value assigned. In some cases, the amount might be less than the value assigned. It is also possible that the server adjusts a value upward. For example, if you assign a value of 0 to an option for which the minimal value is 1024, the server sets the value to 1024.
Values for buffer sizes, lengths, and stack sizes are given in bytes unless otherwise specified.
Some options take file name values. Unless otherwise specified, the default file location is the data directory if the value is a relative path name. To specify the location explicitly, use an absolute path name. Suppose that the data directory is '/var/mysql/data'. If a file-valued option is given as a relative path name, it is located under '/var/mysql/data'. If the value is an absolute path name, its location is as given by the path name.
You can also set the values of server system variables at server startup by using variable names as options. To assign a value to a server system variable, use an option of the form '--VAR_NAME=VALUE'. For example, '--sort_buffer_size=384M' sets the 'sort_buffer_size' variable to a value of 384MB.
When you assign a value to a variable, MySQL might automatically correct the value to stay within a given range, or adjust the value to the closest permissible value if only certain values are permitted.
To restrict the maximum value to which a system variable can be set at runtime with the *note 'SET': set-variable. statement, specify this maximum by using an option of the form '--maximum-VAR_NAME=VALUE' at server startup.
You can change the values of most system variables at runtime with the note 'SET': set-variable. statement. See note set-variable::.
note server-system-variables::, provides a full description for all variables, and additional information for setting them at server startup and runtime. For information on changing system variables, see note server-configuration::.
'--help', '-?'
Command-Line Format
'--help'
Display a short help message and exit. Use both the '--verbose' and '--help' options to see the full message.
'--allow-suspicious-udfs'
Command-Line Format
'--allow-suspicious-udfs[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
This option controls whether loadable functions that have only an 'xxx' symbol for the main function can be loaded. By default, the option is off and only loadable functions that have at least one auxiliary symbol can be loaded; this prevents attempts at loading functions from shared object files other than those containing legitimate functions. See Loadable Function Security Precautions (https://dev.mysql.com/doc/extending-mysql/5.7/en/adding-loadable-function.html#loadable-function-security).
'--ansi'
Command-Line Format
'--ansi'
Use standard (ANSI) SQL syntax instead of MySQL syntax. For more precise control over the server SQL mode, use the '--sql-mode' option instead. See note compatibility::, and note sql-mode::.
'--basedir=DIR_NAME', '-b DIR_NAME'
Command-Line Format
'--basedir=dir_name'
System Variable
'basedir'
Scope
Global
Dynamic
No
Type
Directory name
Default Value
'configuration-dependent default'
The path to the MySQL installation directory. This option sets the 'basedir' system variable.
'--bootstrap'
Command-Line Format
'--bootstrap'
Deprecated
Yes
This option is used by the *note 'mysql_install_db': mysql-install-db. program to create the MySQL privilege tables without having to start a full MySQL server.
Note:
note 'mysql_install_db': mysql-install-db. is deprecated because its functionality has been integrated into note 'mysqld': mysqld, the MySQL server. Consequently, the '--bootstrap' server option that note 'mysql_install_db': mysql-install-db. passes to note 'mysqld': mysqld. is also deprecated. To initialize a MySQL installation, invoke note 'mysqld': mysqld. with the '--initialize' or '--initialize-insecure' option. For more information, see note data-directory-initialization::. Expect *note 'mysql_install_db': mysql-install-db. and the '--bootstrap' server option to be removed in a future release of MySQL.
'--bootstrap' is mutually exclusive with '--daemonize', '--initialize', and '--initialize-insecure'.
Global transaction identifiers (GTIDs) are not disabled when '--bootstrap' is used. '--bootstrap' was used (Bug #20980271). See *note replication-gtids::.
When the server operates in bootstap mode, some functionality is unavailable that limits the statements permitted in any file named by the 'init_file' system variable. For more information, see the description of that variable. In addition, the 'disabled_storage_engines' system variable has no effect.
'--character-set-client-handshake'
Command-Line Format
'--character-set-client-handshake[={OFF|ON}]'
Type
Boolean
Default Value
'ON'
Do not ignore character set information sent by the client. To ignore client information and use the default server character set, use '--skip-character-set-client-handshake'; this makes MySQL behave like MySQL 4.0.
'--chroot=DIR_NAME', '-r DIR_NAME'
Command-Line Format
'--chroot=dir_name'
Type
Directory name
Put the note 'mysqld': mysqld. server in a closed environment during startup by using the 'chroot()' system call. This is a recommended security measure. Use of this option somewhat limits note 'LOAD DATA': load-data. and *note 'SELECT ... INTO OUTFILE': select-into.
'--console'
Command-Line Format
'--console'
Platform Specific
Windows
(Windows only.) Write the error log to 'stderr' and 'stdout' (the console). *note 'mysqld': mysqld. does not close the console window if this option is used.
'--console' takes precedence over '--log-error' if both are given. (In MySQL 5.5 and 5.6, this is reversed: '--log-error' takes precedence over '--console' if both are given.)
'--core-file'
Command-Line Format
'--core-file'
When this option is used, write a core file if note 'mysqld': mysqld. dies; no arguments are needed (or accepted). The name and location of the core file is system dependent. On Linux, a core file named 'core.PID' is written to the current working directory of the process, which for note 'mysqld': mysqld. is the data directory. PID represents the process ID of the server process. On macOS, a core file named 'core.PID' is written to the '/cores' directory. On Solaris, use the 'coreadm' command to specify where to write the core file and how to name it.
For some systems, to get a core file you must also specify the '--core-file-size' option to note 'mysqld_safe': mysqld-safe. See note mysqld-safe::. On some systems, such as Solaris, you do not get a core file if you are also using the '--user' option. There might be additional restrictions or limitations. For example, it might be necessary to execute 'ulimit -c unlimited' before starting the server. Consult your system documentation.
'--daemonize'
Command-Line Format
'--daemonize[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
This option causes the server to run as a traditional, forking daemon, permitting it to work with operating systems that use systemd for process control. For more information, see *note using-systemd::.
'--daemonize' is mutually exclusive with '--bootstrap', '--initialize', and '--initialize-insecure'.
'--datadir=DIR_NAME', '-h DIR_NAME'
Command-Line Format
'--datadir=dir_name'
System Variable
'datadir'
Scope
Global
Dynamic
No
Type
Directory name
The path to the MySQL server data directory. This option sets the 'datadir' system variable. See the description of that variable.
'--debug[=DEBUG_OPTIONS]', '-# [DEBUG_OPTIONS]'
Command-Line Format
'--debug[=debug_options]'
System Variable
'debug'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value (Unix)
'd:t:i:o,/tmp/mysqld.trace'
Default Value (Windows)
'd:t:i:O,.trace'
If MySQL is configured with the '-DWITH_DEBUG=1' 'CMake' option, you can use this option to get a trace file of what *note 'mysqld': mysqld. is doing. A typical DEBUG_OPTIONS string is 'd:t:o,FILE_NAME'. The default is 'd:t:i:o,/tmp/mysqld.trace' on Unix and 'd:t:i:O,.trace' on Windows.
Using '-DWITH_DEBUG=1' to configure MySQL with debugging support enables you to use the '--debug="d,parser_debug"' option when you start the server. This causes the Bison parser that is used to process SQL statements to dump a parser trace to the server's standard error output. Typically, this output is written to the error log.
This option may be given multiple times. Values that begin with '+' or '-' are added to or subtracted from the previous value. For example, '--debug=T' '--debug=+P' sets the value to 'P:T'.
For more information, see *note dbug-package::.
'--debug-sync-timeout[=N]'
Command-Line Format
'--debug-sync-timeout[=#]'
Type
Integer
Controls whether the Debug Sync facility for testing and debugging is enabled. Use of Debug Sync requires that MySQL be configured with the '-DWITH_DEBUG=ON' 'CMake' option (see *note source-configuration-options::). If Debug Sync is not compiled in, this option is not available. The option value is a timeout in seconds. The default value is 0, which disables Debug Sync. To enable it, specify a value greater than 0; this value also becomes the default timeout for individual synchronization points. If the option is given without a value, the timeout is set to 300 seconds.
For a description of the Debug Sync facility and how to use synchronization points, see MySQL Internals: Test Synchronization (https://dev.mysql.com/doc/internals/en/test-synchronization.html).
'--default-time-zone=TIMEZONE'
Command-Line Format
'--default-time-zone=name'
Type
String
Set the default server time zone. This option sets the global 'time_zone' system variable. If this option is not given, the default time zone is the same as the system time zone (given by the value of the 'system_time_zone' system variable.
The 'system_time_zone' variable differs from 'time_zone'. Although they might have the same value, the latter variable is used to initialize the time zone for each client that connects. See *note time-zone-support::.
'--defaults-extra-file=FILE_NAME'
Read this option file after the global option file but (on Unix) before the user option file. If the file does not exist or is otherwise inaccessible, an error occurs. If FILE_NAME is not an absolute path name, it is interpreted relative to the current directory. This must be the first option on the command line if it is used.
For additional information about this and other option-file options, see *note option-file-options::.
'--defaults-file=FILE_NAME'
Read only the given option file. If the file does not exist or is otherwise inaccessible, an error occurs. If FILE_NAME is not an absolute path name, it is interpreted relative to the current directory.
Note:
This must be the first option on the command line if it is used, except that if the server is started with the '--defaults-file' and '--install' (or '--install-manual') options, '--install' (or '--install-manual') must be first.
For additional information about this and other option-file options, see *note option-file-options::.
'--defaults-group-suffix=STR'
Read not only the usual option groups, but also groups with the usual names and a suffix of STR. For example, *note 'mysqld': mysqld. normally reads the '[mysqld]' group. If this option is given as '--defaults-group-suffix=_other', *note 'mysqld': mysqld. also reads the '[mysqld_other]' group.
For additional information about this and other option-file options, see *note option-file-options::.
'--des-key-file=FILE_NAME'
Command-Line Format
'--des-key-file=file_name'
Deprecated
Yes
Read the default DES keys from this file. These keys are used by the 'DES_ENCRYPT()' and 'DES_DECRYPT()' functions.
Note:
The 'DES_ENCRYPT()' and 'DES_DECRYPT()' functions are deprecated in MySQL 5.7, are removed in MySQL 8.0, and should no longer be used. Consequently, '--des-key-file' also is deprecated and is removed in MySQL 8.0.
'--disable-partition-engine-check'
Command-Line Format
'--disable-partition-engine-check[={OFF|ON}]'
Introduced
5.7.17
Deprecated
5.7.17
Type
Boolean
Default Value (≥ 5.7.21)
'ON'
Default Value (≥ 5.7.17, <= 5.7.20)
'OFF'
Whether to disable the startup check for tables with nonnative partitioning.
As of MySQL 5.7.17, the generic partitioning handler in the MySQL server is deprecated, and is removed in MySQL 8.0, when the storage engine used for a given table is expected to provide its own ('native') partitioning handler. Currently, only the note 'InnoDB': innodb-storage-engine. and note 'NDB': mysql-cluster. storage engines do this.
Use of tables with nonnative partitioning results in an 'ER_WARN_DEPRECATED_SYNTAX' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_warn_deprecated_syntax) warning. In MySQL 5.7.17 through 5.7.20, the server automatically performs a check at startup to identify tables that use nonnative partitioning; for any that are found, the server writes a message to its error log. To disable this check, use the '--disable-partition-engine-check' option. In MySQL 5.7.21 and later, this check is not performed; in these versions, you must start the server with '--disable-partition-engine-check=false', if you wish for the server to check for tables using the generic partitioning handler (Bug #85830, Bug #25846957).
Use of tables with nonnative partitioning results in an 'ER_WARN_DEPRECATED_SYNTAX' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_warn_deprecated_syntax) warning. Also, the server performs a check at startup to identify tables that use nonnative partitioning; for any found, the server writes a message to its error log. To disable this check, use the '--disable-partition-engine-check' option.
To prepare for migration to MySQL 8.0, any table with nonnative partitioning should be changed to use an engine that provides native partitioning, or be made nonpartitioned. For example, to change a table to 'InnoDB', execute this statement:
ALTER TABLE TABLE_NAME ENGINE = INNODB;
'--early-plugin-load=PLUGIN_LIST'
Command-Line Format
'--early-plugin-load=plugin_list'
Introduced
5.7.11
Type
String
Default Value (≥ 5.7.12)
'empty string'
Default Value (5.7.11)
'keyring_file plugin library file name'
This option tells the server which plugins to load before loading mandatory built-in plugins and before storage engine initialization. Early loading is supported only for plugins compiled with 'PLUGIN_OPT_ALLOW_EARLY'. If multiple '--early-plugin-load' options are given, only the last one applies.
The option value is a semicolon-separated list of PLUGIN_LIBRARY and NAME'='PLUGIN_LIBRARY values. Each PLUGIN_LIBRARY is the name of a library file that contains plugin code, and each NAME is the name of a plugin to load. If a plugin library is named without any preceding plugin name, the server loads all plugins in the library. With a preceding plugin name, the server loads only the named plugin from the libary. The server looks for plugin library files in the directory named by the 'plugin_dir' system variable.
For example, if plugins named 'myplug1' and 'myplug2' are contained in the plugin library files 'myplug1.so' and 'myplug2.so', use this option to perform an early plugin load:
mysqld --early-plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"
Quotes surround the argument value because otherwise some command interpreters interpret semicolon (';') as a special character. (For example, Unix shells treat it as a command terminator.)
Each named plugin is loaded early for a single invocation of *note 'mysqld': mysqld. only. After a restart, the plugin is not loaded early unless '--early-plugin-load' is used again.
If the server is started using '--initialize' or '--initialize-insecure', plugins specified by '--early-plugin-load' are not loaded.
If the server is run with '--help', plugins specified by '--early-plugin-load' are loaded but not initialized. This behavior ensures that plugin options are displayed in the help message.
'InnoDB' tablespace encryption relies on the MySQL Keyring for encryption key management, and the keyring plugin to be used must be loaded prior to storage engine initialization to facilitate 'InnoDB' recovery for encrypted tables. For example, administrators who want the 'keyring_file' plugin loaded at startup should use '--early-plugin-load' with the appropriate option value (such as 'keyring_file.so' on Unix and Unix-like systems or 'keyring_file.dll' on Windows).
Important:
In MySQL 5.7.11, the default '--early-plugin-load' value is the name of the 'keyring_file' plugin library file, causing that plugin to be loaded by default. In MySQL 5.7.12 and higher, the default '--early-plugin-load' value is empty; to load the 'keyring_file' plugin, you must explicitly specify the option with a value naming the 'keyring_file' plugin library file.
This change of default '--early-plugin-load' value introduces an incompatibility for 'InnoDB' tablespace encryption for upgrades from 5.7.11 to 5.7.12 or higher. Administrators who have encrypted 'InnoDB' tablespaces must take explicit action to ensure continued loading of the keyring plugin: Start the server with an '--early-plugin-load' option that names the plugin library file. For additional information, see *note keyring-plugin-installation::.
For information about 'InnoDB' tablespace encryption, see note innodb-data-encryption::. For general information about plugin loading, see note plugin-loading::.
'--exit-info[=FLAGS]', '-T [FLAGS]'
Command-Line Format
'--exit-info[=flags]'
Type
Integer
This is a bitmask of different flags that you can use for debugging the *note 'mysqld': mysqld. server. Do not use this option unless you know exactly what it does!
'--external-locking'
Command-Line Format
'--external-locking[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
Enable external locking (system locking), which is disabled by default. If you use this option on a system on which 'lockd' does not fully work (such as Linux), it is easy for *note 'mysqld': mysqld. to deadlock.
To disable external locking explicitly, use '--skip-external-locking'.
External locking affects only note 'MyISAM': myisam-storage-engine. table access. For more information, including conditions under which it can and cannot be used, see note external-locking::.
'--flush'
Command-Line Format
'--flush[={OFF|ON}]'
System Variable
'flush'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Flush (synchronize) all changes to disk after each SQL statement. Normally, MySQL does a write of all changes to disk only after each SQL statement and lets the operating system handle the synchronizing to disk. See *note crashing::.
Note:
If '--flush' is specified, the value of 'flush_time' does not matter and changes to 'flush_time' have no effect on flush behavior.
'--gdb'
Command-Line Format
'--gdb[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
Install an interrupt handler for 'SIGINT' (needed to stop note 'mysqld': mysqld. with '^C' to set breakpoints) and disable stack tracing and core file handling. See note using-gdb-on-mysqld::.
'--ignore-db-dir=DIR_NAME'
Command-Line Format
'--ignore-db-dir=dir_name'
Deprecated
5.7.16
Type
Directory name
This option tells the server to ignore the given directory name for purposes of the *note 'SHOW DATABASES': show-databases. statement or 'INFORMATION_SCHEMA' tables. For example, if a MySQL configuration locates the data directory at the root of a file system on Unix, the system might create a 'lost+found' directory there that the server should ignore. Starting the server with '--ignore-db-dir=lost+found' causes that name not to be listed as a database.
To specify more than one name, use this option multiple times, once for each name. Specifying the option with an empty value (that is, as '--ignore-db-dir=') resets the directory list to the empty list.
Instances of this option given at server startup are used to set the 'ignore_db_dirs' system variable.
This option is deprecated in MySQL 5.7. With the introduction of the data dictionary in MySQL 8.0, it became superfluous and was removed in that version.
'--initialize'
Command-Line Format
'--initialize[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
This option is used to initialize a MySQL installation by creating the data directory and populating the tables in the 'mysql' system database. For more information, see *note data-directory-initialization::.
This option limits the effects of, or is not compatible with, a number of other startup options for the MySQL server. Some of the most common issues of this sort are noted here:
* We strongly recommend, when initializing the data directory
with '--initialize', that you specify no additional options
other than '--datadir', other options used for setting
directory locations such as '--basedir', and possibly
'--user', if required. Options for the running MySQL server
can be specified when starting it once initialization has been
completed and *note 'mysqld': mysqld. has shut down. This
also applies when using '--initialize-insecure' instead of
'--initialize'.
* When the server is started with '--initialize', some
functionality is unavailable that limits the statements
permitted in any file named by the 'init_file' system
variable. For more information, see the description of that
variable. In addition, the 'disabled_storage_engines' system
variable has no effect.
* The '--ndbcluster' option is ignored when used together with
'--initialize'.
* '--initialize' is mutually exclusive with '--bootstrap' and
'--daemonize'.
The items in the preceding list also apply when initializing the server using the '--initialize-insecure' option.
'--initialize-insecure'
Command-Line Format
'--initialize-insecure[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
This option is used to initialize a MySQL installation by creating the data directory and populating the tables in the 'mysql' system database. This option implies '--initialize', and the same restrictions and limitations apply; for more information, see the description of that option, and *note data-directory-initialization::.
Warning:
This option creates a MySQL 'root' user with an empty password, which is insecure. For this reason, do not use it in production without setting this password manually. See *note data-directory-initialization-password-assignment::, for information about how to do this.
'--innodb-XXX'
Set an option for the 'InnoDB' storage engine. The 'InnoDB' options are listed in *note innodb-parameters::.
'--install [SERVICE_NAME]'
Command-Line Format
'--install [service_name]'
Platform Specific
Windows
(Windows only) Install the server as a Windows service that starts automatically during Windows startup. The default service name is 'MySQL' if no SERVICE_NAME value is given. For more information, see *note windows-start-service::.
Note:
If the server is started with the '--defaults-file' and '--install' options, '--install' must be first.
'--install-manual [SERVICE_NAME]'
Command-Line Format
'--install-manual [service_name]'
Platform Specific
Windows
(Windows only) Install the server as a Windows service that must be started manually. It does not start automatically during Windows startup. The default service name is 'MySQL' if no SERVICE_NAME value is given. For more information, see *note windows-start-service::.
Note:
If the server is started with the '--defaults-file' and '--install-manual' options, '--install-manual' must be first.
'--language=LANG_NAME, -L LANG_NAME'
Command-Line Format
'--language=name'
Deprecated
Yes; use 'lc-messages-dir' instead
System Variable
'language'
Scope
Global
Dynamic
No
Type
Directory name
Default Value
'/usr/local/mysql/share/mysql/english/'
The language to use for error messages. LANG_NAME can be given as the language name or as the full path name to the directory where the language files are installed. See *note error-message-language::.
'--lc-messages-dir' and '--lc-messages' should be used rather than '--language', which is deprecated (and handled as a synonym for '--lc-messages-dir'). You should expect the '--language' option to be removed in a future release of MySQL.
'--large-pages'
Command-Line Format
'--large-pages[={OFF|ON}]'
System Variable
'large_pages'
Scope
Global
Dynamic
No
Platform Specific
Linux
Type
Boolean
Default Value
'OFF'
Some hardware/operating system architectures support memory pages greater than the default (usually 4KB). The actual implementation of this support depends on the underlying hardware and operating system. Applications that perform a lot of memory accesses may obtain performance improvements by using large pages due to reduced Translation Lookaside Buffer (TLB) misses.
MySQL supports the Linux implementation of large page support (which is called HugeTLB in Linux). See *note large-page-support::. For Solaris support of large pages, see the description of the '--super-large-pages' option.
'--large-pages' is disabled by default.
'--lc-messages=LOCALE_NAME'
Command-Line Format
'--lc-messages=name'
System Variable
'lc_messages'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'en_US'
The locale to use for error messages. The default is 'en_US'. The server converts the argument to a language name and combines it with the value of '--lc-messages-dir' to produce the location for the error message file. See *note error-message-language::.
'--lc-messages-dir=DIR_NAME'
Command-Line Format
'--lc-messages-dir=dir_name'
System Variable
'lc_messages_dir'
Scope
Global
Dynamic
No
Type
Directory name
The directory where error messages are located. The server uses the value together with the value of '--lc-messages' to produce the location for the error message file. See *note error-message-language::.
'--local-service'
Command-Line Format
'--local-service'
(Windows only) A '--local-service' option following the service name causes the server to run using the 'LocalService' Windows account that has limited system privileges. If both '--defaults-file' and '--local-service' are given following the service name, they can be in any order. See *note windows-start-service::.
'--log-error[=FILE_NAME]'
Command-Line Format
'--log-error[=file_name]'
System Variable
'log_error'
Scope
Global
Dynamic
No
Type
File name
Write the error log and startup messages to this file. See *note error-log::.
If the option names no file, the error log file name on Unix and Unix-like systems is 'HOST_NAME.err' in the data directory. The file name on Windows is the same, unless the '--pid-file' option is specified. In that case, the file name is the PID file base name with a suffix of '.err' in the data directory.
If the option names a file, the error log file has that name (with an '.err' suffix added if the name has no suffix), located under the data directory unless an absolute path name is given to specify a different location.
On Windows, '--console' takes precedence over '--log-error' if both are given. In this case, the server writes the error log to the console rather than to a file. (In MySQL 5.5 and 5.6, this is reversed: '--log-error' takes precedence over '--console' if both are given.)
'--log-isam[=FILE_NAME]'
Command-Line Format
'--log-isam[=file_name]'
Type
File name
Log all 'MyISAM' changes to this file (used only when debugging 'MyISAM').
'--log-raw'
Command-Line Format
'--log-raw[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
Passwords in certain statements written to the general query log, slow query log, and binary log are rewritten by the server not to occur literally in plain text. Password rewriting can be suppressed for the general query log by starting the server with the '--log-raw' option. This option may be useful for diagnostic purposes, to see the exact text of statements as received by the server, but for security reasons is not recommended for production use.
If a query rewrite plugin is installed, the '--log-raw' option affects statement logging as follows:
* Without '--log-raw', the server logs the statement returned by
the query rewrite plugin. This may differ from the statement
as received.
* With '--log-raw', the server logs the original statement as
received.
For more information, see *note password-logging::.
'--log-short-format'
Command-Line Format
'--log-short-format[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
Log less information to the slow query log, if it has been activated.
'--log-tc=FILE_NAME'
Command-Line Format
'--log-tc=file_name'
Type
File name
Default Value
'tc.log'
The name of the memory-mapped transaction coordinator log file (for XA transactions that affect multiple storage engines when the binary log is disabled). The default name is 'tc.log'. The file is created under the data directory if not given as a full path name. This option is unused.
'--log-tc-size=SIZE'
Command-Line Format
'--log-tc-size=#'
Type
Integer
Default Value (64-bit platforms, ≥ 5.7.21)
'6 * page size'
Default Value (64-bit platforms, <= 5.7.20)
'24576'
Default Value (32-bit platforms, ≥ 5.7.21)
'6 * page size'
Default Value (32-bit platforms, <= 5.7.20)
'24576'
Minimum Value
'6 * page size'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
The size in bytes of the memory-mapped transaction coordinator log. The default and minimum values are 6 times the page size, and the value must be a multiple of the page size. (Before MySQL 5.7.21, the default size is 24KB.)
'--log-warnings[=LEVEL]', '-W [LEVEL]'
Command-Line Format
'--log-warnings[=#]'
Deprecated
Yes
System Variable
'log_warnings'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'2'
Minimum Value
'0'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
Note:
The 'log_error_verbosity' system variable is preferred over, and should be used instead of, the '--log-warnings' option or 'log_warnings' system variable. For more information, see the descriptions of 'log_error_verbosity' and 'log_warnings'. The '--log-warnings' command-line option and 'log_warnings' system variable are deprecated; expect them to be removed in a future release of MySQL.
Whether to produce additional warning messages to the error log. This option is enabled by default. To disable it, use '--log-warnings=0'. Specifying the option without a LEVEL value increments the current value by 1. The server logs messages about statements that are unsafe for statement-based logging if the value is greater than 0. Aborted connections and access-denied errors for new connection attempts are logged if the value is greater than'--memlock'
Command-Line Format
'--memlock[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
Lock the note 'mysqld': mysqld. process in memory. This option might help if you have a problem where the operating system is causing note 'mysqld': mysqld. to swap to disk.
'--memlock' works on systems that support the 'mlockall()' system call; this includes Solaris, most Linux distributions that use a 2.4 or higher kernel, and perhaps other Unix systems. On Linux systems, you can tell whether or not 'mlockall()' (and thus this option) is supported by checking to see whether or not it is defined in the system 'mman.h' file, like this:
$> grep mlockall /usr/include/sys/mman.h
If 'mlockall()' is supported, you should see in the output of the previous command something like the following:
extern int mlockall (int __flags) __THROW;
Important:
Use of this option may require you to run the server as 'root', which, for reasons of security, is normally not a good idea. See *note changing-mysql-user::.
On Linux and perhaps other systems, you can avoid the need to run the server as 'root' by changing the 'limits.conf' file. See the notes regarding the memlock limit in *note large-page-support::.
You must not use this option on a system that does not support the 'mlockall()' system call; if you do so, *note 'mysqld': mysqld. is very likely to exit as soon as you try to start it.
'--myisam-block-size=N'
Command-Line Format
'--myisam-block-size=#'
Type
Integer
Default Value
'1024'
Minimum Value
'1024'
Maximum Value
'16384'
The block size to be used for 'MyISAM' index pages.
'--no-defaults'
Do not read any option files. If program startup fails due to reading unknown options from an option file, '--no-defaults' can be used to prevent them from being read. This must be the first option on the command line if it is used.
For additional information about this and other option-file options, see *note option-file-options::.
'--old-style-user-limits'
Command-Line Format
'--old-style-user-limits[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
Enable old-style user limits. (Before MySQL 5.0.3, account resource limits were counted separately for each host from which a user connected rather than per account row in the 'user' table.) See *note user-resources::.
'--partition[=VALUE]'
Command-Line Format
'--partition[={OFF|ON}]'
Deprecated
5.7.16
Disabled by
'skip-partition'
Type
Boolean
Default Value
'ON'
Enables or disables user-defined partitioning support in the MySQL Server.
This option is deprecated in MySQL 5.7.16, and is removed from MySQL 8.0 because in MySQL 8.0, the partitioning engine is replaced by native partitioning, which cannot be disabled.
'--performance-schema-xxx'
Configure a Performance Schema option. For details, see *note performance-schema-options::.
'--plugin-load=PLUGIN_LIST'
Command-Line Format
'--plugin-load=plugin_list'
Type
String
This option tells the server to load the named plugins at startup. If multiple '--plugin-load' options are given, only the last one applies. Additional plugins to load may be specified using '--plugin-load-add' options.
The option value is a semicolon-separated list of PLUGIN_LIBRARY and NAME'='PLUGIN_LIBRARY values. Each PLUGIN_LIBRARY is the name of a library file that contains plugin code, and each NAME is the name of a plugin to load. If a plugin library is named without any preceding plugin name, the server loads all plugins in the library. With a preceding plugin name, the server loads only the named plugin from the libary. The server looks for plugin library files in the directory named by the 'plugin_dir' system variable.
For example, if plugins named 'myplug1' and 'myplug2' are contained in the plugin library files 'myplug1.so' and 'myplug2.so', use this option to perform an early plugin load:
mysqld --plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"
Quotes surround the argument value because otherwise some command interpreters interpret semicolon (';') as a special character. (For example, Unix shells treat it as a command terminator.)
Each named plugin is loaded for a single invocation of note 'mysqld': mysqld. only. After a restart, the plugin is not loaded unless '--plugin-load' is used again. This is in contrast to note 'INSTALL PLUGIN': install-plugin, which adds an entry to the 'mysql.plugins' table to cause the plugin to be loaded for every normal server startup.
During the normal startup sequence, the server determines which plugins to load by reading the 'mysql.plugins' system table. If the server is started with the '--skip-grant-tables' option, plugins registered in the 'mysql.plugins' table are not loaded and are unavailable. '--plugin-load' enables plugins to be loaded even when '--skip-grant-tables' is given. '--plugin-load' also enables plugins to be loaded at startup that cannot be loaded at runtime.
This option does not set a corresponding system variable. The output of note 'SHOW PLUGINS': show-plugins. provides information about loaded plugins. More detailed information can be found in the Information Schema note 'PLUGINS': information-schema-plugins-table. table. See *note obtaining-plugin-information::.
For additional information about plugin loading, see *note plugin-loading::.
'--plugin-load-add=PLUGIN_LIST'
Command-Line Format
'--plugin-load-add=plugin_list'
Type
String
This option complements the '--plugin-load' option. '--plugin-load-add' adds a plugin or plugins to the set of plugins to be loaded at startup. The argument format is the same as for '--plugin-load'. '--plugin-load-add' can be used to avoid specifying a large set of plugins as a single long unwieldy '--plugin-load' argument.
'--plugin-load-add' can be given in the absence of '--plugin-load', but any instance of '--plugin-load-add' that appears before '--plugin-load'. has no effect because '--plugin-load' resets the set of plugins to load. In other words, these options:
--plugin-load=x --plugin-load-add=y
are equivalent to this option:
--plugin-load="x;y"
But these options:
--plugin-load-add=y --plugin-load=x
are equivalent to this option:
--plugin-load=x
This option does not set a corresponding system variable. The output of note 'SHOW PLUGINS': show-plugins. provides information about loaded plugins. More detailed information can be found in the Information Schema note 'PLUGINS': information-schema-plugins-table. table. See *note obtaining-plugin-information::.
For additional information about plugin loading, see *note plugin-loading::.
'--plugin-XXX'
Specifies an option that pertains to a server plugin. For example, many storage engines can be built as plugins, and for such engines, options for them can be specified with a '--plugin' prefix. Thus, the '--innodb-file-per-table' option for 'InnoDB' can be specified as '--plugin-innodb-file-per-table'.
For boolean options that can be enabled or disabled, the '--skip' prefix and other alternative formats are supported as well (see *note option-modifiers::). For example, '--skip-plugin-innodb-file-per-table' disables 'innodb-file-per-table'.
The rationale for the '--plugin' prefix is that it enables plugin options to be specified unambiguously if there is a name conflict with a built-in server option. For example, were a plugin writer to name a plugin 'sql' and implement a 'mode' option, the option name might be '--sql-mode', which would conflict with the built-in option of the same name. In such cases, references to the conflicting name are resolved in favor of the built-in option. To avoid the ambiguity, users can specify the plugin option as '--plugin-sql-mode'. Use of the '--plugin' prefix for plugin options is recommended to avoid any question of ambiguity.
'--port=PORT_NUM', '-P PORT_NUM'
Command-Line Format
'--port=port_num'
System Variable
'port'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'3306'
Minimum Value
'0'
Maximum Value
'65535'
The port number to use when listening for TCP/IP connections. On Unix and Unix-like systems, the port number must be 1024 or higher unless the server is started by the 'root' operating system user. Setting this option to 0 causes the default value to be used.
'--port-open-timeout=NUM'
Command-Line Format
'--port-open-timeout=#'
Type
Integer
Default Value
'0'
On some systems, when the server is stopped, the TCP/IP port might not become available immediately. If the server is restarted quickly afterward, its attempt to reopen the port can fail. This option indicates how many seconds the server should wait for the TCP/IP port to become free if it cannot be opened. The default is not to wait.
'--print-defaults'
Print the program name and all options that it gets from option files. Password values are masked. This must be the first option on the command line if it is used, except that it may be used immediately after '--defaults-file' or '--defaults-extra-file'.
For additional information about this and other option-file options, see *note option-file-options::.
'--remove [SERVICE_NAME]'
Command-Line Format
'--remove [service_name]'
Platform Specific
Windows
(Windows only) Remove a MySQL Windows service. The default service name is 'MySQL' if no SERVICE_NAME value is given. For more information, see *note windows-start-service::.
'--safe-user-create'
Command-Line Format
'--safe-user-create[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
If this option is enabled, a user cannot create new MySQL users by using the *note 'GRANT': grant. statement unless the user has the 'INSERT' privilege for the 'mysql.user' system table or any column in the table. If you want a user to have the ability to create new users that have those privileges that the user has the right to grant, you should grant the user the following privilege:
GRANT INSERT(user) ON mysql.user TO 'USER_NAME'@'HOST_NAME';
This ensures that the user cannot change any privilege columns directly, but has to use the *note 'GRANT': grant. statement to give privileges to other users.
'--skip-grant-tables'
Command-Line Format
'--skip-grant-tables[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
This option affects the server startup sequence:
* '--skip-grant-tables' causes the server not to read the grant
tables in the 'mysql' system database, and thus to start
without using the privilege system at all. This gives anyone
with access to the server _unrestricted access to all
databases_.
To cause a server started with '--skip-grant-tables' to load
the grant tables at runtime, perform a privilege-flushing
operation, which can be done in these ways:
* Issue a MySQL 'FLUSH PRIVILEGES' statement after
connecting to the server.
* Execute a *note 'mysqladmin flush-privileges':
mysqladmin. or *note 'mysqladmin reload': mysqladmin.
command from the command line.
Privilege flushing might also occur implicitly as a result of
other actions performed after startup, thus causing the server
to start using the grant tables. For example, *note
'mysql_upgrade': mysql-upgrade. flushes the privileges during
the upgrade procedure.
* '--skip-grant-tables' causes the server not to load certain
other objects registered in the 'mysql' system database:
* Plugins installed using *note 'INSTALL PLUGIN':
install-plugin. and registered in the 'mysql.plugin'
system table.
To cause plugins to be loaded even when using
'--skip-grant-tables', use the '--plugin-load' or
'--plugin-load-add' option.
* Scheduled events installed using *note 'CREATE EVENT':
create-event. and registered in the 'mysql.event' system
table.
* Loadable functions installed using *note 'CREATE
FUNCTION': create-function-loadable. and registered in
the 'mysql.func' system table.
* '--skip-grant-tables' causes the 'disabled_storage_engines'
system variable to have no effect.
'--skip-host-cache'
Command-Line Format
'--skip-host-cache'
Disable use of the internal host cache for faster name-to-IP resolution. With the cache disabled, the server performs a DNS lookup every time a client connects.
Use of '--skip-host-cache' is similar to setting the 'host_cache_size' system variable to 0, but 'host_cache_size' is more flexible because it can also be used to resize, enable, or disable the host cache at runtime, not just at server startup.
Starting the server with '--skip-host-cache' does not prevent runtime changes to the value of 'host_cache_size', but such changes have no effect and the cache is not re-enabled even if 'host_cache_size' is set larger than 0.
For more information about how the host cache works, see *note host-cache::.
'--skip-innodb'
Disable the 'InnoDB' storage engine. In this case, because the default storage engine is *note 'InnoDB': innodb-storage-engine, the server cannot start unless you also use '--default-storage-engine' and '--default-tmp-storage-engine' to set the default to some other engine for both permanent and 'TEMPORARY' tables.
The 'InnoDB' storage engine cannot be disabled, and the '--skip-innodb' option is deprecated and has no effect. Its use results in a warning. Expect this option to be removed in a future release of MySQL.
'--skip-new'
Command-Line Format
'--skip-new'
This option disables (what used to be considered) new, possibly unsafe behaviors. It results in these settings: 'delay_key_write=OFF', 'concurrent_insert=NEVER', 'automatic_sp_privileges=OFF'. It also causes note 'OPTIMIZE TABLE': optimize-table. to be mapped to note 'ALTER TABLE': alter-table. for storage engines for which *note 'OPTIMIZE TABLE': optimize-table. is not supported.
'--skip-partition'
Command-Line Format
'--skip-partition' '--disable-partition'
Deprecated
5.7.16
Disables user-defined partitioning. Partitioned tables can be seen using note 'SHOW TABLES': show-tables. or by querying the Information Schema note 'TABLES': information-schema-tables-table. table, but cannot be created or modified, nor can data in such tables be accessed. All partition-specific columns in the Information Schema *note 'PARTITIONS': information-schema-partitions-table. table display 'NULL'.
Since *note 'DROP TABLE': drop-table. removes table definition ('.frm') files, this statement works on partitioned tables even when partitioning is disabled using the option. The statement, however, does not remove partition definitions associated with partitioned tables in such cases. For this reason, you should avoid dropping partitioned tables with partitioning disabled, or take action to remove orphaned '.par' files manually (if present).
Note:
In MySQL 5.7, partition definition ('.par') files are no longer created for partitioned 'InnoDB' tables. Instead, partition definitions are stored in the 'InnoDB' internal data dictionary. Partition definition ('.par') files continue to be used for partitioned 'MyISAM' tables.
This option is deprecated in MySQL 5.7.16, and is removed from MySQL 8.0 because in MySQL 8.0, the partitioning engine is replaced by native partitioning, which cannot be disabled.
'--skip-show-database'
Command-Line Format
'--skip-show-database'
System Variable
'skip_show_database'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'OFF'
This option sets the 'skip_show_database' system variable that controls who is permitted to use the note 'SHOW DATABASES': show-databases. statement. See note server-system-variables::.
'--skip-stack-trace'
Command-Line Format
'--skip-stack-trace'
Do not write stack traces. This option is useful when you are running note 'mysqld': mysqld. under a debugger. On some systems, you also must use this option to get a core file. See note debugging-mysql::.
'--slow-start-timeout=TIMEOUT'
Command-Line Format
'--slow-start-timeout=#'
Type
Integer
Default Value
'15000'
This option controls the Windows service control manager's service start timeout. The value is the maximum number of milliseconds that the service control manager waits before trying to kill the windows service during startup. The default value is 15000 (15 seconds). If the MySQL service takes too long to start, you may need to increase this value. A value of 0 means there is no timeout.
'--socket=PATH'
Command-Line Format
'--socket={file_name|pipe_name}'
System Variable
'socket'
Scope
Global
Dynamic
No
Type
String
Default Value (Windows)
'MySQL'
Default Value (Other)
'/tmp/mysql.sock'
On Unix, this option specifies the Unix socket file to use when listening for local connections. The default value is '/tmp/mysql.sock'. If this option is given, the server creates the file in the data directory unless an absolute path name is given to specify a different directory. On Windows, the option specifies the pipe name to use when listening for local connections that use a named pipe. The default value is 'MySQL' (not case-sensitive).
'--sql-mode=VALUE[,VALUE[,VALUE...]]'
Command-Line Format
'--sql-mode=name'
System Variable
'sql_mode'
Scope
Global, Session
Dynamic
Yes
Type
Set
Default Value
'ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION'
Valid Values
'ALLOW_INVALID_DATES' 'ANSI_QUOTES' 'ERROR_FOR_DIVISION_BY_ZERO' 'HIGH_NOT_PRECEDENCE' 'IGNORE_SPACE' 'NO_AUTO_CREATE_USER' 'NO_AUTO_VALUE_ON_ZERO' 'NO_BACKSLASH_ESCAPES' 'NO_DIR_IN_CREATE' 'NO_ENGINE_SUBSTITUTION' 'NO_FIELD_OPTIONS' 'NO_KEY_OPTIONS' 'NO_TABLE_OPTIONS' 'NO_UNSIGNED_SUBTRACTION' 'NO_ZERO_DATE' 'NO_ZERO_IN_DATE' 'ONLY_FULL_GROUP_BY' 'PAD_CHAR_TO_FULL_LENGTH' 'PIPES_AS_CONCAT' 'REAL_AS_FLOAT' 'STRICT_ALL_TABLES' 'STRICT_TRANS_TABLES'
Set the SQL mode. See *note sql-mode::.
Note:
MySQL installation programs may configure the SQL mode during the installation process. If the SQL mode differs from the default or from what you expect, check for a setting in an option file that the server reads at startup.
'--ssl', '--skip-ssl'
Command-Line Format
'--ssl[={OFF|ON}]'
Disabled by
'skip-ssl'
Type
Boolean
Default Value
'ON'
The '--ssl' option specifies that the server permits but does not require encrypted connections. This option is enabled by default.
'--ssl' can be specified in negated form as '--skip-ssl' or a synonym ('--ssl=OFF', '--disable-ssl'). In this case, the option specifies that the server does not permit encrypted connections, regardless of the settings of the 'tls_XXX' and 'ssl_XXX' system variables.
For more information about configuring whether the server permits clients to connect using SSL and indicating where to find SSL keys and certificates, see *note using-encrypted-connections::, which also describes server capabilities for certificate and key file autogeneration and autodiscovery. Consider setting at least the 'ssl_cert' and 'ssl_key' system variables on the server side and the '--ssl-ca' (or '--ssl-capath') option on the client side.
'--standalone'
Command-Line Format
'--standalone'
Platform Specific
Windows
Available on Windows only; instructs the MySQL server not to run as a service.
'--super-large-pages'
Command-Line Format
'--super-large-pages[={OFF|ON}]'
Platform Specific
Solaris
Type
Boolean
Default Value
'OFF'
Standard use of large pages in MySQL attempts to use the largest size supported, up to 4MB. Under Solaris, a 'super large pages' feature enables uses of pages up to 256MB. This feature is available for recent SPARC platforms. It can be enabled or disabled by using the '--super-large-pages' or '--skip-super-large-pages' option.
'--symbolic-links', '--skip-symbolic-links'
Command-Line Format
'--symbolic-links[={OFF|ON}]'
Type
Boolean
Default Value
'ON'
Enable or disable symbolic link support. On Unix, enabling symbolic links means that you can link a 'MyISAM' index file or data file to another directory with the 'INDEX DIRECTORY' or 'DATA DIRECTORY' option of the note 'CREATE TABLE': create-table. statement. If you delete or rename the table, the files that its symbolic links point to also are deleted or renamed. See note symbolic-links-to-tables::.
This option has no meaning on Windows.
'--sysdate-is-now'
Command-Line Format
'--sysdate-is-now[={OFF|ON}]'
Type
Boolean
Default Value
'OFF'
'SYSDATE()' by default returns the time at which it executes, not the time at which the statement in which it occurs begins executing. This differs from the behavior of 'NOW()'. This option causes 'SYSDATE()' to be a synonym for 'NOW()'. For information about the implications for binary logging and replication, see the description for 'SYSDATE()' in note date-and-time-functions:: and for 'SET TIMESTAMP' in note server-system-variables::.
'--tc-heuristic-recover={COMMIT|ROLLBACK}'
Command-Line Format
'--tc-heuristic-recover=name'
Type
Enumeration
Default Value
'OFF'
Valid Values
'OFF' 'COMMIT' 'ROLLBACK'
The decision to use in a manual heuristic recovery.
If a '--tc-heuristic-recover' option is specified, the server exits regardless of whether manual heuristic recovery is successful.
On systems with more than one storage engine capable of two-phase commit, the 'ROLLBACK' option is not safe and causes recovery to halt with the following error:
[ERROR] --tc-heuristic-recover rollback
strategy is not safe on systems with more than one 2-phase-commit-capable
storage engine. Aborting crash recovery.
'--temp-pool'
Command-Line Format
'--temp-pool[={OFF|ON}]'
Deprecated
5.7.18
Type
Boolean
Default Value (Linux)
'ON'
Default Value (Other)
'OFF'
This option is ignored except on Linux. On Linux, it causes most temporary files created by the server to use a small set of names, rather than a unique name for each new file. This works around a problem in the Linux kernel dealing with creating many new files with different names. With the old behavior, Linux seems to 'leak' memory, because it is being allocated to the directory entry cache rather than to the disk cache.
As of MySQL 5.7.18, this option is deprecated and is removed in MySQL 8.0.
'--transaction-isolation=LEVEL'
Command-Line Format
'--transaction-isolation=name'
System Variable (≥ 5.7.20)
'transaction_isolation'
Scope (≥ 5.7.20)
Global, Session
Dynamic (≥ 5.7.20)
Yes
Type
Enumeration
Default Value
'REPEATABLE-READ'
Valid Values
'READ-UNCOMMITTED' 'READ-COMMITTED' 'REPEATABLE-READ' 'SERIALIZABLE'
Sets the default transaction isolation level. The 'level' value can be 'READ-UNCOMMITTED', 'READ-COMMITTED', 'REPEATABLE-READ', or 'SERIALIZABLE'. See *note set-transaction::.
The default transaction isolation level can also be set at runtime using the *note 'SET TRANSACTION': set-transaction. statement or by setting the 'tx_isolation' (or, as of MySQL 5.7.20, 'transaction_isolation') system variable.
'--transaction-read-only'
Command-Line Format
'--transaction-read-only[={OFF|ON}]'
System Variable (≥ 5.7.20)
'transaction_read_only'
Scope (≥ 5.7.20)
Global, Session
Dynamic (≥ 5.7.20)
Yes
Type
Boolean
Default Value
'OFF'
Sets the default transaction access mode. By default, read-only mode is disabled, so the mode is read/write.
To set the default transaction access mode at runtime, use the note 'SET TRANSACTION': set-transaction. statement or set the 'tx_read_only' (or, as of MySQL 5.7.20, 'transaction_read_only') system variable. See note set-transaction::.
'--tmpdir=DIR_NAME', '-t DIR_NAME'
Command-Line Format
'--tmpdir=dir_name'
System Variable
'tmpdir'
Scope
Global
Dynamic
No
Type
Directory name
The path of the directory to use for creating temporary files. It might be useful if your default '/tmp' directory resides on a partition that is too small to hold temporary tables. This option accepts several paths that are used in round-robin fashion. Paths should be separated by colon characters (':') on Unix and semicolon characters (';') on Windows.
'--tmpdir' can be a non-permanent location, such as a directory on a memory-based file system or a directory that is cleared when the server host restarts. If the MySQL server is acting as a replica, and you are using a non-permanent location for '--tmpdir', consider setting a different temporary directory for the replica using the 'slave_load_tmpdir' system variable. For a replication replica, the temporary files used to replicate *note 'LOAD DATA': load-data. statements are stored in this directory, so with a permanent location they can survive machine restarts, although replication can now continue after a restart if the temporary files have been removed.
For more information about the storage location of temporary files, see *note temporary-files::.
'--user={USER_NAME|USER_ID}', '-u {USER_NAME|USER_ID}'
Command-Line Format
'--user=name'
Type
String
Run the *note 'mysqld': mysqld. server as the user having the name USER_NAME or the numeric user ID USER_ID. ('User' in this context refers to a system login account, not a MySQL user listed in the grant tables.)
This option is mandatory when starting note 'mysqld': mysqld. as 'root'. The server changes its user ID during its startup sequence, causing it to run as that particular user rather than as 'root'. See note security-guidelines::.
To avoid a possible security hole where a user adds a '--user=root' option to a 'my.cnf' file (thus causing the server to run as 'root'), *note 'mysqld': mysqld. uses only the first '--user' option specified and produces a warning if there are multiple '--user' options. Options in '/etc/my.cnf' and '$MYSQL_HOME/my.cnf' are processed before command-line options, so it is recommended that you put a '--user' option in '/etc/my.cnf' and specify a value other than 'root'. The option in '/etc/my.cnf' is found before any other '--user' options, which ensures that the server runs as a user other than 'root', and that a warning results if any other '--user' option is found.
'--validate-user-plugins[={OFF|ON}]'
Command-Line Format
'--validate-user-plugins[={OFF|ON}]'
Type
Boolean
Default Value
'ON'
If this option is enabled (the default), the server checks each user account and produces a warning if conditions are found that would make the account unusable:
* The account requires an authentication plugin that is not
loaded.
* The account requires the 'sha256_password' authentication
plugin but the server was started with neither SSL nor RSA
enabled as required by this plugin.
Enabling '--validate-user-plugins' slows down server initialization and 'FLUSH PRIVILEGES'. If you do not require the additional checking, you can disable this option at startup to avoid the performance decrement.
'--verbose', '-v'
Use this option with the '--help' option for detailed help.
'--version', '-V'
Display version information and exit.
File: manual.info.tmp, Node: server-system-variables, Next: using-system-variables, Prev: server-options, Up: mysqld-server
The MySQL server maintains many system variables that affect its operation. Most system variables can be set at server startup using options on the command line or in an option file. Most of them can be changed dynamically at runtime using the *note 'SET': set-variable. statement, which enables you to modify operation of the server without having to stop and restart it. Some variables are read-only, and their values are determined by the system environment, by how MySQL is installed on the system, or possibly by the options used to compile MySQL. Most system variables have a default value, but there are exceptions, including read-only variables. You can also use system variable values in expressions.
At runtime, setting a global system variable value requires the 'SUPER' privilege. Setting a session system variable value normally requires no special privileges and can be done by any user, although there are exceptions. For more information, see *note system-variable-privileges::
There are several ways to see the names and values of system variables:
To see the values that a server uses based on its compiled-in defaults and any option files that it reads, use this command:
mysqld --verbose --help
To see the values that a server uses based on only its compiled-in defaults, ignoring the settings in any option files, use this command:
mysqld --no-defaults --verbose --help
To see the current values used by a running server, use the note 'SHOW VARIABLES': show-variables. statement or the Performance Schema system variable tables. See note performance-schema-system-variable-tables::.
This section provides a description of each system variable. For a system variable summary table, see note server-system-variable-reference::. For more information about manipulation of system variables, see note using-system-variables::.
For additional system variable information, see these sections:
*note using-system-variables::, discusses the syntax for setting and displaying system variable values.
*note dynamic-system-variables::, lists the variables that can be set at runtime.
Information on tuning system variables can be found in *note server-configuration::.
*note innodb-parameters::, lists 'InnoDB' system variables.
*note mysql-cluster-system-variables::, lists system variables which are specific to NDB Cluster.
For information on server system variables specific to replication, see *note replication-options::.
Note:
Some of the following variable descriptions refer to 'enabling' or 'disabling' a variable. These variables can be enabled with the note 'SET': set-variable. statement by setting them to 'ON' or '1', or disabled by setting them to 'OFF' or '0'. Boolean variables can be set at startup to the values 'ON', 'TRUE', 'OFF', and 'FALSE' (not case-sensitive), as well as '1' and '0'. See note option-modifiers::.
Some system variables control the size of buffers or caches. For a given buffer, the server might need to allocate internal data structures. These structures typically are allocated from the total memory allocated to the buffer, and the amount of space required might be platform dependent. This means that when you assign a value to a system variable that controls a buffer size, the amount of space actually available might differ from the value assigned. In some cases, the amount might be less than the value assigned. It is also possible for the server to adjust a value upward. For example, if you assign a value of 0 to a variable for which the minimal value is 1024, the server sets the value to 1024.
Values for buffer sizes, lengths, and stack sizes are given in bytes unless otherwise specified.
Note:
Some system variable descriptions include a block size, in which case a value that is not an integer multiple of the stated block size is rounded down to the next lower multiple of the block size before being stored by the server, that is to 'FLOOR(VALUE)' '* BLOCK_SIZE'.
Example: Suppose that the block size for a given variable is given as 4096, and you set the value of the variable to 100000 (we assume that the variable's maximum value is greater than this number). Since 100000 / 4096 = 24.4140625, the server automatically lowers the value to 98304 (24 * 4096) before storing it.
In some cases, the stated maximum for a variable is the maximum allowed by the MySQL parser, but is not an exact multiple of the block size. In such cases, the effective maximum is the next lower multiple of the block size.
Example: A system variable's maxmum value is shown as 4294967295 (2^32-1), and its block size is 1024. 4294967295 / 1024 = 4194303.9990234375, so if you set this variable to its stated maximum, the value actually stored is 4194303 * 1024 = 4294966272.
Some system variables take file name values. Unless otherwise specified, the default file location is the data directory if the value is a relative path name. To specify the location explicitly, use an absolute path name. Suppose that the data directory is '/var/mysql/data'. If a file-valued variable is given as a relative path name, it is located under '/var/mysql/data'. If the value is an absolute path name, its location is as given by the path name.
'authentication_windows_log_level'
Command-Line Format
'--authentication-windows-log-level=#'
System Variable
'authentication_windows_log_level'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'2'
Minimum Value
'0'
Maximum Value
'4'
This variable is available only if the 'authentication_windows' Windows authentication plugin is enabled and debugging code is enabled. See *note windows-pluggable-authentication::.
This variable sets the logging level for the Windows authentication plugin. The following table shows the permitted values.
Value Description
0 No logging
1 Log only error messages
2 Log level 1 messages and warning messages
3 Log level 2 messages and information notes
4 Log level 3 messages and debug messages
'authentication_windows_use_principal_name'
Command-Line Format
'--authentication-windows-use-principal-name[={OFF|ON}]'
System Variable
'authentication_windows_use_principal_name'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'ON'
This variable is available only if the 'authentication_windows' Windows authentication plugin is enabled. See *note windows-pluggable-authentication::.
A client that authenticates using the 'InitSecurityContext()' function should provide a string identifying the service to which it connects (TARGETNAME). MySQL uses the principal name (UPN) of the account under which the server is running. The UPN has the form 'USER_ID@COMPUTER_NAME' and need not be registered anywhere to be used. This UPN is sent by the server at the beginning of authentication handshake.
This variable controls whether the server sends the UPN in the initial challenge. By default, the variable is enabled. For security reasons, it can be disabled to avoid sending the server's account name to a client as cleartext. If the variable is disabled, the server always sends a '0x00' byte in the first challenge, the client does not specify TARGETNAME, and as a result, NTLM authentication is used.
If the server fails to obtain its UPN (which happens primarily in environments that do not support Kerberos authentication), the UPN is not sent by the server and NTLM authentication is used.
'autocommit'
Command-Line Format
'--autocommit[={OFF|ON}]'
System Variable
'autocommit'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'ON'
The autocommit mode. If set to 1, all changes to a table take effect immediately. If set to 0, you must use note 'COMMIT': commit. to accept a transaction or note 'ROLLBACK': commit. to cancel it. If 'autocommit' is 0 and you change it to 1, MySQL performs an automatic note 'COMMIT': commit. of any open transaction. Another way to begin a transaction is to use a note 'START TRANSACTION': commit. or note 'BEGIN': commit. statement. See note commit::.
By default, client connections begin with 'autocommit' set to 1. To cause clients to begin with a default of 0, set the global 'autocommit' value by starting the server with the '--autocommit=0' option. To set the variable using an option file, include these lines:
[mysqld]
autocommit=0
'automatic_sp_privileges'
Command-Line Format
'--automatic-sp-privileges[={OFF|ON}]'
System Variable
'automatic_sp_privileges'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'ON'
When this variable has a value of 1 (the default), the server automatically grants the 'EXECUTE' and 'ALTER ROUTINE' privileges to the creator of a stored routine, if the user cannot already execute and alter or drop the routine. (The 'ALTER ROUTINE' privilege is required to drop the routine.) The server also automatically drops those privileges from the creator when the routine is dropped. If 'automatic_sp_privileges' is 0, the server does not automatically add or drop these privileges.
The creator of a routine is the account used to execute the 'CREATE' statement for it. This might not be the same as the account named as the 'DEFINER' in the routine definition.
If you start *note 'mysqld': mysqld. with '--skip-new', 'automatic_sp_privileges' is set to 'OFF'.
See also *note stored-routines-privileges::.
'auto_generate_certs'
Command-Line Format
'--auto-generate-certs[={OFF|ON}]'
System Variable
'auto_generate_certs'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'ON'
This variable is available if the server was compiled using OpenSSL (see *note ssl-libraries::). It controls whether the server autogenerates SSL key and certificate files in the data directory, if they do not already exist.
At startup, the server automatically generates server-side and client-side SSL certificate and key files in the data directory if the 'auto_generate_certs' system variable is enabled, no SSL options other than '--ssl' are specified, and the server-side SSL files are missing from the data directory. These files enable secure client connections using SSL; see *note using-encrypted-connections::.
For more information about SSL file autogeneration, including file names and characteristics, see *note creating-ssl-rsa-files-using-mysql::
The 'sha256_password_auto_generate_rsa_keys' system variable is related but controls autogeneration of RSA key-pair files needed for secure password exchange using RSA over unencypted connections.
'avoid_temporal_upgrade'
Command-Line Format
'--avoid-temporal-upgrade[={OFF|ON}]'
Deprecated
Yes
System Variable
'avoid_temporal_upgrade'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
This variable controls whether note 'ALTER TABLE': alter-table. implicitly upgrades temporal columns found to be in pre-5.6.4 format (note 'TIME': time, note 'DATETIME': datetime, and note 'TIMESTAMP': datetime. columns without support for fractional seconds precision). Upgrading such columns requires a table rebuild, which prevents any use of fast alterations that might otherwise apply to the operation to be performed.
This variable is disabled by default. Enabling it causes *note 'ALTER TABLE': alter-table. not to rebuild temporal columns and thereby be able to take advantage of possible fast alterations.
This variable is deprecated; expect it to be removed in a future release of MySQL.
'back_log'
Command-Line Format
'--back-log=#'
System Variable
'back_log'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'-1' (signifies autosizing; do not assign this literal value)
Minimum Value
'1'
Maximum Value
'65535'
The number of outstanding connection requests MySQL can have. This comes into play when the main MySQL thread gets very many connection requests in a very short time. It then takes some time (although very little) for the main thread to check the connection and start a new thread. The 'back_log' value indicates how many requests can be stacked during this short time before MySQL momentarily stops answering new requests. You need to increase this only if you expect a large number of connections in a short period of time.
In other words, this value is the size of the listen queue for incoming TCP/IP connections. Your operating system has its own limit on the size of this queue. The manual page for the Unix 'listen()' system call should have more details. Check your OS documentation for the maximum value for this variable. 'back_log' cannot be set higher than your operating system limit.
The default value is based on the following formula, capped to a limit of 900:
50 + (max_connections / 5)
'basedir'
Command-Line Format
'--basedir=dir_name'
System Variable
'basedir'
Scope
Global
Dynamic
No
Type
Directory name
Default Value
'configuration-dependent default'
The path to the MySQL installation base directory.
'big_tables'
Command-Line Format
'--big-tables[={OFF|ON}]'
System Variable
'big_tables'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
If enabled, the server stores all temporary tables on disk rather than in memory. This prevents most 'The table TBL_NAME is full' errors for *note 'SELECT': select. operations that require a large temporary table, but also slows down queries for which in-memory tables would suffice.
The default value for new connections is 'OFF' (use in-memory temporary tables). Normally, it should never be necessary to enable this variable because the server is able to handle large result sets automatically by using memory for small temporary tables and switching to disk-based tables as required.
'bind_address'
Command-Line Format
'--bind-address=addr'
System Variable
'bind_address'
Scope
Global
Dynamic
No
Type
String
Default Value
'*'
The MySQL server listens on a single network socket for TCP/IP connections. This socket is bound to a single address, but it is possible for an address to map onto multiple network interfaces. To specify an address, set 'bind_address=ADDR' at server startup, where ADDR is an IPv4 or IPv6 address or a host name. If ADDR is a host name, the server resolves the name to an IP address and binds to that address. If a host name resolves to multiple IP addresses, the server uses the first IPv4 address if there are any, or the first IPv6 address otherwise.
The server treats different types of addresses as follows:
* If the address is '*', the server accepts TCP/IP connections
on all server host IPv4 interfaces, and, if the server host
supports IPv6, on all IPv6 interfaces. Use this address to
permit both IPv4 and IPv6 connections on all server
interfaces. This value is the default.
* If the address is '0.0.0.0', the server accepts TCP/IP
connections on all server host IPv4 interfaces.
* If the address is '::', the server accepts TCP/IP connections
on all server host IPv4 and IPv6 interfaces.
* If the address is an IPv4-mapped address, the server accepts
TCP/IP connections for that address, in either IPv4 or IPv6
format. For example, if the server is bound to
'::ffff:127.0.0.1', clients can connect using
'--host=127.0.0.1' or '--host=::ffff:127.0.0.1'.
* If the address is a 'regular' IPv4 or IPv6 address (such as
'127.0.0.1' or '::1'), the server accepts TCP/IP connections
only for that IPv4 or IPv6 address.
If binding to the address fails, the server produces an error and does not start.
If you intend to bind the server to a specific address, be sure that the 'mysql.user' system table contains an account with administrative privileges that you can use to connect to that address. Otherwise, you cannot shut down the server. For example, if you bind the server to '*', you can connect to it using all existing accounts. But if you bind the server to '::1', it accepts connections only on that address. In that case, first make sure that the ''root'@'::1'' account is present in the 'mysql.user' table so you can still connect to the server to shut it down.
This variable has no effect for the embedded server ('libmysqld') and is not visible within the embedded server.
'block_encryption_mode'
Command-Line Format
'--block-encryption-mode=#'
System Variable
'block_encryption_mode'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'aes-128-ecb'
This variable controls the block encryption mode for block-based algorithms such as AES. It affects encryption for 'AES_ENCRYPT()' and 'AES_DECRYPT()'.
'block_encryption_mode' takes a value in 'aes-KEYLEN-MODE' format, where KEYLEN is the key length in bits and MODE is the encryption mode. The value is not case-sensitive. Permitted KEYLEN values are 128, 192, and 256. Permitted encryption modes depend on whether MySQL was compiled using OpenSSL or yaSSL:
* For OpenSSL, permitted MODE values are: 'ECB', 'CBC', 'CFB1',
'CFB8', 'CFB128', 'OFB'
* For yaSSL, permitted MODE values are: 'ECB', 'CBC'
For example, this statement causes the AES encryption functions to use a key length of 256 bits and the CBC mode:
SET block_encryption_mode = 'aes-256-cbc';
An error occurs for attempts to set 'block_encryption_mode' to a value containing an unsupported key length or a mode that the SSL library does not support.
'bulk_insert_buffer_size'
Command-Line Format
'--bulk-insert-buffer-size=#'
System Variable
'bulk_insert_buffer_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'8388608'
Minimum Value
'0'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
Unit
bytes/thread
'MyISAM' uses a special tree-like cache to make bulk inserts faster for note 'INSERT ... SELECT': insert-select, 'INSERT ... VALUES (...), (...), ...', and note 'LOAD DATA': load-data. when adding data to nonempty tables. This variable limits the size of the cache tree in bytes per thread. Setting it to 0 disables this optimization. The default value is 8MB.
'character_set_client'
System Variable
'character_set_client'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'utf8'
The character set for statements that arrive from the client. The session value of this variable is set using the character set requested by the client when the client connects to the server. (Many clients support a '--default-character-set' option to enable this character set to be specified explicitly. See also *note charset-connection::.) The global value of the variable is used to set the session value in cases when the client-requested value is unknown or not available, or the server is configured to ignore client requests:
* The client requests a character set not known to the server.
For example, a Japanese-enabled client requests 'sjis' when
connecting to a server not configured with 'sjis' support.
* The client is from a version of MySQL older than MySQL 4.1,
and thus does not request a character set.
* *note 'mysqld': mysqld. was started with the
'--skip-character-set-client-handshake' option, which causes
it to ignore client character set configuration. This
reproduces MySQL 4.0 behavior and is useful should you wish to
upgrade the server without upgrading all the clients.
Some character sets cannot be used as the client character set. Attempting to use them as the 'character_set_client' value produces an error. See *note charset-connection-impermissible-client-charset::.
'character_set_connection'
System Variable
'character_set_connection'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'utf8'
The character set used for literals specified without a character set introducer and for number-to-string conversion. For information about introducers, see *note charset-introducer::.
'character_set_database'
System Variable
'character_set_database'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'latin1'
Footnote
This option is dynamic, but should be set only by server. You should not set this variable manually.
The character set used by the default database. The server sets this variable whenever the default database changes. If there is no default database, the variable has the same value as 'character_set_server'.
The global 'character_set_database' and 'collation_database' system variables are deprecated in MySQL 5.7; expect them to be removed in a future version of MySQL.
Assigning a value to the session 'character_set_database' and 'collation_database' system variables is deprecated in MySQL 5.7 and assignments produce a warning. You should expect the session variables to become read only in a future version of MySQL and assignments to produce an error, while remaining possible to access the session variables to determine the database character set and collation for the default database.
'character_set_filesystem'
Command-Line Format
'--character-set-filesystem=name'
System Variable
'character_set_filesystem'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'binary'
The file system character set. This variable is used to interpret string literals that refer to file names, such as in the note 'LOAD DATA': load-data. and note 'SELECT ... INTO OUTFILE': select-into. statements and the 'LOAD_FILE()' function. Such file names are converted from 'character_set_client' to 'character_set_filesystem' before the file opening attempt occurs. The default value is 'binary', which means that no conversion occurs. For systems on which multibyte file names are permitted, a different value may be more appropriate. For example, if the system represents file names using UTF-8, set 'character_set_filesystem' to ''utf8mb4''.
'character_set_results'
System Variable
'character_set_results'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'utf8'
The character set used for returning query results to the client. This includes result data such as column values, result metadata such as column names, and error messages.
'character_set_server'
Command-Line Format
'--character-set-server=name'
System Variable
'character_set_server'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'latin1'
The servers default character set. See *note charset-configuration::. If you set this variable, you should also set 'collation_server' to specify the collation for the character set.
'character_set_system'
System Variable
'character_set_system'
Scope
Global
Dynamic
No
Type
String
Default Value
'utf8'
The character set used by the server for storing identifiers. The value is always 'utf8'.
'character_sets_dir'
Command-Line Format
'--character-sets-dir=dir_name'
System Variable
'character_sets_dir'
Scope
Global
Dynamic
No
Type
Directory name
The directory where character sets are installed. See *note charset-configuration::.
'check_proxy_users'
Command-Line Format
'--check-proxy-users[={OFF|ON}]'
System Variable
'check_proxy_users'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Some authentication plugins implement proxy user mapping for themselves (for example, the PAM and Windows authentication plugins). Other authentication plugins do not support proxy users by default. Of these, some can request that the MySQL server itself map proxy users according to granted proxy privileges: 'mysql_native_password', 'sha256_password'.
If the 'check_proxy_users' system variable is enabled, the server performs proxy user mapping for any authentication plugins that make such a request. However, it may also be necessary to enable plugin-specific system variables to take advantage of server proxy user mapping support:
* For the 'mysql_native_password' plugin, enable
'mysql_native_password_proxy_users'.
* For the 'sha256_password' plugin, enable
'sha256_password_proxy_users'.
For information about user proxying, see *note proxy-users::.
'collation_connection'
System Variable
'collation_connection'
Scope
Global, Session
Dynamic
Yes
Type
String
The collation of the connection character set. 'collation_connection' is important for comparisons of literal strings. For comparisons of strings with column values, 'collation_connection' does not matter because columns have their own collation, which has a higher collation precedence (see *note charset-collation-coercibility::).
'collation_database'
System Variable
'collation_database'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'latin1_swedish_ci'
Footnote
This option is dynamic, but should be set only by server. You should not set this variable manually.
The collation used by the default database. The server sets this variable whenever the default database changes. If there is no default database, the variable has the same value as 'collation_server'.
The global 'character_set_database' and 'collation_database' system variables are deprecated in MySQL 5.7; expect them to be removed in a future version of MySQL.
Assigning a value to the session 'character_set_database' and 'collation_database' system variables is deprecated in MySQL 5.7 and assignments produce a warning. Expect the session variables to become read only in a future version of MySQL and assignments to produce an error, while remaining possible to access the session variables to determine the database character set and collation for the default database.
'collation_server'
Command-Line Format
'--collation-server=name'
System Variable
'collation_server'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'latin1_swedish_ci'
The server's default collation. See *note charset-configuration::.
'completion_type'
Command-Line Format
'--completion-type=#'
System Variable
'completion_type'
Scope
Global, Session
Dynamic
Yes
Type
Enumeration
Default Value
'NO_CHAIN'
Valid Values
'NO_CHAIN' 'CHAIN' 'RELEASE' '0' '1' '2'
The transaction completion type. This variable can take the values shown in the following table. The variable can be assigned using either the name values or corresponding integer values.
Value Description
'NO_CHAIN'note 'COMMIT': commit. and (or note 'ROLLBACK': commit. are unaffected. This is the default value.
AND CHAIN' and 'ROLLBACK AND CHAIN', respectively.
(A new transaction starts immediately with the same
isolation level as the just-terminated transaction.)
RELEASE' and 'ROLLBACK RELEASE', respectively. (The
server disconnects after terminating the
transaction.)
'completion_type' affects transactions that begin with note 'START TRANSACTION': commit. or note 'BEGIN': commit. and end with note 'COMMIT': commit. or note 'ROLLBACK': commit. It does not apply to implicit commits resulting from execution of the statements listed in note implicit-commit::. It also does not apply for note 'XA COMMIT': xa-statements, *note 'XA ROLLBACK': xa-statements, or when 'autocommit=1'.
'concurrent_insert'
Command-Line Format
'--concurrent-insert[=value]'
System Variable
'concurrent_insert'
Scope
Global
Dynamic
Yes
Type
Enumeration
Default Value
'AUTO'
Valid Values
'NEVER' 'AUTO' 'ALWAYS' '0' '1' '2'
If 'AUTO' (the default), MySQL permits note 'INSERT': insert. and note 'SELECT': select. statements to run concurrently for 'MyISAM' tables that have no free blocks in the middle of the data file.
This variable can take the values shown in the following table. The variable can be assigned using either the name values or corresponding integer values.
Value Description
'NEVER' Disables concurrent inserts (or hole, new rows are inserted at the end of the table
if it is in use by another thread. Otherwise, MySQL
acquires a normal write lock and inserts the row
into the hole.
If you start *note 'mysqld': mysqld. with '--skip-new', 'concurrent_insert' is set to 'NEVER'.
See also *note concurrent-inserts::.
'connect_timeout'
Command-Line Format
'--connect-timeout=#'
System Variable
'connect_timeout'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'10'
Minimum Value
'2'
Maximum Value
'31536000'
Unit
seconds
The number of seconds that the *note 'mysqld': mysqld. server waits for a connect packet before responding with 'Bad handshake'. The default value is 10 seconds.
Increasing the 'connect_timeout' value might help if clients frequently encounter errors of the form 'Lost connection to MySQL server at 'XXX', system error: ERRNO'.
'core_file'
System Variable
'core_file'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'OFF'
Whether to write a core file if the server unexpectedly exits. This variable is set by the '--core-file' option.
'datadir'
Command-Line Format
'--datadir=dir_name'
System Variable
'datadir'
Scope
Global
Dynamic
No
Type
Directory name
The path to the MySQL server data directory. Relative paths are resolved with respect to the current directory. If you expect the server to be started automatically (that is, in contexts for which you cannot assume what the current directory is), it is best to specify the 'datadir' value as an absolute path.
'date_format'
This variable is unused. It is deprecated and is removed in MySQL 8.0.
'datetime_format'
This variable is unused. It is deprecated and is removed in MySQL 8.0.
'debug'
Command-Line Format
'--debug[=debug_options]'
System Variable
'debug'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value (Unix)
'd:t:i:o,/tmp/mysqld.trace'
Default Value (Windows)
'd:t:i:O,.trace'
This variable indicates the current debugging settings. It is available only for servers built with debugging support. The initial value comes from the value of instances of the '--debug' option given at server startup. The global and session values may be set at runtime.
Setting the session value of this system variable is a restricted operation. The session user must have privileges sufficient to set restricted session variables. See *note system-variable-privileges::.
Assigning a value that begins with '+' or '-' cause the value to added to or subtracted from the current value:
mysql> SET debug = 'T';
mysql> SELECT @@debug;
+---------+
| @@debug |
+---------+
| T |
+---------+
mysql> SET debug = '+P';
mysql> SELECT @@debug;
+---------+
| @@debug |
+---------+
| P:T |
+---------+
mysql> SET debug = '-P';
mysql> SELECT @@debug;
+---------+
| @@debug |
+---------+
| T |
+---------+
For more information, see *note dbug-package::.
'debug_sync'
System Variable
'debug_sync'
Scope
Session
Dynamic
Yes
Type
String
This variable is the user interface to the Debug Sync facility. Use of Debug Sync requires that MySQL be configured with the '-DWITH_DEBUG=ON' 'CMake' option (see *note source-configuration-options::); otherwise, this system variable is not available.
The global variable value is read only and indicates whether the facility is enabled. By default, Debug Sync is disabled and the value of 'debug_sync' is 'OFF'. If the server is started with '--debug-sync-timeout=N', where N is a timeout value greater than 0, Debug Sync is enabled and the value of 'debug_sync' is 'ON - current signal' followed by the signal name. Also, N becomes the default timeout for individual synchronization points.
The session value can be read by any user and has the same value as the global variable. The session value can be set to control synchronization points.
Setting the session value of this system variable is a restricted operation. The session user must have privileges sufficient to set restricted session variables. See *note system-variable-privileges::.
For a description of the Debug Sync facility and how to use synchronization points, see MySQL Server Doxygen Documentation (https://dev.mysql.com/doc/index-other.html).
'default_authentication_plugin'
Command-Line Format
'--default-authentication-plugin=plugin_name'
System Variable
'default_authentication_plugin'
Scope
Global
Dynamic
No
Type
Enumeration
Default Value
'mysql_native_password'
Valid Values
'mysql_native_password' 'sha256_password'
The default authentication plugin. These values are permitted:
* 'mysql_native_password': Use MySQL native passwords; see *note
native-pluggable-authentication::.
* 'sha256_password': Use SHA-256 passwords; see *note
sha256-pluggable-authentication::.
Note:
If this variable has a value other than 'mysql_native_password', clients older than MySQL 5.5.7 cannot connect because, of the permitted default authentication plugins, they understand only the 'mysql_native_password' authentication protocol.
The 'default_authentication_plugin' value affects these aspects of server operation:
* It determines which authentication plugin the server assigns
to new accounts created by *note 'CREATE USER': create-user.
and *note 'GRANT': grant. statements that do not explicitly
specify an authentication plugin.
* The 'old_passwords' system variable affects password hashing
for accounts that use the 'mysql_native_password' or
'sha256_password' authentication plugin. If the default
authentication plugin is one of those plugins, the server sets
'old_passwords' at startup to the value required by the plugin
password hashing method.
* For an account created with either of the following
statements, the server associates the account with the default
authentication plugin and assigns the account the given
password, hashed as required by that plugin:
CREATE USER ... IDENTIFIED BY 'CLEARTEXT PASSWORD';
GRANT ... IDENTIFIED BY 'CLEARTEXT PASSWORD';
* For an account created with either of the following
statements, the server associates the account with the default
authentication plugin and assigns the account the given
password hash, if the password hash has the format required by
the plugin:
CREATE USER ... IDENTIFIED BY PASSWORD 'ENCRYPTED PASSWORD';
GRANT ... IDENTIFIED BY PASSWORD 'ENCRYPTED PASSWORD';
If the password hash is not in the format required by the
default authentication plugin, the statement fails.
'default_password_lifetime'
Command-Line Format
'--default-password-lifetime=#'
System Variable
'default_password_lifetime'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value (≥ 5.7.11)
'0'
Default Value (<= 5.7.10)
'360'
Minimum Value
'0'
Maximum Value
'65535'
Unit
days
This variable defines the global automatic password expiration policy. The default 'default_password_lifetime' value is 0, which disables automatic password expiration. If the value of 'default_password_lifetime' is a positive integer N, it indicates the permitted password lifetime; passwords must be changed every N days.
The global password expiration policy can be overridden as desired for individual accounts using the password expiration options of the note 'ALTER USER': alter-user. statement. See note password-management::.
Note:
Prior to MySQL 5.7.11, the default 'default_password_lifetime' value is 360 (passwords must be changed approximately once per year). For those versions, be aware that, if you make no changes to the 'default_password_lifetime' variable or to individual user accounts, all user passwords expire after 360 days, and all user accounts start running in restricted mode when this happens. Clients (which are effectively users) connecting to the server then get an error indicating that the password must be changed: 'ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.'
However, this is easy to miss for clients that automatically connect to the server, such as connections made from scripts. To avoid having such clients suddenly stop working due to a password expiring, make sure to change the password expiration settings for those clients, like this:
ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;
Alternatively, set the 'default_password_lifetime' variable to '0', thus disabling automatic password expiration for all users.
'default_storage_engine'
Command-Line Format
'--default-storage-engine=name'
System Variable
'default_storage_engine'
Scope
Global, Session
Dynamic
Yes
Type
Enumeration
Default Value
'InnoDB'
The default storage engine for tables. See *note storage-engines::. This variable sets the storage engine for permanent tables only. To set the storage engine for 'TEMPORARY' tables, set the 'default_tmp_storage_engine' system variable.
To see which storage engines are available and enabled, use the note 'SHOW ENGINES': show-engines. statement or query the 'INFORMATION_SCHEMA' note 'ENGINES': information-schema-engines-table. table.
If you disable the default storage engine at server startup, you must set the default engine for both permanent and 'TEMPORARY' tables to a different engine or the server cannot start.
'default_tmp_storage_engine'
Command-Line Format
'--default-tmp-storage-engine=name'
System Variable
'default_tmp_storage_engine'
Scope
Global, Session
Dynamic
Yes
Type
Enumeration
Default Value
'InnoDB'
The default storage engine for 'TEMPORARY' tables (created with *note 'CREATE TEMPORARY TABLE': create-table.). To set the storage engine for permanent tables, set the 'default_storage_engine' system variable. Also see the discussion of that variable regarding possible values.
If you disable the default storage engine at server startup, you must set the default engine for both permanent and 'TEMPORARY' tables to a different engine or the server cannot start.
'default_week_format'
Command-Line Format
'--default-week-format=#'
System Variable
'default_week_format'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'0'
Minimum Value
'0'
Maximum Value
'7'
The default mode value to use for the 'WEEK()' function. See *note date-and-time-functions::.
'delay_key_write'
Command-Line Format
'--delay-key-write[={OFF|ON|ALL}]'
System Variable
'delay_key_write'
Scope
Global
Dynamic
Yes
Type
Enumeration
Default Value
'ON'
Valid Values
'OFF' 'ON' 'ALL'
This variable specifies how to use delayed key writes. It applies only to 'MyISAM' tables. Delayed key writing causes key buffers not to be flushed between writes. See also *note myisam-start::.
This variable can have one of the following values to affect handling of the 'DELAY_KEY_WRITE' table option that can be used in *note 'CREATE TABLE': create-table. statements.
Option Description
'OFF' 'DELAY_KEY_WRITE' is ignored.
'ON' MySQL honors any 'DELAY_KEY_WRITE' option specified in *note 'CREATE TABLE': create-table. statements. This is the default value.
'ALL' All new opened tables are treated as if they were created with the 'DELAY_KEY_WRITE' option enabled.
Note:
If you set this variable to 'ALL', you should not use 'MyISAM' tables from within another program (such as another MySQL server or *note 'myisamchk': myisamchk.) when the tables are in use. Doing so leads to index corruption.
If 'DELAY_KEY_WRITE' is enabled for a table, the key buffer is not flushed for the table on every index update, but only when the table is closed. This speeds up writes on keys a lot, but if you use this feature, you should add automatic checking of all 'MyISAM' tables by starting the server with the 'myisam_recover_options' system variable set (for example, 'myisam_recover_options='BACKUP,FORCE''). See note server-system-variables::, and note myisam-start::.
If you start *note 'mysqld': mysqld. with '--skip-new', 'delay_key_write' is set to 'OFF'.
Warning:
If you enable external locking with '--external-locking', there is no protection against index corruption for tables that use delayed key writes.
'delayed_insert_limit'
Command-Line Format
'--delayed-insert-limit=#'
Deprecated
Yes
System Variable
'delayed_insert_limit'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'100'
Minimum Value
'1'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
This system variable is deprecated (because 'DELAYED' inserts are not supported); expect it to be removed in a future release.
'delayed_insert_timeout'
Command-Line Format
'--delayed-insert-timeout=#'
Deprecated
Yes
System Variable
'delayed_insert_timeout'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'300'
Minimum Value
'1'
Maximum Value
'31536000'
Unit
seconds
This system variable is deprecated (because 'DELAYED' inserts are not supported); expect it to be removed in a future release.
'delayed_queue_size'
Command-Line Format
'--delayed-queue-size=#'
Deprecated
Yes
System Variable
'delayed_queue_size'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'1000'
Minimum Value
'1'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
This system variable is deprecated (because 'DELAYED' inserts are not supported); expect it to be removed in a future release.
'disabled_storage_engines'
Command-Line Format
'--disabled-storage-engines=engine[,engine]...'
System Variable
'disabled_storage_engines'
Scope
Global
Dynamic
No
Type
String
Default Value
'empty string'
This variable indicates which storage engines cannot be used to create tables or tablespaces. For example, to prevent new 'MyISAM' or 'FEDERATED' tables from being created, start the server with these lines in the server option file:
[mysqld]
disabled_storage_engines="MyISAM,FEDERATED"
By default, 'disabled_storage_engines' is empty (no engines disabled), but it can be set to a comma-separated list of one or more engines (not case-sensitive). Any engine named in the value cannot be used to create tables or tablespaces with note 'CREATE TABLE': create-table. or note 'CREATE TABLESPACE': create-tablespace, and cannot be used with note 'ALTER TABLE ... ENGINE': alter-table. or note 'ALTER TABLESPACE ... ENGINE': alter-tablespace. to change the storage engine of existing tables or tablespaces. Attempts to do so result in an 'ER_DISABLED_STORAGE_ENGINE' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_disabled_storage_engine) error.
'disabled_storage_engines' does not restrict other DDL statements for existing tables, such as note 'CREATE INDEX': create-index, note 'TRUNCATE TABLE': truncate-table, note 'ANALYZE TABLE': analyze-table, note 'DROP TABLE': drop-table, or note 'DROP TABLESPACE': drop-tablespace. This permits a smooth transition so that existing tables or tablespaces that use a disabled engine can be migrated to a permitted engine by means such as note 'ALTER TABLE ... ENGINE PERMITTED_ENGINE': alter-table.
It is permitted to set the 'default_storage_engine' or 'default_tmp_storage_engine' system variable to a storage engine that is disabled. This could cause applications to behave erratically or fail, although that might be a useful technique in a development environment for identifying applications that use disabled engines, so that they can be modified.
'disabled_storage_engines' is disabled and has no effect if the server is started with any of these options: '--bootstrap', '--initialize', '--initialize-insecure', '--skip-grant-tables'.
Note:
Setting 'disabled_storage_engines' might cause an issue with note 'mysql_upgrade': mysql-upgrade. For details, see note mysql-upgrade::.
'disconnect_on_expired_password'
Command-Line Format
'--disconnect-on-expired-password[={OFF|ON}]'
System Variable
'disconnect_on_expired_password'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'ON'
This variable controls how the server handles clients with expired passwords:
* If the client indicates that it can handle expired passwords,
the value of 'disconnect_on_expired_password' is irrelevant.
The server permits the client to connect but puts it in
sandbox mode.
* If the client does not indicate that it can handle expired
passwords, the server handles the client according to the
value of 'disconnect_on_expired_password':
* If 'disconnect_on_expired_password': is enabled, the
server disconnects the client.
* If 'disconnect_on_expired_password': is disabled, the
server permits the client to connect but puts it in
sandbox mode.
For more information about the interaction of client and server settings relating to expired-password handling, see *note expired-password-handling::.
'div_precision_increment'
Command-Line Format
'--div-precision-increment=#'
System Variable
'div_precision_increment'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'4'
Minimum Value
'0'
Maximum Value
'30'
This variable indicates the number of digits by which to increase the scale of the result of division operations performed with the '/' operator. The default value is 4. The minimum and maximum values are 0 and 30, respectively. The following example illustrates the effect of increasing the default value.
mysql> SELECT 1/7;
+--------+
| 1/7 |
+--------+
| 0.1429 |
+--------+
mysql> SET div_precision_increment = 12;
mysql> SELECT 1/7;
+----------------+
| 1/7 |
+----------------+
| 0.142857142857 |
+----------------+
'end_markers_in_json'
Command-Line Format
'--end-markers-in-json[={OFF|ON}]'
System Variable
'end_markers_in_json'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Whether optimizer JSON output should add end markers. See *note end-markers-in-json-system-variable::.
'eq_range_index_dive_limit'
Command-Line Format
'--eq-range-index-dive-limit=#'
System Variable
'eq_range_index_dive_limit'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'200'
Minimum Value
'0'
Maximum Value
'4294967295'
This variable indicates the number of equality ranges in an equality comparison condition when the optimizer should switch from using index dives to index statistics in estimating the number of qualifying rows. It applies to evaluation of expressions that have either of these equivalent forms, where the optimizer uses a nonunique index to look up COL_NAME values:
COL_NAME IN(VAL1, ..., VALN)
COL_NAME = VAL1 OR ... OR COL_NAME = VALN
In both cases, the expression contains N equality ranges. The optimizer can make row estimates using index dives or index statistics. If 'eq_range_index_dive_limit' is greater than 0, the optimizer uses existing index statistics instead of index dives if there are 'eq_range_index_dive_limit' or more equality ranges. Thus, to permit use of index dives for up to N equality ranges, set 'eq_range_index_dive_limit' to N + 1. To disable use of index statistics and always use index dives regardless of N, set 'eq_range_index_dive_limit' to 0.
For more information, see *note equality-range-optimization::.
To update table index statistics for best estimates, use *note 'ANALYZE TABLE': analyze-table.
'error_count'
The number of errors that resulted from the last statement that generated messages. This variable is read only. See *note show-errors::.
'event_scheduler'
Command-Line Format
'--event-scheduler[=value]'
System Variable
'event_scheduler'
Scope
Global
Dynamic
Yes
Type
Enumeration
Default Value
'OFF'
Valid Values
'OFF' 'ON' 'DISABLED'
This variable enables or disables, and starts or stops, the Event Scheduler. The possible status values are 'ON', 'OFF', and 'DISABLED'. Turning the Event Scheduler 'OFF' is not the same as disabling the Event Scheduler, which requires setting the status to 'DISABLED'. This variable and its effects on the Event Scheduler's operation are discussed in greater detail in *note events-configuration::
'explicit_defaults_for_timestamp'
Command-Line Format
'--explicit-defaults-for-timestamp[={OFF|ON}]'
Deprecated
Yes
System Variable
'explicit_defaults_for_timestamp'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
This system variable determines whether the server enables certain nonstandard behaviors for default values and 'NULL'-value handling in *note 'TIMESTAMP': datetime. columns. By default, 'explicit_defaults_for_timestamp' is disabled, which enables the nonstandard behaviors.
If 'explicit_defaults_for_timestamp' is disabled, the server enables the nonstandard behaviors and handles *note 'TIMESTAMP': datetime. columns as follows:
* *note 'TIMESTAMP': datetime. columns not explicitly declared
with the 'NULL' attribute are automatically declared with the
'NOT NULL' attribute. Assigning such a column a value of
'NULL' is permitted and sets the column to the current
timestamp.
* The first *note 'TIMESTAMP': datetime. column in a table, if
not explicitly declared with the 'NULL' attribute or an
explicit 'DEFAULT' or 'ON UPDATE' attribute, is automatically
declared with the 'DEFAULT CURRENT_TIMESTAMP' and 'ON UPDATE
CURRENT_TIMESTAMP' attributes.
* *note 'TIMESTAMP': datetime. columns following the first one,
if not explicitly declared with the 'NULL' attribute or an
explicit 'DEFAULT' attribute, are automatically declared as
'DEFAULT '0000-00-00 00:00:00'' (the 'zero' timestamp). For
inserted rows that specify no explicit value for such a
column, the column is assigned ''0000-00-00 00:00:00'' and no
warning occurs.
Depending on whether strict SQL mode or the 'NO_ZERO_DATE' SQL
mode is enabled, a default value of ''0000-00-00 00:00:00''
may be invalid. Be aware that the 'TRADITIONAL' SQL mode
includes strict mode and 'NO_ZERO_DATE'. See *note
sql-mode::.
The nonstandard behaviors just described are deprecated; expect them to be removed in a future release of MySQL.
If 'explicit_defaults_for_timestamp' is enabled, the server disables the nonstandard behaviors and handles *note 'TIMESTAMP': datetime. columns as follows:
* It is not possible to assign a *note 'TIMESTAMP': datetime.
column a value of 'NULL' to set it to the current timestamp.
To assign the current timestamp, set the column to
'CURRENT_TIMESTAMP' or a synonym such as 'NOW()'.
* *note 'TIMESTAMP': datetime. columns not explicitly declared
with the 'NOT NULL' attribute are automatically declared with
the 'NULL' attribute and permit 'NULL' values. Assigning such
a column a value of 'NULL' sets it to 'NULL', not the current
timestamp.
* *note 'TIMESTAMP': datetime. columns declared with the 'NOT
NULL' attribute do not permit 'NULL' values. For inserts that
specify 'NULL' for such a column, the result is either an
error for a single-row insert if strict SQL mode is enabled,
or ''0000-00-00 00:00:00'' is inserted for multiple-row
inserts with strict SQL mode disabled. In no case does
assigning the column a value of 'NULL' set it to the current
timestamp.
* *note 'TIMESTAMP': datetime. columns explicitly declared with
the 'NOT NULL' attribute and without an explicit 'DEFAULT'
attribute are treated as having no default value. For
inserted rows that specify no explicit value for such a
column, the result depends on the SQL mode. If strict SQL
mode is enabled, an error occurs. If strict SQL mode is not
enabled, the column is declared with the implicit default of
''0000-00-00 00:00:00'' and a warning occurs. This is similar
to how MySQL treats other temporal types such as *note
'DATETIME': datetime.
* No *note 'TIMESTAMP': datetime. column is automatically
declared with the 'DEFAULT CURRENT_TIMESTAMP' or 'ON UPDATE
CURRENT_TIMESTAMP' attributes. Those attributes must be
explicitly specified.
* The first *note 'TIMESTAMP': datetime. column in a table is
not handled differently from *note 'TIMESTAMP': datetime.
columns following the first one.
If 'explicit_defaults_for_timestamp' is disabled at server startup, this warning appears in the error log:
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
Please use --explicit_defaults_for_timestamp server option (see
documentation for more details).
As indicated by the warning, to disable the deprecated nonstandard behaviors, enable the 'explicit_defaults_for_timestamp' system variable at server startup.
Note:
'explicit_defaults_for_timestamp' is itself deprecated because its only purpose is to permit control over deprecated *note 'TIMESTAMP': datetime. behaviors that are to be removed in a future release of MySQL. When removal of those behaviors occurs, 'explicit_defaults_for_timestamp' no longer has any purpose, and you can expect it to be removed as well.
For additional information, see *note timestamp-initialization::.
'external_user'
System Variable
'external_user'
Scope
Session
Dynamic
No
Type
String
The external user name used during the authentication process, as set by the plugin used to authenticate the client. With native (built-in) MySQL authentication, or if the plugin does not set the value, this variable is 'NULL'. See *note proxy-users::.
'flush'
Command-Line Format
'--flush[={OFF|ON}]'
System Variable
'flush'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
If 'ON', the server flushes (synchronizes) all changes to disk after each SQL statement. Normally, MySQL does a write of all changes to disk only after each SQL statement and lets the operating system handle the synchronizing to disk. See note crashing::. This variable is set to 'ON' if you start note 'mysqld': mysqld. with the '--flush' option.
Note:
If 'flush' is enabled, the value of 'flush_time' does not matter and changes to 'flush_time' have no effect on flush behavior.
'flush_time'
Command-Line Format
'--flush-time=#'
System Variable
'flush_time'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'0'
Minimum Value
'0'
Maximum Value
'31536000'
Unit
seconds
If this is set to a nonzero value, all tables are closed every 'flush_time' seconds to free up resources and synchronize unflushed data to disk. This option is best used only on systems with minimal resources.
Note:
If 'flush' is enabled, the value of 'flush_time' does not matter and changes to 'flush_time' have no effect on flush behavior.
'foreign_key_checks'
System Variable
'foreign_key_checks'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'ON'
If set to 1 (the default), foreign key constraints are checked. If set to 0, foreign key constraints are ignored, with a couple of exceptions. When re-creating a table that was dropped, an error is returned if the table definition does not conform to the foreign key constraints referencing the table. Likewise, an note 'ALTER TABLE': alter-table. operation returns an error if a foreign key definition is incorrectly formed. For more information, see note create-table-foreign-keys::.
Setting this variable has the same effect on note 'NDB': mysql-cluster. tables as it does for 'InnoDB' tables. Typically you leave this setting enabled during normal operation, to enforce referential integrity. Disabling foreign key checking can be useful for reloading 'InnoDB' tables in an order different from that required by their parent/child relationships. See note create-table-foreign-keys::.
Setting 'foreign_key_checks' to 0 also affects data definition statements: note 'DROP SCHEMA': drop-database. drops a schema even if it contains tables that have foreign keys that are referred to by tables outside the schema, and note 'DROP TABLE': drop-table. drops tables that have foreign keys that are referred to by other tables.
Note:
Setting 'foreign_key_checks' to 1 does not trigger a scan of the existing table data. Therefore, rows added to the table while 'foreign_key_checks=0' are not verified for consistency.
Dropping an index required by a foreign key constraint is not permitted, even with 'foreign_key_checks=0'. The foreign key constraint must be removed before dropping the index (Bug #70260).
'ft_boolean_syntax'
Command-Line Format
'--ft-boolean-syntax=name'
System Variable
'ft_boolean_syntax'
Scope
Global
Dynamic
Yes
Type
String
Default Value
'+ -><()~*:""&|'
The list of operators supported by boolean full-text searches performed using 'IN BOOLEAN MODE'. See *note fulltext-boolean::.
The default variable value is ''+ -><()~*:""&|''. The rules for changing the value are as follows:
* Operator function is determined by position within the string.
* The replacement value must be 14 characters.
* Each character must be an ASCII nonalphanumeric character.
* Either the first or second character must be a space.
* No duplicates are permitted except the phrase quoting
operators in positions 11 and 12. These two characters are
not required to be the same, but they are the only two that
may be.
* Positions 10, 13, and 14 (which by default are set to ':',
'&', and '|') are reserved for future extensions.
'ft_max_word_len'
Command-Line Format
'--ft-max-word-len=#'
System Variable
'ft_max_word_len'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'84'
Minimum Value
'10'
Maximum Value
'84'
The maximum length of the word to be included in a 'MyISAM' 'FULLTEXT' index.
Note:
'FULLTEXT' indexes on 'MyISAM' tables must be rebuilt after changing this variable. Use 'REPAIR TABLE TBL_NAME QUICK'.
'ft_min_word_len'
Command-Line Format
'--ft-min-word-len=#'
System Variable
'ft_min_word_len'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'4'
Minimum Value
'1'
Maximum Value
'82'
The minimum length of the word to be included in a 'MyISAM' 'FULLTEXT' index.
Note:
'FULLTEXT' indexes on 'MyISAM' tables must be rebuilt after changing this variable. Use 'REPAIR TABLE TBL_NAME QUICK'.
'ft_query_expansion_limit'
Command-Line Format
'--ft-query-expansion-limit=#'
System Variable
'ft_query_expansion_limit'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'20'
Minimum Value
'0'
Maximum Value
'1000'
The number of top matches to use for full-text searches performed using 'WITH QUERY EXPANSION'.
'ft_stopword_file'
Command-Line Format
'--ft-stopword-file=file_name'
System Variable
'ft_stopword_file'
Scope
Global
Dynamic
No
Type
File name
The file from which to read the list of stopwords for full-text searches on 'MyISAM' tables. The server looks for the file in the data directory unless an absolute path name is given to specify a different directory. All the words from the file are used; comments are not honored. By default, a built-in list of stopwords is used (as defined in the 'storage/myisam/ft_static.c' file). Setting this variable to the empty string ('''') disables stopword filtering. See also *note fulltext-stopwords::.
Note:
'FULLTEXT' indexes on 'MyISAM' tables must be rebuilt after changing this variable or the contents of the stopword file. Use 'REPAIR TABLE TBL_NAME QUICK'.
'general_log'
Command-Line Format
'--general-log[={OFF|ON}]'
System Variable
'general_log'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Whether the general query log is enabled. The value can be 0 (or 'OFF') to disable the log or 1 (or 'ON') to enable the log. The destination for log output is controlled by the 'log_output' system variable; if that value is 'NONE', no log entries are written even if the log is enabled.
'general_log_file'
Command-Line Format
'--general-log-file=file_name'
System Variable
'general_log_file'
Scope
Global
Dynamic
Yes
Type
File name
Default Value
'host_name.log'
The name of the general query log file. The default value is 'HOST_NAME.log', but the initial value can be changed with the '--general_log_file' option.
'group_concat_max_len'
Command-Line Format
'--group-concat-max-len=#'
System Variable
'group_concat_max_len'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'1024'
Minimum Value
'4'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
The maximum permitted result length in bytes for the 'GROUP_CONCAT()' function. The default is 1024.
'have_compress'
'YES' if the 'zlib' compression library is available to the server, 'NO' if not. If not, the 'COMPRESS()' and 'UNCOMPRESS()' functions cannot be used.
'have_crypt'
'YES' if the 'crypt()' system call is available to the server, 'NO' if not. If not, the 'ENCRYPT()' function cannot be used.
Note:
The 'ENCRYPT()' function is deprecated in MySQL 5.7, will be removed in a future release of MySQL, and should no longer be used. (For one-way hashing, consider using 'SHA2()' instead.) Consequently, 'have_crypt' also is deprecated; expect it to be removed in a future release.
'have_dynamic_loading'
'YES' if note 'mysqld': mysqld. supports dynamic loading of plugins, 'NO' if not. If the value is 'NO', you cannot use options such as '--plugin-load' to load plugins at server startup, or the note 'INSTALL PLUGIN': install-plugin. statement to load plugins at runtime.
'have_geometry'
'YES' if the server supports spatial data types, 'NO' if not.
'have_openssl'
This variable is a synonym for 'have_ssl'.
'have_profiling'
'YES' if statement profiling capability is present, 'NO' if not. If present, the 'profiling' system variable controls whether this capability is enabled or disabled. See *note show-profiles::.
This variable is deprecated; expect it to be removed in a future release of MySQL.
'have_query_cache'
'YES' if *note 'mysqld': mysqld. supports the query cache, 'NO' if not.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'have_query_cache'.
'have_rtree_keys'
'YES' if 'RTREE' indexes are available, 'NO' if not. (These are used for spatial indexes in 'MyISAM' tables.)
'have_ssl'
System Variable
'have_ssl'
Scope
Global
Dynamic
No
Type
String
Valid Values
'YES' (SSL support available) 'DISABLED' (SSL support was compiled into server, but server was not started with necessary options to enable it)
'YES' if note 'mysqld': mysqld. supports SSL connections, 'DISABLED' if the server was compiled with SSL support, but was not started with the appropriate connection-encryption options. For more information, see note source-ssl-library-configuration::.
'have_statement_timeout'
System Variable
'have_statement_timeout'
Scope
Global
Dynamic
No
Type
Boolean
Whether the statement execution timeout feature is available (see *note optimizer-hints-execution-time::). The value can be 'NO' if the background thread used by this feature could not be initialized.
'have_symlink'
'YES' if symbolic link support is enabled, 'NO' if not. This is required on Unix for support of the 'DATA DIRECTORY' and 'INDEX DIRECTORY' table options. If the server is started with the '--skip-symbolic-links' option, the value is 'DISABLED'.
This variable has no meaning on Windows.
'host_cache_size'
Command-Line Format
'--host-cache-size=#'
System Variable
'host_cache_size'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'-1' (signifies autosizing; do not assign this literal value)
Minimum Value
'0'
Maximum Value
'65536'
The MySQL server maintains an in-memory host cache that contains client host name and IP address information and is used to avoid Domain Name System (DNS) lookups; see *note host-cache::.
The 'host_cache_size' variable controls the size of the host cache, as well as the size of the Performance Schema *note 'host_cache': performance-schema-host-cache-table. table that exposes the cache contents. Setting 'host_cache_size' has these effects:
* Setting the size to 0 disables the host cache. With the cache
disabled, the server performs a DNS lookup every time a client
connects.
* Changing the size at runtime causes an implicit host cache
flushing operation that clears the host cache, truncates the
*note 'host_cache': performance-schema-host-cache-table.
table, and unblocks any blocked hosts.
The default value is autosized to 128, plus 1 for a value of 'max_connections' up to 500, plus 1 for every increment of 20 over 500 in the 'max_connections' value, capped to a limit of 2000.
Using the '--skip-host-cache' option is similar to setting the 'host_cache_size' system variable to 0, but 'host_cache_size' is more flexible because it can also be used to resize, enable, and disable the host cache at runtime, not just at server startup.
Starting the server with '--skip-host-cache' does not prevent runtime changes to the value of 'host_cache_size', but such changes have no effect and the cache is not re-enabled even if 'host_cache_size' is set larger than 0.
Setting the 'host_cache_size' system variable rather than the '--skip-host-cache' option is preferred for the reasons given in the previous paragraph. In addition, the '--skip-host-cache' option is deprecated in MySQL 8.0, and its removal is expected in a future version of MySQL.
'hostname'
System Variable
'hostname'
Scope
Global
Dynamic
No
Type
String
The server sets this variable to the server host name at startup.
'identity'
This variable is a synonym for the 'last_insert_id' variable. It exists for compatibility with other database systems. You can read its value with 'SELECT @@identity', and set it using 'SET identity'.
'ignore_db_dirs'
Deprecated
5.7.16
System Variable
'ignore_db_dirs'
Scope
Global
Dynamic
No
Type
String
A comma-separated list of names that are not considered as database directories in the data directory. The value is set from any instances of '--ignore-db-dir' given at server startup.
As of MySQL 5.7.11, '--ignore-db-dir' can be used at data directory initialization time with note 'mysqld --initialize': mysqld. to specify directories that the server should ignore for purposes of assessing whether an existing data directory is considered empty. See note data-directory-initialization::.
This system variable is deprecated in MySQL 5.7. With the introduction of the data dictionary in MySQL 8.0, it became superfluous and was removed in that version.
'init_connect'
Command-Line Format
'--init-connect=name'
System Variable
'init_connect'
Scope
Global
Dynamic
Yes
Type
String
A string to be executed by the server for each client that connects. The string consists of one or more SQL statements, separated by semicolon characters.
For users that have the 'SUPER' privilege, the content of 'init_connect' is not executed. This is done so that an erroneous value for 'init_connect' does not prevent all clients from connecting. For example, the value might contain a statement that has a syntax error, thus causing client connections to fail. Not executing 'init_connect' for users that have the 'SUPER' privilege enables them to open a connection and fix the 'init_connect' value.
As of MySQL 5.7.22, 'init_connect' execution is skipped for any client user with an expired password. This is done because such a user cannot execute arbitrary statements, and thus 'init_connect' execution fails, leaving the client unable to connect. Skipping 'init_connect' execution enables the user to connect and change password.
The server discards any result sets produced by statements in the value of 'init_connect'.
'init_file'
Command-Line Format
'--init-file=file_name'
System Variable
'init_file'
Scope
Global
Dynamic
No
Type
File name
If specified, this variable names a file containing SQL statements to be read and executed during the startup process. Each statement must be on a single line and should not include comments.
If the server is started with any of the '--bootstrap', '--initialize', or '--initialize-insecure' options, it operates in bootstap mode and some functionality is unavailable that limits the statements permitted in the file. These include statements that relate to account management (such as note 'CREATE USER': create-user. or note 'GRANT': grant.), replication, and global transaction identifiers. See *note replication-gtids::.
'innodb_XXX'
note 'InnoDB': innodb-storage-engine. system variables are listed in note innodb-parameters::. These variables control many aspects of storage, memory use, and I/O patterns for 'InnoDB' tables, and are especially important now that 'InnoDB' is the default storage engine.
'insert_id'
The value to be used by the following note 'INSERT': insert. or note 'ALTER TABLE': alter-table. statement when inserting an 'AUTO_INCREMENT' value. This is mainly used with the binary log.
'interactive_timeout'
Command-Line Format
'--interactive-timeout=#'
System Variable
'interactive_timeout'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'28800'
Minimum Value
'1'
Maximum Value
'31536000'
Unit
seconds
The number of seconds the server waits for activity on an interactive connection before closing it. An interactive client is defined as a client that uses the 'CLIENT_INTERACTIVE' option to 'mysql_real_connect()' (https://dev.mysql.com/doc/c-api/5.7/en/mysql-real-connect.html). See also 'wait_timeout'.
'internal_tmp_disk_storage_engine'
Command-Line Format
'--internal-tmp-disk-storage-engine=#'
System Variable
'internal_tmp_disk_storage_engine'
Scope
Global
Dynamic
Yes
Type
Enumeration
Default Value
'INNODB'
Valid Values
'MYISAM' 'INNODB'
The storage engine for on-disk internal temporary tables (see *note internal-temporary-tables::). Permitted values are 'MYISAM' and 'INNODB' (the default).
The optimizer uses the storage engine defined by 'internal_tmp_disk_storage_engine' for on-disk internal temporary tables.
When using 'internal_tmp_disk_storage_engine=INNODB' (the default), queries that generate on-disk internal temporary tables that exceed *note 'InnoDB' row or column limits: innodb-limits. return 'Row size too large' or 'Too many columns' errors. The workaround is to set 'internal_tmp_disk_storage_engine' to 'MYISAM'.
'join_buffer_size'
Command-Line Format
'--join-buffer-size=#'
System Variable
'join_buffer_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'262144'
Minimum Value
'128'
Maximum Value (Windows)
'4294967168'
Maximum Value (Other, 64-bit platforms)
'18446744073709551488'
Maximum Value (Other, 32-bit platforms)
'4294967168'
Unit
bytes
Block Size
'128'
The minimum size of the buffer that is used for plain index scans, range index scans, and joins that do not use indexes and thus perform full table scans. Normally, the best way to get fast joins is to add indexes. Increase the value of 'join_buffer_size' to get a faster full join when adding indexes is not possible. One join buffer is allocated for each full join between two tables. For a complex join between several tables for which indexes are not used, multiple join buffers might be necessary.
The default is 256KB. The maximum permissible setting for 'join_buffer_size' is 4GB−1. Larger values are permitted for 64-bit platforms (except 64-bit Windows, for which large values are truncated to 4GB−1 with a warning). The block size is 128, and a value that is not an exact multiple of the block size is rounded down to the next lower multiple of the block size by MySQL Server before storing the value for the system variable. The parser allows values up to the maximum unsigned integer value for the platform (4294967295 or 2^32−1 for a 32-bit system, 18446744073709551615 or 2^64−1 for a 64-bit system) but the actual maximum is a block size lower.
Unless a Block Nested-Loop or Batched Key Access algorithm is used, there is no gain from setting the buffer larger than required to hold each matching row, and all joins allocate at least the minimum size, so use caution in setting this variable to a large value globally. It is better to keep the global setting small and change the session setting to a larger value only in sessions that are doing large joins. Memory allocation time can cause substantial performance drops if the global size is larger than needed by most queries that use it.
When Block Nested-Loop is used, a larger join buffer can be beneficial up to the point where all required columns from all rows in the first table are stored in the join buffer. This depends on the query; the optimal size may be smaller than holding all rows from the first tables.
When Batched Key Access is used, the value of 'join_buffer_size' defines how large the batch of keys is in each request to the storage engine. The larger the buffer, the more sequential access is made to the right hand table of a join operation, which can significantly improve performance.
For additional information about join buffering, see note nested-loop-joins::. For information about Batched Key Access, see note bnl-bka-optimization::.
'keep_files_on_create'
Command-Line Format
'--keep-files-on-create[={OFF|ON}]'
System Variable
'keep_files_on_create'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
If a 'MyISAM' table is created with no 'DATA DIRECTORY' option, the '.MYD' file is created in the database directory. By default, if 'MyISAM' finds an existing '.MYD' file in this case, it overwrites it. The same applies to '.MYI' files for tables created with no 'INDEX DIRECTORY' option. To suppress this behavior, set the 'keep_files_on_create' variable to 'ON' (1), in which case 'MyISAM' does not overwrite existing files and returns an error instead. The default value is 'OFF' (0).
If a 'MyISAM' table is created with a 'DATA DIRECTORY' or 'INDEX DIRECTORY' option and an existing '.MYD' or '.MYI' file is found, MyISAM always returns an error. It does not overwrite a file in the specified directory.
'key_buffer_size'
Command-Line Format
'--key-buffer-size=#'
System Variable
'key_buffer_size'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'8388608'
Minimum Value
'0'
Maximum Value (64-bit platforms)
'OS_PER_PROCESS_LIMIT'
Maximum Value (32-bit platforms)
'4294967295'
Unit
bytes
Index blocks for 'MyISAM' tables are buffered and are shared by all threads. 'key_buffer_size' is the size of the buffer used for index blocks. The key buffer is also known as the key cache.
The minimum permissible setting is 0, but you cannot set 'key_buffer_size' to 0 dynamically. A setting of 0 drops the key cache, which is not permitted at runtime. Setting 'key_buffer_size' to 0 is permitted only at startup, in which case the key cache is not initialized. Changing the 'key_buffer_size' setting at runtime from a value of 0 to a permitted non-zero value initializes the key cache.
'key_buffer_size' can be increased or decreased only in increments or multiples of 4096 bytes. Increasing or decreasing the setting by a nonconforming value produces a warning and truncates the setting to a conforming value.
The maximum permissible setting for 'key_buffer_size' is 4GB−1 on 32-bit platforms. Larger values are permitted for 64-bit platforms. The effective maximum size might be less, depending on your available physical RAM and per-process RAM limits imposed by your operating system or hardware platform. The value of this variable indicates the amount of memory requested. Internally, the server allocates as much memory as possible up to this amount, but the actual allocation might be less.
You can increase the value to get better index handling for all reads and multiple writes; on a system whose primary function is to run MySQL using the note 'MyISAM': myisam-storage-engine. storage engine, 25% of the machine's total memory is an acceptable value for this variable. However, you should be aware that, if you make the value too large (for example, more than 50% of the machine's total memory), your system might start to page and become extremely slow. This is because MySQL relies on the operating system to perform file system caching for data reads, so you must leave some room for the file system cache. You should also consider the memory requirements of any other storage engines that you may be using in addition to note 'MyISAM': myisam-storage-engine.
For even more speed when writing many rows at the same time, use note 'LOCK TABLES': lock-tables. See note insert-optimization::.
You can check the performance of the key buffer by issuing a note 'SHOW STATUS': show-status. statement and examining the 'Key_read_requests', 'Key_reads', 'Key_write_requests', and 'Key_writes' status variables. (See note show::.) The 'Key_reads/Key_read_requests' ratio should normally be less than 0.01. The 'Key_writes/Key_write_requests' ratio is usually near 1 if you are using mostly updates and deletes, but might be much smaller if you tend to do updates that affect many rows at the same time or if you are using the 'DELAY_KEY_WRITE' table option.
The fraction of the key buffer in use can be determined using 'key_buffer_size' in conjunction with the 'Key_blocks_unused' status variable and the buffer block size, which is available from the 'key_cache_block_size' system variable:
1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)
This value is an approximation because some space in the key buffer is allocated internally for administrative structures. Factors that influence the amount of overhead for these structures include block size and pointer size. As block size increases, the percentage of the key buffer lost to overhead tends to decrease. Larger blocks results in a smaller number of read operations (because more keys are obtained per read), but conversely an increase in reads of keys that are not examined (if not all keys in a block are relevant to a query).
It is possible to create multiple 'MyISAM' key caches. The size limit of 4GB applies to each cache individually, not as a group. See *note myisam-key-cache::.
'key_cache_age_threshold'
Command-Line Format
'--key-cache-age-threshold=#'
System Variable
'key_cache_age_threshold'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'300'
Minimum Value
'100'
Maximum Value (64-bit platforms)
'18446744073709551516'
Maximum Value (32-bit platforms)
'4294967196'
Block Size
'100'
This value controls the demotion of buffers from the hot sublist of a key cache to the warm sublist. Lower values cause demotion to happen more quickly. The minimum value is 100. The default value is 300. See *note myisam-key-cache::.
'key_cache_block_size'
Command-Line Format
'--key-cache-block-size=#'
System Variable
'key_cache_block_size'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'1024'
Minimum Value
'512'
Maximum Value
'16384'
Unit
bytes
Block Size
'512'
The size in bytes of blocks in the key cache. The default value is'key_cache_division_limit'
Command-Line Format
'--key-cache-division-limit=#'
System Variable
'key_cache_division_limit'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'100'
Minimum Value
'1'
Maximum Value
'100'
The division point between the hot and warm sublists of the key cache buffer list. The value is the percentage of the buffer list to use for the warm sublist. Permissible values range from 1 to'large_files_support'
System Variable
'large_files_support'
Scope
Global
Dynamic
No
Type
Boolean
Whether *note 'mysqld': mysqld. was compiled with options for large file support.
'large_pages'
Command-Line Format
'--large-pages[={OFF|ON}]'
System Variable
'large_pages'
Scope
Global
Dynamic
No
Platform Specific
Linux
Type
Boolean
Default Value
'OFF'
Whether large page support is enabled (via the '--large-pages' option). See *note large-page-support::.
'large_page_size'
System Variable
'large_page_size'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'0'
Minimum Value
'0'
Maximum Value
'65535'
Unit
bytes
If large page support is enabled, this shows the size of memory pages. Large memory pages are supported only on Linux; on other platforms, the value of this variable is always 0. See *note large-page-support::.
'last_insert_id'
The value to be returned from 'LAST_INSERT_ID()'. This is stored in the binary log when you use 'LAST_INSERT_ID()' in a statement that updates a table. Setting this variable does not update the value returned by the 'mysql_insert_id()' (https://dev.mysql.com/doc/c-api/5.7/en/mysql-insert-id.html) C API function.
'lc_messages'
Command-Line Format
'--lc-messages=name'
System Variable
'lc_messages'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'en_US'
The locale to use for error messages. The default is 'en_US'. The server converts the argument to a language name and combines it with the value of 'lc_messages_dir' to produce the location for the error message file. See *note error-message-language::.
'lc_messages_dir'
Command-Line Format
'--lc-messages-dir=dir_name'
System Variable
'lc_messages_dir'
Scope
Global
Dynamic
No
Type
Directory name
The directory where error messages are located. The server uses the value together with the value of 'lc_messages' to produce the location for the error message file. See *note error-message-language::.
'lc_time_names'
Command-Line Format
'--lc-time-names=value'
System Variable
'lc_time_names'
Scope
Global, Session
Dynamic
Yes
Type
String
This variable specifies the locale that controls the language used to display day and month names and abbreviations. This variable affects the output from the 'DATE_FORMAT()', 'DAYNAME()' and 'MONTHNAME()' functions. Locale names are POSIX-style values such as ''ja_JP'' or ''pt_BR''. The default value is ''en_US'' regardless of your system's locale setting. For further information, see *note locale-support::.
'license'
System Variable
'license'
Scope
Global
Dynamic
No
Type
String
Default Value
'GPL'
The type of license the server has.
'local_infile'
Command-Line Format
'--local-infile[={OFF|ON}]'
System Variable
'local_infile'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'ON'
This variable controls server-side 'LOCAL' capability for *note 'LOAD DATA': load-data. statements. Depending on the 'local_infile' setting, the server refuses or permits local data loading by clients that have 'LOCAL' enabled on the client side.
To explicitly cause the server to refuse or permit note 'LOAD DATA LOCAL': load-data. statements (regardless of how client programs and libraries are configured at build time or runtime), start note 'mysqld': mysqld. with 'local_infile' disabled or enabled, respectively. 'local_infile' can also be set at runtime. For more information, see *note load-data-local-security::.
'lock_wait_timeout'
Command-Line Format
'--lock-wait-timeout=#'
System Variable
'lock_wait_timeout'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'31536000'
Minimum Value
'1'
Maximum Value
'31536000'
Unit
seconds
This variable specifies the timeout in seconds for attempts to acquire metadata locks. The permissible values range from 1 to 31536000 (1 year). The default is 31536000.
This timeout applies to all statements that use metadata locks. These include DML and DDL operations on tables, views, stored procedures, and stored functions, as well as note 'LOCK TABLES': lock-tables, 'FLUSH TABLES WITH READ LOCK', and note 'HANDLER': handler. statements.
This timeout does not apply to implicit accesses to system tables in the 'mysql' database, such as grant tables modified by note 'GRANT': grant. or note 'REVOKE': revoke. statements or table logging statements. The timeout does apply to system tables accessed directly, such as with note 'SELECT': select. or note 'UPDATE': update.
The timeout value applies separately for each metadata lock attempt. A given statement can require more than one lock, so it is possible for the statement to block for longer than the 'lock_wait_timeout' value before reporting a timeout error. When lock timeout occurs, 'ER_LOCK_WAIT_TIMEOUT' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_lock_wait_timeout) is reported.
'lock_wait_timeout' does not apply to delayed inserts, which always execute with a timeout of 1 year. This is done to avoid unnecessary timeouts because a session that issues a delayed insert receives no notification of delayed insert timeouts.
'locked_in_memory'
System Variable
'locked_in_memory'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'OFF'
Whether *note 'mysqld': mysqld. was locked in memory with '--memlock'.
'log_error'
Command-Line Format
'--log-error[=file_name]'
System Variable
'log_error'
Scope
Global
Dynamic
No
Type
File name
The error log output destination. If the destination is the console, the value is 'stderr'. Otherwise, the destination is a file and the 'log_error' value is the file name. See *note error-log::.
'log_error_verbosity'
Command-Line Format
'--log-error-verbosity=#'
System Variable
'log_error_verbosity'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'3'
Minimum Value
'1'
Maximum Value
'3'
The verbosity of the server in writing error, warning, and note messages to the error log. The following table shows the permitted values. The default is 3.
log_error_verbosity Value Permitted Messages
1 Error messages
2 Error and warning messages
3 Error, warning, and information messages
'log_error_verbosity' was added in MySQL 5.7.2. It is preferred over, and should be used instead of, the older 'log_warnings' system variable. See the description of 'log_warnings' for information about how that variable relates to 'log_error_verbosity'. In particular, assigning a value to 'log_warnings' assigns a value to 'log_error_verbosity' and vice versa.
'log_output'
Command-Line Format
'--log-output=name'
System Variable
'log_output'
Scope
Global
Dynamic
Yes
Type
Set
Default Value
'FILE'
Valid Values
'TABLE' 'FILE' 'NONE'
The destination or destinations for general query log and slow query log output. The value is a list one or more comma-separated words chosen from 'TABLE', 'FILE', and 'NONE'. 'TABLE' selects logging to the 'general_log' and 'slow_log' tables in the 'mysql' system database. 'FILE' selects logging to log files. 'NONE' disables logging. If 'NONE' is present in the value, it takes precedence over any other words that are present. 'TABLE' and 'FILE' can both be given to select both log output destinations.
This variable selects log output destinations, but does not enable log output. To do that, enable the 'general_log' and 'slow_query_log' system variables. For 'FILE' logging, the 'general_log_file' and 'slow_query_log_file' system variables determine the log file locations. For more information, see *note log-destinations::.
'log_queries_not_using_indexes'
Command-Line Format
'--log-queries-not-using-indexes[={OFF|ON}]'
System Variable
'log_queries_not_using_indexes'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
If you enable this variable with the slow query log enabled, queries that are expected to retrieve all rows are logged. See *note slow-query-log::. This option does not necessarily mean that no index is used. For example, a query that uses a full index scan uses an index but would be logged because the index would not limit the number of rows.
'log_slow_admin_statements'
Command-Line Format
'--log-slow-admin-statements[={OFF|ON}]'
System Variable
'log_slow_admin_statements'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Include slow administrative statements in the statements written to the slow query log. Administrative statements include note 'ALTER TABLE': alter-table, note 'ANALYZE TABLE': analyze-table, note 'CHECK TABLE': check-table, note 'CREATE INDEX': create-index, note 'DROP INDEX': drop-index, note 'OPTIMIZE TABLE': optimize-table, and *note 'REPAIR TABLE': repair-table.
'log_syslog'
Command-Line Format
'--log-syslog[={OFF|ON}]'
System Variable
'log_syslog'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value (Unix)
'OFF'
Default Value (Windows)
'ON'
Whether to write error log output to the system log. This is the Event Log on Windows, and 'syslog' on Unix and Unix-like systems. The default value is platform specific:
* On Windows, Event Log output is enabled by default.
* On Unix and Unix-like systems, 'syslog' output is disabled by
default.
Regardless of the default, 'log_syslog' can be set explicitly to control output on any supported platform.
System log output control is distinct from sending error output to a file or the console. Error output can be directed to a file or the console in addition to or instead of the system log as desired. See *note error-log::.
'log_syslog_facility'
Command-Line Format
'--log-syslog-facility=value'
System Variable
'log_syslog_facility'
Scope
Global
Dynamic
Yes
Type
String
Default Value
'daemon'
The facility for error log output written to 'syslog' (what type of program is sending the message). This variable has no effect unless the 'log_syslog' system variable is enabled. See *note error-log-syslog::.
The permitted values can vary per operating system; consult your system 'syslog' documentation.
This variable does not exist on Windows.
'log_syslog_include_pid'
Command-Line Format
'--log-syslog-include-pid[={OFF|ON}]'
System Variable
'log_syslog_include_pid'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'ON'
Whether to include the server process ID in each line of error log output written to 'syslog'. This variable has no effect unless the 'log_syslog' system variable is enabled. See *note error-log-syslog::.
This variable does not exist on Windows.
'log_syslog_tag'
Command-Line Format
'--log-syslog-tag=tag'
System Variable
'log_syslog_tag'
Scope
Global
Dynamic
Yes
Type
String
Default Value
'empty string'
The tag to be added to the server identifier in error log output written to 'syslog'. This variable has no effect unless the 'log_syslog' system variable is enabled. See *note error-log-syslog::.
By default, the server identifier is 'mysqld' with no tag. If a tag value of TAG is specified, it is appended to the server identifier with a leading hyphen, resulting in an identifier of 'mysqld-TAG'.
On Windows, to use a tag that does not already exist, the server must be run from an account with Administrator privileges, to permit creation of a registry entry for the tag. Elevated privileges are not required if the tag already exists.
'log_timestamps'
Command-Line Format
'--log-timestamps=#'
System Variable
'log_timestamps'
Scope
Global
Dynamic
Yes
Type
Enumeration
Default Value
'UTC'
Valid Values
'UTC' 'SYSTEM'
This variable controls the time zone of timestamps in messages written to the error log, and in general query log and slow query log messages written to files. It does not affect the time zone of general query log and slow query log messages written to tables ('mysql.general_log', 'mysql.slow_log'). Rows retrieved from those tables can be converted from the local system time zone to any desired time zone with 'CONVERT_TZ()' or by setting the session 'time_zone' system variable.
Permitted 'log_timestamps' values are 'UTC' (the default) and 'SYSTEM' (local system time zone).
Timestamps are written using ISO 8601 / RFC 3339 format: 'YYYY-MM-DDTHH:MM:SS.UUUUUU' plus a tail value of 'Z' signifying Zulu time (UTC) or '±hh:mm' (an offset from UTC).
'log_throttle_queries_not_using_indexes'
Command-Line Format
'--log-throttle-queries-not-using-indexes=#'
System Variable
'log_throttle_queries_not_using_indexes'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'0'
Minimum Value
'0'
Maximum Value
'4294967295'
If 'log_queries_not_using_indexes' is enabled, the 'log_throttle_queries_not_using_indexes' variable limits the number of such queries per minute that can be written to the slow query log. A value of 0 (the default) means 'no limit'. For more information, see *note slow-query-log::.
'log_warnings'
Command-Line Format
'--log-warnings[=#]'
Deprecated
Yes
System Variable
'log_warnings'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'2'
Minimum Value
'0'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
Whether to produce additional warning messages to the error log. As of MySQL 5.7.2, information items previously governed by 'log_warnings' are governed by 'log_error_verbosity', which is preferred over, and should be used instead of, the older 'log_warnings' system variable. (The 'log_warnings' system variable and '--log-warnings' command-line option are deprecated; expect them to be removed in a future release of MySQL.)
'log_warnings' is enabled by default (the default is 1 before MySQL 5.7.2, 2 as of 5.7.2). To disable it, set it to 0. If the value is greater than 0, the server logs messages about statements that are unsafe for statement-based logging. If the value is greater than 1, the server logs aborted connections and access-denied errors for new connection attempts. See *note communication-errors::.
If you use replication, enabling this variable by setting it greater than 0 is recommended, to get more information about what is happening, such as messages about network failures and reconnections.
If a replica server is started with 'log_warnings' enabled, the replica prints messages to the error log to provide information about its status, such as the binary log and relay log coordinates where it starts its job, when it is switching to another relay log, when it reconnects after a disconnect, and so forth.
Assigning a value to 'log_warnings' assigns a value to 'log_error_verbosity' and vice versa. The variables are related as follows:
* Suppression of all 'log_warnings' items, achieved with
'log_warnings=0', is achieved with 'log_error_verbosity=1'
(errors only).
* Items printed for 'log_warnings=1' or higher count as warnings
and are printed for 'log_error_verbosity=2' or higher.
* Items printed for 'log_warnings=2' count as notes and are
printed for 'log_error_verbosity=3'.
As of MySQL 5.7.2, the default log level is controlled by 'log_error_verbosity', which has a default of 3. In addition, the default for 'log_warnings' changes from 1 to 2, which corresponds to 'log_error_verbosity=3'. To achieve a logging level similar to the previous default, set 'log_error_verbosity=2'.
In MySQL 5.7.2 and higher, use of 'log_warnings' is still permitted but maps onto use of 'log_error_verbosity' as follows:
* Setting 'log_warnings=0' is equivalent to
'log_error_verbosity=1' (errors only).
* Setting 'log_warnings=1' is equivalent to
'log_error_verbosity=2' (errors, warnings).
* Setting 'log_warnings=2' (or higher) is equivalent to
'log_error_verbosity=3' (errors, warnings, notes), and the
server sets 'log_warnings' to 2 if a larger value is
specified.
'long_query_time'
Command-Line Format
'--long-query-time=#'
System Variable
'long_query_time'
Scope
Global, Session
Dynamic
Yes
Type
Numeric
Default Value
'10'
Minimum Value
'0'
Maximum Value
'31536000'
Unit
seconds
If a query takes longer than this many seconds, the server increments the 'Slow_queries' status variable. If the slow query log is enabled, the query is logged to the slow query log file. This value is measured in real time, not CPU time, so a query that is under the threshold on a lightly loaded system might be above the threshold on a heavily loaded one. The minimum and default values of 'long_query_time' are 0 and 10, respectively. The maximum is 31536000, which is 365 days in seconds. The value can be specified to a resolution of microseconds. See *note slow-query-log::.
Smaller values of this variable result in more statements being considered long-running, with the result that more space is required for the slow query log. For very small values (less than one second), the log may grow quite large in a small time. Increasing the number of statements considered long-running may also result in false positives for the 'excessive Number of Long Running Processes' alert in MySQL Enterprise Monitor, especially if Group Replication is enabled. For these reasons, very small values should be used in test environments only, or, in production environments, only for a short period.
'low_priority_updates'
Command-Line Format
'--low-priority-updates[={OFF|ON}]'
System Variable
'low_priority_updates'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
If set to '1', all note 'INSERT': insert, note 'UPDATE': update, note 'DELETE': delete, and 'LOCK TABLE WRITE' statements wait until there is no pending note 'SELECT': select. or 'LOCK TABLE READ' on the affected table. The same effect can be obtained using '{INSERT | REPLACE | DELETE | UPDATE} LOW_PRIORITY ...' to lower the priority of only one query. This variable affects only storage engines that use only table-level locking (such as 'MyISAM', 'MEMORY', and 'MERGE'). See *note table-locking::.
'lower_case_file_system'
System Variable
'lower_case_file_system'
Scope
Global
Dynamic
No
Type
Boolean
This variable describes the case sensitivity of file names on the file system where the data directory is located. 'OFF' means file names are case-sensitive, 'ON' means they are not case-sensitive. This variable is read only because it reflects a file system attribute and setting it would have no effect on the file system.
'lower_case_table_names'
Command-Line Format
'--lower-case-table-names[=#]'
System Variable
'lower_case_table_names'
Scope
Global
Dynamic
No
Type
Integer
Default Value (macOS)
'2'
Default Value (Unix)
'0'
Default Value (Windows)
'1'
Minimum Value
'0'
Maximum Value
'2'
If set to 0, table names are stored as specified and comparisons are case-sensitive. If set to 1, table names are stored in lowercase on disk and comparisons are not case-sensitive. If set to 2, table names are stored as given but compared in lowercase. This option also applies to database names and table aliases. For additional details, see *note identifier-case-sensitivity::.
The default value of this variable is platform-dependent (see 'lower_case_file_system'). On Linux and other Unix-like systems, the default is '0'. On Windows the default value is '1'. On macOS, the default value is '2'. On Linux (and other Unix-like systems), setting the value to '2' is not supported; the server forces the value to '0' instead.
You should not set 'lower_case_table_names' to 0 if you are running MySQL on a system where the data directory resides on a case-insensitive file system (such as on Windows or macOS). It is an unsupported combination that could result in a hang condition when running an 'INSERT INTO ... SELECT ... FROM TBL_NAME' operation with the wrong TBL_NAME lettercase. With 'MyISAM', accessing table names using different lettercases could cause index corruption.
An error message is printed and the server exits if you attempt to start the server with '--lower_case_table_names=0' on a case-insensitive file system.
The setting of this variable affects the behavior of replication filtering options with regard to case sensitivity. For more information, see *note replication-rules::.
'max_allowed_packet'
Command-Line Format
'--max-allowed-packet=#'
System Variable
'max_allowed_packet'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'4194304'
Minimum Value
'1024'
Maximum Value
'1073741824'
Unit
bytes
Block Size
'1024'
The maximum size of one packet or any generated/intermediate string, or any parameter sent by the 'mysql_stmt_send_long_data()' (https://dev.mysql.com/doc/c-api/5.7/en/mysql-stmt-send-long-data.html) C API function. The default is 4MB.
The packet message buffer is initialized to 'net_buffer_length' bytes, but can grow up to 'max_allowed_packet' bytes when needed. This value by default is small, to catch large (possibly incorrect) packets.
You must increase this value if you are using large note 'BLOB': blob. columns or long strings. It should be as big as the largest note 'BLOB': blob. you want to use. The protocol limit for 'max_allowed_packet' is 1GB. The value should be a multiple of 1024; nonmultiples are rounded down to the nearest multiple.
When you change the message buffer size by changing the value of the 'max_allowed_packet' variable, you should also change the buffer size on the client side if your client program permits it. The default 'max_allowed_packet' value built in to the client library is 1GB, but individual client programs might override this. For example, note 'mysql': mysql. and note 'mysqldump': mysqldump. have defaults of 16MB and 24MB, respectively. They also enable you to change the client-side value by setting 'max_allowed_packet' on the command line or in an option file.
The session value of this variable is read only. The client can receive up to as many bytes as the session value. However, the server cannot send to the client more bytes than the current global 'max_allowed_packet' value. (The global value could be less than the session value if the global value is changed after the client connects.)
'max_connect_errors'
Command-Line Format
'--max-connect-errors=#'
System Variable
'max_connect_errors'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'100'
Minimum Value
'1'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
After 'max_connect_errors' successive connection requests from a host are interrupted without a successful connection, the server blocks that host from further connections. If a connection from a host is established successfully within fewer than 'max_connect_errors' attempts after a previous connection was interrupted, the error count for the host is cleared to zero. To unblock blocked hosts, flush the host cache; see *note host-cache-flushing::.
'max_connections'
Command-Line Format
'--max-connections=#'
System Variable
'max_connections'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'151'
Minimum Value
'1'
Maximum Value
'100000'
The maximum permitted number of simultaneous client connections. The maximum effective value is the lesser of the effective value of 'open_files_limit'' - 810', and the value actually set for 'max_connections'.
For more information, see *note connection-interfaces::.
'max_delayed_threads'
Command-Line Format
'--max-delayed-threads=#'
Deprecated
Yes
System Variable
'max_delayed_threads'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'20'
Minimum Value
'0'
Maximum Value
'16384'
This system variable is deprecated (because 'DELAYED' inserts are not supported); expect it to be removed in a future release.
'max_digest_length'
Command-Line Format
'--max-digest-length=#'
System Variable
'max_digest_length'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'1024'
Minimum Value
'0'
Maximum Value
'1048576'
Unit
bytes
The maximum number of bytes of memory reserved per session for computation of normalized statement digests. Once that amount of space is used during digest computation, truncation occurs: no further tokens from a parsed statement are collected or figure into its digest value. Statements that differ only after that many bytes of parsed tokens produce the same normalized statement digest and are considered identical if compared or if aggregated for digest statistics.
The length used for calculating a normalized statement digest is the sum of the length of the normalized statement digest and the length of the statement digest. Since the length of the statement digest is always 64, when the value of 'max_digest_length' is 1024 (the default), the maximum length for a normalized SQL statement before truncation occurs is 1024 - 64 = 960 bytes.
Warning:
Setting 'max_digest_length' to zero disables digest production, which also disables server functionality that requires digests, such as MySQL Enterprise Firewall.
Decreasing the 'max_digest_length' value reduces memory use but causes the digest value of more statements to become indistinguishable if they differ only at the end. Increasing the value permits longer statements to be distinguished but increases memory use, particularly for workloads that involve large numbers of simultaneous sessions (the server allocates 'max_digest_length' bytes per session).
The parser uses this system variable as a limit on the maximum length of normalized statement digests that it computes. The Performance Schema, if it tracks statement digests, makes a copy of the digest value, using the 'performance_schema_max_digest_length'. system variable as a limit on the maximum length of digests that it stores. Consequently, if 'performance_schema_max_digest_length' is less than 'max_digest_length', digest values stored in the Performance Schema are truncated relative to the original digest values.
For more information about statement digesting, see *note performance-schema-statement-digests::.
'max_error_count'
Command-Line Format
'--max-error-count=#'
System Variable
'max_error_count'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'64'
Minimum Value
'0'
Maximum Value
'65535'
The maximum number of error, warning, and information messages to be stored for display by the note 'SHOW ERRORS': show-errors. and note 'SHOW WARNINGS': show-warnings. statements. This is the same as the number of condition areas in the diagnostics area, and thus the number of conditions that can be inspected by *note 'GET DIAGNOSTICS': get-diagnostics.
'max_execution_time'
Command-Line Format
'--max-execution-time=#'
System Variable
'max_execution_time'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'0'
Minimum Value
'0'
Maximum Value
'4294967295'
Unit
milliseconds
The execution timeout for *note 'SELECT': select. statements, in milliseconds. If the value is 0, timeouts are not enabled.
'max_execution_time' applies as follows:
* The global 'max_execution_time' value provides the default for
the session value for new connections. The session value
applies to 'SELECT' executions executed within the session
that include no 'MAX_EXECUTION_TIME(N)' optimizer hint or for
which N is 0.
* 'max_execution_time' applies to read-only *note 'SELECT':
select. statements. Statements that are not read only are
those that invoke a stored function that modifies data as a
side effect.
* 'max_execution_time' is ignored for *note 'SELECT': select.
statements in stored programs.
'max_heap_table_size'
Command-Line Format
'--max-heap-table-size=#'
System Variable
'max_heap_table_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'16777216'
Minimum Value
'16384'
Maximum Value (64-bit platforms)
'18446744073709550592'
Maximum Value (32-bit platforms)
'4294966272'
Unit
bytes
Block Size
'1024'
This variable sets the maximum size to which user-created 'MEMORY' tables are permitted to grow. The value of the variable is used to calculate 'MEMORY' table 'MAX_ROWS' values.
Setting this variable has no effect on any existing 'MEMORY' table, unless the table is re-created with a statement such as note 'CREATE TABLE': create-table. or altered with note 'ALTER TABLE': alter-table. or *note 'TRUNCATE TABLE': truncate-table. A server restart also sets the maximum size of existing 'MEMORY' tables to the global 'max_heap_table_size' value.
This variable is also used in conjunction with 'tmp_table_size' to limit the size of internal in-memory tables. See *note internal-temporary-tables::.
'max_heap_table_size' is not replicated. See note replication-features-memory::, and note replication-features-variables::, for more information.
'max_insert_delayed_threads'
Deprecated
Yes
System Variable
'max_insert_delayed_threads'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'0'
Minimum Value
'20'
Maximum Value
'16384'
This variable is a synonym for 'max_delayed_threads'.
This system variable is deprecated (because 'DELAYED' inserts are not supported); expect it to be removed in a future release.
'max_join_size'
Command-Line Format
'--max-join-size=#'
System Variable
'max_join_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'18446744073709551615'
Minimum Value
'1'
Maximum Value
'18446744073709551615'
Do not permit statements that probably need to examine more than 'max_join_size' rows (for single-table statements) or row combinations (for multiple-table statements) or that are likely to do more than 'max_join_size' disk seeks. By setting this value, you can catch statements where keys are not used properly and that would probably take a long time. Set it if your users tend to perform joins that lack a 'WHERE' clause, that take a long time, or that return millions of rows. For more information, see *note safe-updates::.
Setting this variable to a value other than 'DEFAULT' resets the value of 'sql_big_selects' to '0'. If you set the 'sql_big_selects' value again, the 'max_join_size' variable is ignored.
If a query result is in the query cache, no result size check is performed, because the result has previously been computed and it does not burden the server to send it to the client.
'max_length_for_sort_data'
Command-Line Format
'--max-length-for-sort-data=#'
System Variable
'max_length_for_sort_data'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'1024'
Minimum Value
'4'
Maximum Value
'8388608'
Unit
bytes
The cutoff on the size of index values that determines which 'filesort' algorithm to use. See *note order-by-optimization::.
'max_points_in_geometry'
Command-Line Format
'--max-points-in-geometry=#'
System Variable
'max_points_in_geometry'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'65536'
Minimum Value
'3'
Maximum Value
'1048576'
The maximum value of the POINTS_PER_CIRCLE argument to the 'ST_Buffer_Strategy()' function.
'max_prepared_stmt_count'
Command-Line Format
'--max-prepared-stmt-count=#'
System Variable
'max_prepared_stmt_count'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'16382'
Minimum Value
'0'
Maximum Value
'1048576'
This variable limits the total number of prepared statements in the server. It can be used in environments where there is the potential for denial-of-service attacks based on running the server out of memory by preparing huge numbers of statements. If the value is set lower than the current number of prepared statements, existing statements are not affected and can be used, but no new statements can be prepared until the current number drops below the limit. Setting the value to 0 disables prepared statements.
'max_seeks_for_key'
Command-Line Format
'--max-seeks-for-key=#'
System Variable
'max_seeks_for_key'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value (Windows)
'4294967295'
Default Value (Other, 64-bit platforms)
'18446744073709551615'
Default Value (Other, 32-bit platforms)
'4294967295'
Minimum Value
'1'
Maximum Value (Windows)
'4294967295'
Maximum Value (Other, 64-bit platforms)
'18446744073709551615'
Maximum Value (Other, 32-bit platforms)
'4294967295'
Limit the assumed maximum number of seeks when looking up rows based on a key. The MySQL optimizer assumes that no more than this number of key seeks are required when searching for matching rows in a table by scanning an index, regardless of the actual cardinality of the index (see *note show-index::). By setting this to a low value (say, 100), you can force MySQL to prefer indexes instead of table scans.
'max_sort_length'
Command-Line Format
'--max-sort-length=#'
System Variable
'max_sort_length'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'1024'
Minimum Value
'4'
Maximum Value
'8388608'
Unit
bytes
The number of bytes to use when sorting data values. The server uses only the first 'max_sort_length' bytes of each value and ignores the rest. Consequently, values that differ only after the first 'max_sort_length' bytes compare as equal for 'GROUP BY', 'ORDER BY', and 'DISTINCT' operations.
Increasing the value of 'max_sort_length' may require increasing the value of 'sort_buffer_size' as well. For details, see *note order-by-optimization::
'max_sp_recursion_depth'
Command-Line Format
'--max-sp-recursion-depth[=#]'
System Variable
'max_sp_recursion_depth'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'0'
Minimum Value
'0'
Maximum Value
'255'
The number of times that any given stored procedure may be called recursively. The default value for this option is 0, which completely disables recursion in stored procedures. The maximum value is 255.
Stored procedure recursion increases the demand on thread stack space. If you increase the value of 'max_sp_recursion_depth', it may be necessary to increase thread stack size by increasing the value of 'thread_stack' at server startup.
'max_tmp_tables'
This variable is unused. It is deprecated and is removed in MySQL 8.0.
'max_user_connections'
Command-Line Format
'--max-user-connections=#'
System Variable
'max_user_connections'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'0'
Minimum Value
'0'
Maximum Value
'4294967295'
The maximum number of simultaneous connections permitted to any given MySQL user account. A value of 0 (the default) means 'no limit.'
This variable has a global value that can be set at server startup or runtime. It also has a read-only session value that indicates the effective simultaneous-connection limit that applies to the account associated with the current session. The session value is initialized as follows:
* If the user account has a nonzero 'MAX_USER_CONNECTIONS'
resource limit, the session 'max_user_connections' value is
set to that limit.
* Otherwise, the session 'max_user_connections' value is set to
the global value.
Account resource limits are specified using the note 'CREATE USER': create-user. or note 'ALTER USER': alter-user. statement. See *note user-resources::.
'max_write_lock_count'
Command-Line Format
'--max-write-lock-count=#'
System Variable
'max_write_lock_count'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value (Windows)
'4294967295'
Default Value (Other, 64-bit platforms)
'18446744073709551615'
Default Value (Other, 32-bit platforms)
'4294967295'
Minimum Value
'1'
Maximum Value (Windows)
'4294967295'
Maximum Value (Other, 64-bit platforms)
'18446744073709551615'
Maximum Value (Other, 32-bit platforms)
'4294967295'
After this many write locks, permit some pending read lock requests to be processed in between. Write lock requests have higher priority than read lock requests. However, if 'max_write_lock_count' is set to some low value (say, 10), read lock requests may be preferred over pending write lock requests if the read lock requests have already been passed over in favor of 10 write lock requests. Normally this behavior does not occur because 'max_write_lock_count' by default has a very large value.
'mecab_rc_file'
Command-Line Format
'--mecab-rc-file=file_name'
System Variable
'mecab_rc_file'
Scope
Global
Dynamic
No
Type
File name
The 'mecab_rc_file' option is used when setting up the MeCab full-text parser.
The 'mecab_rc_file' option defines the path to the 'mecabrc' configuration file, which is the configuration file for MeCab. The option is read-only and can only be set at startup. The 'mecabrc' configuration file is required to initialize MeCab.
For information about the MeCab full-text parser, see *note fulltext-search-mecab::.
For information about options that can be specified in the MeCab 'mecabrc' configuration file, refer to the MeCab Documentation (http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html) on the Google Developers (https://code.google.com/) site.
'metadata_locks_cache_size'
Command-Line Format
'--metadata-locks-cache-size=#'
Deprecated
Yes
System Variable
'metadata_locks_cache_size'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'1024'
Minimum Value
'1'
Maximum Value
'1048576'
Unit
bytes
The size of the metadata locks cache. The server uses this cache to avoid creation and destruction of synchronization objects. This is particularly helpful on systems where such operations are expensive, such as Windows XP.
In MySQL 5.7.4, metadata locking implementation changes make this variable unnecessary, and so it is deprecated; expect it to be removed in a future release of MySQL.
'metadata_locks_hash_instances'
Command-Line Format
'--metadata-locks-hash-instances=#'
Deprecated
Yes
System Variable
'metadata_locks_hash_instances'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'8'
Minimum Value
'1'
Maximum Value
'1024'
The set of metadata locks can be partitioned into separate hashes to permit connections accessing different objects to use different locking hashes and reduce contention. The 'metadata_locks_hash_instances' system variable specifies the number of hashes (default 8).
In MySQL 5.7.4, metadata locking implementation changes make this variable unnecessary, and so it is deprecated; expect it to be removed in a future release of MySQL.
'min_examined_row_limit'
Command-Line Format
'--min-examined-row-limit=#'
System Variable
'min_examined_row_limit'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'0'
Minimum Value
'0'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
Queries that examine fewer than this number of rows are not logged to the slow query log.
'multi_range_count'
Command-Line Format
'--multi-range-count=#'
Deprecated
Yes
System Variable
'multi_range_count'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'256'
Minimum Value
'1'
Maximum Value
'4294967295'
This variable has no effect. It is deprecated and is removed in MySQL 8.0.
'myisam_data_pointer_size'
Command-Line Format
'--myisam-data-pointer-size=#'
System Variable
'myisam_data_pointer_size'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'6'
Minimum Value
'2'
Maximum Value
'7'
Unit
bytes
The default pointer size in bytes, to be used by *note 'CREATE TABLE': create-table. for 'MyISAM' tables when no 'MAX_ROWS' option is specified. This variable cannot be less than 2 or larger than'myisam_max_sort_file_size'
Command-Line Format
'--myisam-max-sort-file-size=#'
System Variable
'myisam_max_sort_file_size'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value (Windows)
'2146435072'
Default Value (Other, 64-bit platforms)
'9223372036853727232'
Default Value (Other, 32-bit platforms)
'2147483648'
Minimum Value
'0'
Maximum Value (Windows)
'2146435072'
Maximum Value (Other, 64-bit platforms)
'9223372036853727232'
Maximum Value (Other, 32-bit platforms)
'2147483648'
Unit
bytes
The maximum size of the temporary file that MySQL is permitted to use while re-creating a 'MyISAM' index (during note 'REPAIR TABLE': repair-table, note 'ALTER TABLE': alter-table, or *note 'LOAD DATA': load-data.). If the file size would be larger than this value, the index is created using the key cache instead, which is slower. The value is given in bytes.
If 'MyISAM' index files exceed this size and disk space is available, increasing the value may help performance. The space must be available in the file system containing the directory where the original index file is located.
'myisam_mmap_size'
Command-Line Format
'--myisam-mmap-size=#'
System Variable
'myisam_mmap_size'
Scope
Global
Dynamic
No
Type
Integer
Default Value (64-bit platforms)
'18446744073709551615'
Default Value (32-bit platforms)
'4294967295'
Minimum Value
'7'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
Unit
bytes
The maximum amount of memory to use for memory mapping compressed *note 'MyISAM': myisam-storage-engine. files. If many compressed 'MyISAM' tables are used, the value can be decreased to reduce the likelihood of memory-swapping problems.
'myisam_recover_options'
Command-Line Format
'--myisam-recover-options[=list]'
System Variable
'myisam_recover_options'
Scope
Global
Dynamic
No
Type
Enumeration
Default Value
'OFF'
Valid Values
'OFF' 'DEFAULT' 'BACKUP' 'FORCE' 'QUICK'
Set the 'MyISAM' storage engine recovery mode. The variable value is any combination of the values of 'OFF', 'DEFAULT', 'BACKUP', 'FORCE', or 'QUICK'. If you specify multiple values, separate them by commas. Specifying the variable with no value at server startup is the same as specifying 'DEFAULT', and specifying with an explicit value of '""' disables recovery (same as a value of 'OFF'). If recovery is enabled, each time note 'mysqld': mysqld. opens a 'MyISAM' table, it checks whether the table is marked as crashed or was not closed properly. (The last option works only if you are running with external locking disabled.) If this is the case, note 'mysqld': mysqld. runs a check on the table. If the table was corrupted, *note 'mysqld': mysqld. attempts to repair it.
The following options affect how the repair works.
Option Description
'OFF' No recovery.
'DEFAULT' Recovery without backup, forcing, or quick checking.
'BACKUP' If the data file was changed during recovery, save a backup of the 'TBL_NAME.MYD' file as 'TBL_NAME-DATETIME.BAK'.
'FORCE' Run recovery even if we would lose more than one row from the '.MYD' file.
'QUICK' Do not check the rows in the table if there are not any delete blocks.
Before the server automatically repairs a table, it writes a note about the repair to the error log. If you want to be able to recover from most problems without user intervention, you should use the options 'BACKUP,FORCE'. This forces a repair of a table even if some rows would be deleted, but it keeps the old data file as a backup so that you can later examine what happened.
See *note myisam-start::.
'myisam_repair_threads'
Command-Line Format
'--myisam-repair-threads=#'
Deprecated
5.7.38 (removed in 5.7.39)
System Variable
'myisam_repair_threads'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'1'
Minimum Value
'1'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
Note:
This system variable is deprecated in MySQL 5.7; expect it to be removed in a future release of MySQL.
From MySQL 5.7.38, values other than 1 produce a warning.
If this value is greater than 1, 'MyISAM' table indexes are created in parallel (each index in its own thread) during the 'Repair by sorting' process. The default value is 1.
Note:
Multithreaded repair is beta-quality code.
'myisam_sort_buffer_size'
Command-Line Format
'--myisam-sort-buffer-size=#'
System Variable
'myisam_sort_buffer_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'8388608'
Minimum Value
'4096'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
Unit
bytes
The size of the buffer that is allocated when sorting 'MyISAM' indexes during a note 'REPAIR TABLE': repair-table. or when creating indexes with note 'CREATE INDEX': create-index. or *note 'ALTER TABLE': alter-table.
'myisam_stats_method'
Command-Line Format
'--myisam-stats-method=name'
System Variable
'myisam_stats_method'
Scope
Global, Session
Dynamic
Yes
Type
Enumeration
Default Value
'nulls_unequal'
Valid Values
'nulls_unequal' 'nulls_equal' 'nulls_ignored'
How the server treats 'NULL' values when collecting statistics about the distribution of index values for 'MyISAM' tables. This variable has three possible values, 'nulls_equal', 'nulls_unequal', and 'nulls_ignored'. For 'nulls_equal', all 'NULL' index values are considered equal and form a single value group that has a size equal to the number of 'NULL' values. For 'nulls_unequal', 'NULL' values are considered unequal, and each 'NULL' forms a distinct value group of size 1. For 'nulls_ignored', 'NULL' values are ignored.
The method that is used for generating table statistics influences how the optimizer chooses indexes for query execution, as described in *note index-statistics::.
'myisam_use_mmap'
Command-Line Format
'--myisam-use-mmap[={OFF|ON}]'
System Variable
'myisam_use_mmap'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Use memory mapping for reading and writing 'MyISAM' tables.
'mysql_native_password_proxy_users'
Command-Line Format
'--mysql-native-password-proxy-users[={OFF|ON}]'
System Variable
'mysql_native_password_proxy_users'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
This variable controls whether the 'mysql_native_password' built-in authentication plugin supports proxy users. It has no effect unless the 'check_proxy_users' system variable is enabled. For information about user proxying, see *note proxy-users::.
'named_pipe'
Command-Line Format
'--named-pipe[={OFF|ON}]'
System Variable
'named_pipe'
Scope
Global
Dynamic
No
Platform Specific
Windows
Type
Boolean
Default Value
'OFF'
(Windows only.) Indicates whether the server supports connections over named pipes.
'named_pipe_full_access_group'
Command-Line Format
'--named-pipe-full-access-group=value'
Introduced
5.7.25
System Variable
'named_pipe_full_access_group'
Scope
Global
Dynamic
No
Platform Specific
Windows
Type
String
Default Value
'empty string'
Valid Values
'empty string' 'valid Windows local group name' 'everyone'
(Windows only.) The access control granted to clients on the named pipe created by the MySQL server is set to the minimum necessary for successful communication when the 'named_pipe' system variable is enabled to support named-pipe connections. Some MySQL client software can open named pipe connections without any additional configuration; however, other client software may still require full access to open a named pipe connection.
This variable sets the name of a Windows local group whose members are granted sufficient access by the MySQL server to use named-pipe clients. As of MySQL 5.7.34, the default value is set to an empty string, which means that no Windows user is granted full access to the named pipe.
A new Windows local group name (for example, 'mysql_access_client_users') can be created in Windows and then used to replace the default value when access is absolutely necessary. In this case, limit the membership of the group to as few users as possible, removing users from the group when their client software is upgraded. A non-member of the group who attempts to open a connection to MySQL with the affected named-pipe client is denied access until a Windows administrator adds the user to the group. Newly added users must log out and log in again to join the group (required by Windows).
Setting the value to ''everyone'' provides a language-independent way of referring to the Everyone group on Windows. The Everyone group is not secure by default.
'net_buffer_length'
Command-Line Format
'--net-buffer-length=#'
System Variable
'net_buffer_length'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'16384'
Minimum Value
'1024'
Maximum Value
'1048576'
Unit
bytes
Block Size
'1024'
Each client thread is associated with a connection buffer and result buffer. Both begin with a size given by 'net_buffer_length' but are dynamically enlarged up to 'max_allowed_packet' bytes as needed. The result buffer shrinks to 'net_buffer_length' after each SQL statement.
This variable should not normally be changed, but if you have very little memory, you can set it to the expected length of statements sent by clients. If statements exceed this length, the connection buffer is automatically enlarged. The maximum value to which 'net_buffer_length' can be set is 1MB.
The session value of this variable is read only.
'net_read_timeout'
Command-Line Format
'--net-read-timeout=#'
System Variable
'net_read_timeout'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'30'
Minimum Value
'1'
Maximum Value
'31536000'
Unit
seconds
The number of seconds to wait for more data from a connection before aborting the read. When the server is reading from the client, 'net_read_timeout' is the timeout value controlling when to abort. When the server is writing to the client, 'net_write_timeout' is the timeout value controlling when to abort. See also 'slave_net_timeout'.
'net_retry_count'
Command-Line Format
'--net-retry-count=#'
System Variable
'net_retry_count'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'10'
Minimum Value
'1'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
If a read or write on a communication port is interrupted, retry this many times before giving up. This value should be set quite high on FreeBSD because internal interrupts are sent to all threads.
'net_write_timeout'
Command-Line Format
'--net-write-timeout=#'
System Variable
'net_write_timeout'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'60'
Minimum Value
'1'
Maximum Value
'31536000'
Unit
seconds
The number of seconds to wait for a block to be written to a connection before aborting the write. See also 'net_read_timeout'.
'new'
Command-Line Format
'--new[={OFF|ON}]'
System Variable
'new'
Scope
Global, Session
Dynamic
Yes
Disabled by
'skip-new'
Type
Boolean
Default Value
'OFF'
This variable was used in MySQL 4.0 to turn on some 4.1 behaviors, and is retained for backward compatibility. Its value is always 'OFF'.
In NDB Cluster, setting this variable to 'ON' makes it possible to employ partitioning types other than 'KEY' or 'LINEAR KEY' with note 'NDB': mysql-cluster. tables. This experimental feature is not supported in production, and is now deprecated and thus subject to removal in a future release. For additional information, see note partitioning-limitations-ndb::.
'ngram_token_size'
Command-Line Format
'--ngram-token-size=#'
System Variable
'ngram_token_size'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'2'
Minimum Value
'1'
Maximum Value
'10'
Defines the n-gram token size for the n-gram full-text parser. The 'ngram_token_size' option is read-only and can only be modified at startup. The default value is 2 (bigram). The maximum value isFor more information about how to configure this variable, see *note fulltext-search-ngram::.
'offline_mode'
Command-Line Format
'--offline-mode[={OFF|ON}]'
System Variable
'offline_mode'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Whether the server is in 'offline mode', which has these characteristics:
* Connected client users who do not have the 'SUPER' privilege
are disconnected on the next request, with an appropriate
error. Disconnection includes terminating running statements
and releasing locks. Such clients also cannot initiate new
connections, and receive an appropriate error.
* Connected client users who have the 'SUPER' privilege are not
disconnected, and can initiate new connections to manage the
server.
* Replica threads are permitted to keep applying data to the
server.
Only users who have the 'SUPER' privilege can control offline mode. To put a server in offline mode, change the value of the 'offline_mode' system variable from 'OFF' to 'ON'. To resume normal operations, change 'offline_mode' from 'ON' to 'OFF'. In offline mode, clients that are refused access receive an 'ER_SERVER_OFFLINE_MODE' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_server_offline_mode) error.
'old'
Command-Line Format
'--old[={OFF|ON}]'
System Variable
'old'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'OFF'
'old' is a compatibility variable. It is disabled by default, but can be enabled at startup to revert the server to behaviors present in older versions.
When 'old' is enabled, it changes the default scope of index hints to that used prior to MySQL 5.1.17. That is, index hints with no 'FOR' clause apply only to how indexes are used for row retrieval and not to resolution of 'ORDER BY' or 'GROUP BY' clauses. (See *note index-hints::.) Take care about enabling this in a replication setup. With statement-based binary logging, having different modes for the source and replicas might lead to replication errors.
'old_alter_table'
Command-Line Format
'--old-alter-table[={OFF|ON}]'
System Variable
'old_alter_table'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
When this variable is enabled, the server does not use the optimized method of processing an note 'ALTER TABLE': alter-table. operation. It reverts to using a temporary table, copying over the data, and then renaming the temporary table to the original, as used by MySQL 5.0 and earlier. For more information on the operation of note 'ALTER TABLE': alter-table, see *note alter-table::.
'old_passwords'
Command-Line Format
'--old-passwords=value'
Deprecated
Yes
System Variable
'old_passwords'
Scope
Global, Session
Dynamic
Yes
Type
Enumeration
Default Value
'0'
Valid Values
'0' '2'
Note:
This system variable is deprecated in MySQL 5.7; expect it to be removed in a future release of MySQL.
This variable controls the password hashing method used by the 'PASSWORD()' function. It also influences password hashing performed by note 'CREATE USER': create-user. and note 'GRANT': grant. statements that specify a password using an 'IDENTIFIED BY' clause.
The following table shows, for each password hashing method, the permitted value of 'old_passwords' and which authentication plugins use the hashing method.
Password Hashing Method old_passwords Associated Authentication Value Plugin
MySQL 4.1 native hashing
0 'mysql_native_password'
SHA-256 hashing
2 'sha256_password'
If you set 'old_passwords=2', follow the instructions for using the 'sha256_password' plugin at *note sha256-pluggable-authentication::.
The server sets the global 'old_passwords' value during startup to be consistent with the password hashing method required by the authentication plugin indicated by the 'default_authentication_plugin' system variable.
When a client successfully connects to the server, the server sets the session 'old_passwords' value appropriately for the account authentication method. For example, if the account uses the 'sha256_password' authentication plugin, the server sets 'old_passwords=2'.
For additional information about authentication plugins and hashing formats, see note pluggable-authentication::, and note password-hashing::.
'open_files_limit'
Command-Line Format
'--open-files-limit=#'
System Variable
'open_files_limit'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'5000, with possible adjustment'
Minimum Value
'0'
Maximum Value
'platform dependent'
The number of file descriptors available to *note 'mysqld': mysqld. from the operating system:
* At startup, *note 'mysqld': mysqld. reserves descriptors with
'setrlimit()', using the value requested at by setting this
variable directly or by using the '--open-files-limit' option
to *note 'mysqld_safe': mysqld-safe. If *note 'mysqld':
mysqld. produces the error 'Too many open files', try
increasing the 'open_files_limit' value. Internally, the
maximum value for this variable is the maximum unsigned
integer value, but the actual maximum is platform dependent.
* At runtime, the value of 'open_files_limit' indicates the
number of file descriptors actually permitted to *note
'mysqld': mysqld. by the operating system, which might differ
from the value requested at startup. If the number of file
descriptors requested during startup cannot be allocated,
*note 'mysqld': mysqld. writes a warning to the error log.
The effective 'open_files_limit' value is based on the value specified at system startup (if any) and the values of 'max_connections' and 'table_open_cache', using these formulas:
* '10 + max_connections + (table_open_cache * 2)'
* 'max_connections * 5'
* The operating system limit if that limit is positive but not
Infinity.
* If the operating system limit is Infinity: 'open_files_limit'
value if specified at startup, 5000 if not.
The server attempts to obtain the number of file descriptors using the maximum of those values. If that many descriptors cannot be obtained, the server attempts to obtain as many as the system permits.
The effective value is 0 on systems where MySQL cannot change the number of open files.
On Unix, the value cannot be set greater than the value displayed by the 'ulimit -n' command. On Linux systems using 'systemd', the value cannot be set greater than 'LimitNOFile' (this is 'DefaultLimitNOFILE', if 'LimitNOFile' is not set); otherwise, on Linux, the value of 'open_files_limit' cannot exceed 'ulimit -n'.
'optimizer_prune_level'
Command-Line Format
'--optimizer-prune-level=#'
System Variable
'optimizer_prune_level'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'1'
Minimum Value
'0'
Maximum Value
'1'
Controls the heuristics applied during query optimization to prune less-promising partial plans from the optimizer search space. A value of 0 disables heuristics so that the optimizer performs an exhaustive search. A value of 1 causes the optimizer to prune plans based on the number of rows retrieved by intermediate plans.
'optimizer_search_depth'
Command-Line Format
'--optimizer-search-depth=#'
System Variable
'optimizer_search_depth'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'62'
Minimum Value
'0'
Maximum Value
'62'
The maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to generate an execution plan for a query. Values smaller than the number of relations in a query return an execution plan quicker, but the resulting plan may be far from being optimal. If set to 0, the system automatically picks a reasonable value.
'optimizer_switch'
Command-Line Format
'--optimizer-switch=value'
System Variable
'optimizer_switch'
Scope
Global, Session
Dynamic
Yes
Type
Set
Valid Values (≥ 5.7.33)
'batched_key_access={on|off}' 'block_nested_loop={on|off}' 'condition_fanout_filter={on|off}' 'derived_merge={on|off}' 'duplicateweedout={on|off}' 'engine_condition_pushdown={on|off}' 'firstmatch={on|off}' 'index_condition_pushdown={on|off}' 'index_merge={on|off}' 'index_merge_intersection={on|off}' 'index_merge_sort_union={on|off}' 'index_merge_union={on|off}' 'loosescan={on|off}' 'materialization={on|off}' 'mrr={on|off}' 'mrr_cost_based={on|off}' 'prefer_ordering_index={on|off}' 'semijoin={on|off}' 'subquery_materialization_cost_based={on|off}' 'use_index_extensions={on|off}'
Valid Values (<= 5.7.32)
'batched_key_access={on|off}' 'block_nested_loop={on|off}' 'condition_fanout_filter={on|off}' 'derived_merge={on|off}' 'duplicateweedout={on|off}' 'engine_condition_pushdown={on|off}' 'firstmatch={on|off}' 'index_condition_pushdown={on|off}' 'index_merge={on|off}' 'index_merge_intersection={on|off}' 'index_merge_sort_union={on|off}' 'index_merge_union={on|off}' 'loosescan={on|off}' 'materialization={on|off}' 'mrr={on|off}' 'mrr_cost_based={on|off}' 'semijoin={on|off}' 'subquery_materialization_cost_based={on|off}' 'use_index_extensions={on|off}'
The 'optimizer_switch' system variable enables control over optimizer behavior. The value of this variable is a set of flags, each of which has a value of 'on' or 'off' to indicate whether the corresponding optimizer behavior is enabled or disabled. This variable has global and session values and can be changed at runtime. The global default can be set at server startup.
To see the current set of optimizer flags, select the variable value:
mysql> SELECT @@optimizer_switch\G
*************************** 1. row ***************************
@@optimizer_switch: index_merge=on,index_merge_union=on,
index_merge_sort_union=on,
index_merge_intersection=on,
engine_condition_pushdown=on,
index_condition_pushdown=on,
mrr=on,mrr_cost_based=on,
block_nested_loop=on,batched_key_access=off,
materialization=on,semijoin=on,loosescan=on,
firstmatch=on,duplicateweedout=on,
subquery_materialization_cost_based=on,
use_index_extensions=on,
condition_fanout_filter=on,derived_merge=on,
prefer_ordering_index=on
For more information about the syntax of this variable and the optimizer behaviors that it controls, see *note switchable-optimizations::.
'optimizer_trace'
Command-Line Format
'--optimizer-trace=value'
System Variable
'optimizer_trace'
Scope
Global, Session
Dynamic
Yes
Type
String
This variable controls optimizer tracing. For details, see *note optimizer-tracing::.
'optimizer_trace_features'
Command-Line Format
'--optimizer-trace-features=value'
System Variable
'optimizer_trace_features'
Scope
Global, Session
Dynamic
Yes
Type
String
This variable enables or disables selected optimizer tracing features. For details, see *note optimizer-tracing::.
'optimizer_trace_limit'
Command-Line Format
'--optimizer-trace-limit=#'
System Variable
'optimizer_trace_limit'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'1'
Minimum Value
'0'
Maximum Value
'2147483647'
The maximum number of optimizer traces to display. For details, see *note optimizer-tracing::.
'optimizer_trace_max_mem_size'
Command-Line Format
'--optimizer-trace-max-mem-size=#'
System Variable
'optimizer_trace_max_mem_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'16384'
Minimum Value
'0'
Maximum Value
'4294967295'
Unit
bytes
The maximum cumulative size of stored optimizer traces. For details, see *note optimizer-tracing::.
'optimizer_trace_offset'
Command-Line Format
'--optimizer-trace-offset=#'
System Variable
'optimizer_trace_offset'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'-1'
Minimum Value
'-2147483647'
Maximum Value
'2147483647'
The offset of optimizer traces to display. For details, see *note optimizer-tracing::.
'performance_schema_XXX'
Performance Schema system variables are listed in *note performance-schema-system-variables::. These variables may be used to configure Performance Schema operation.
'parser_max_mem_size'
Command-Line Format
'--parser-max-mem-size=#'
Introduced
5.7.12
System Variable
'parser_max_mem_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value (64-bit platforms)
'18446744073709551615'
Default Value (32-bit platforms)
'4294967295'
Minimum Value
'10000000'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
Unit
bytes
The maximum amount of memory available to the parser. The default value places no limit on memory available. The value can be reduced to protect against out-of-memory situations caused by parsing long or complex SQL statements.
'pid_file'
Command-Line Format
'--pid-file=file_name'
System Variable
'pid_file'
Scope
Global
Dynamic
No
Type
File name
The path name of the file in which the server writes its process ID. The server creates the file in the data directory unless an absolute path name is given to specify a different directory. If you specify this variable, you must specify a value. If you do not specify this variable, MySQL uses a default value of 'HOST_NAME.pid', where HOST_NAME is the name of the host machine.
The process ID file is used by other programs such as note 'mysqld_safe': mysqld-safe. to determine the server's process ID. On Windows, this variable also affects the default error log file name. See note error-log::.
'plugin_dir'
Command-Line Format
'--plugin-dir=dir_name'
System Variable
'plugin_dir'
Scope
Global
Dynamic
No
Type
Directory name
Default Value
'BASEDIR/lib/plugin'
The path name of the plugin directory.
If the plugin directory is writable by the server, it may be possible for a user to write executable code to a file in the directory using note 'SELECT ... INTO DUMPFILE': select. This can be prevented by making 'plugin_dir' read only to the server or by setting 'secure_file_priv' to a directory where note 'SELECT': select. writes can be made safely.
'port'
Command-Line Format
'--port=port_num'
System Variable
'port'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'3306'
Minimum Value
'0'
Maximum Value
'65535'
The number of the port on which the server listens for TCP/IP connections. This variable can be set with the '--port' option.
'preload_buffer_size'
Command-Line Format
'--preload-buffer-size=#'
System Variable
'preload_buffer_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'32768'
Minimum Value
'1024'
Maximum Value
'1073741824'
Unit
bytes
The size of the buffer that is allocated when preloading indexes.
'profiling'
If set to 0 or 'OFF' (the default), statement profiling is disabled. If set to 1 or 'ON', statement profiling is enabled and the note 'SHOW PROFILE': show-profile. and note 'SHOW PROFILES': show-profiles. statements provide access to profiling information. See *note show-profiles::.
This variable is deprecated; expect it to be removed in a future release of MySQL.
'profiling_history_size'
The number of statements for which to maintain profiling information if 'profiling' is enabled. The default value is 15. The maximum value is 100. Setting the value to 0 effectively disables profiling. See *note show-profiles::.
This variable is deprecated; expect it to be removed in a future release of MySQL.
'protocol_version'
System Variable
'protocol_version'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'10'
Minimum Value
'0'
Maximum Value
'4294967295'
The version of the client/server protocol used by the MySQL server.
'proxy_user'
System Variable
'proxy_user'
Scope
Session
Dynamic
No
Type
String
If the current client is a proxy for another user, this variable is the proxy user account name. Otherwise, this variable is 'NULL'. See *note proxy-users::.
'pseudo_slave_mode'
System Variable
'pseudo_slave_mode'
Scope
Session
Dynamic
Yes
Type
Boolean
This system variable is for internal server use. 'pseudo_slave_mode' assists with the correct handling of transactions that originated on older or newer servers than the server currently processing them. *note 'mysqlbinlog': mysqlbinlog. sets the value of 'pseudo_slave_mode' to true before executing any SQL statements.
'pseudo_slave_mode' has the following effects on the handling of prepared XA transactions, which can be attached to or detached from the handling session (by default, the session that issues *note 'XA START': xa.):
* If true, and the handling session has executed an internal-use
*note 'BINLOG': binlog. statement, XA transactions are
automatically detached from the session as soon as the first
part of the transaction up to *note 'XA PREPARE': xa.
finishes, so they can be committed or rolled back by any
session that has the 'XA_RECOVER_ADMIN'
(https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_xa-recover-admin)
privilege.
* If false, XA transactions remain attached to the handling
session as long as that session is alive, during which time no
other session can commit the transaction. The prepared
transaction is only detached if the session disconnects or the
server restarts.
'pseudo_thread_id'
System Variable
'pseudo_thread_id'
Scope
Session
Dynamic
Yes
Type
Integer
Default Value
'2147483647'
Minimum Value
'0'
Maximum Value
'2147483647'
This variable is for internal server use.
Warning:
Changing the session value of the 'pseudo_thread_id' system variable changes the value returned by the 'CONNECTION_ID()' function.
'query_alloc_block_size'
Command-Line Format
'--query-alloc-block-size=#'
System Variable
'query_alloc_block_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'8192'
Minimum Value
'1024'
Maximum Value
'4294966272'
Unit
bytes
Block Size
'1024'
The allocation size in bytes of memory blocks that are allocated for objects created during statement parsing and execution. If you have problems with memory fragmentation, it might help to increase this parameter.
The block size for the byte number is 1024. A value that is not an exact multiple of the block size is rounded down to the next lower multiple of the block size by MySQL Server before storing the value for the system variable. The parser allows values up to the maximum unsigned integer value for the platform (4294967295 or 2^32−1 for a 32-bit system, 18446744073709551615 or 2^64−1 for a 64-bit system) but the actual maximum is a block size lower.
'query_cache_limit'
Command-Line Format
'--query-cache-limit=#'
Deprecated
5.7.20
System Variable
'query_cache_limit'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'1048576'
Minimum Value
'0'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
Unit
bytes
Do not cache results that are larger than this number of bytes. The default value is 1MB.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'query_cache_limit'.
'query_cache_min_res_unit'
Command-Line Format
'--query-cache-min-res-unit=#'
Deprecated
5.7.20
System Variable
'query_cache_min_res_unit'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'4096'
Minimum Value
'512'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
Unit
bytes
The minimum size (in bytes) for blocks allocated by the query cache. The default value is 4096 (4KB). Tuning information for this variable is given in *note query-cache-configuration::.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'query_cache_min_res_unit'.
'query_cache_size'
Command-Line Format
'--query-cache-size=#'
Deprecated
5.7.20
System Variable
'query_cache_size'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'1048576'
Minimum Value
'0'
Maximum Value (64-bit platforms)
'18446744073709551615'
Maximum Value (32-bit platforms)
'4294967295'
Unit
bytes
The amount of memory allocated for caching query results. By default, the query cache is disabled. This is achieved using a default value of 1M, with a default for 'query_cache_type' of 0. (To reduce overhead significantly if you set the size to 0, you should also start the server with 'query_cache_type=0'.
The permissible values are multiples of 1024; other values are rounded down to the nearest multiple. For nonzero values of 'query_cache_size', that many bytes of memory are allocated even if 'query_cache_type=0'. See *note query-cache-configuration::, for more information.
The query cache needs a minimum size of about 40KB to allocate its structures. (The exact size depends on system architecture.) If you set the value of 'query_cache_size' too small, a warning occurs, as described in *note query-cache-configuration::.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'query_cache_size'.
'query_cache_type'
Command-Line Format
'--query-cache-type=#'
Deprecated
5.7.20
System Variable
'query_cache_type'
Scope
Global, Session
Dynamic
Yes
Type
Enumeration
Default Value
'0'
Valid Values
'0' '1' '2'
Set the query cache type. Setting the 'GLOBAL' value sets the type for all clients that connect thereafter. Individual clients can set the 'SESSION' value to affect their own use of the query cache. Possible values are shown in the following table.
Option Description
'0' or Do not cache results in or retrieve results from 'OFF' the query cache. Note that this does not deallocate the query cache buffer. To do that, you should set 'query_cache_size' to 0.
'1' or Cache all cacheable query results except for 'ON' those that begin with 'SELECT SQL_NO_CACHE'.
'2' or Cache results only for cacheable queries that 'DEMAND' begin with 'SELECT SQL_CACHE'.
This variable defaults to 'OFF'.
If the server is started with 'query_cache_type' set to 0, it does not acquire the query cache mutex at all, which means that the query cache cannot be enabled at runtime and there is reduced overhead in query execution.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'query_cache_type'.
'query_cache_wlock_invalidate'
Command-Line Format
'--query-cache-wlock-invalidate[={OFF|ON}]'
Deprecated
5.7.20
System Variable
'query_cache_wlock_invalidate'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Normally, when one client acquires a 'WRITE' lock on a table, other clients are not blocked from issuing statements that read from the table if the query results are present in the query cache. Setting this variable to 1 causes acquisition of a 'WRITE' lock for a table to invalidate any queries in the query cache that refer to the table. This forces other clients that attempt to access the table to wait while the lock is in effect.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'query_cache_wlock_invalidate'.
'query_prealloc_size'
Command-Line Format
'--query-prealloc-size=#'
System Variable
'query_prealloc_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'8192'
Minimum Value
'8192'
Maximum Value (64-bit platforms)
'18446744073709550592'
Maximum Value (32-bit platforms)
'4294966272'
Unit
bytes
Block Size
'1024'
The size in bytes of the persistent buffer used for statement parsing and execution. This buffer is not freed between statements. If you are running complex queries, a larger 'query_prealloc_size' value might be helpful in improving performance, because it can reduce the need for the server to perform memory allocation during query execution operations. You should be aware that doing this does not necessarily eliminate allocation completely; the server may still allocate memory in some situations, such as for operations relating to transactions, or to stored programs.
'rand_seed1'
System Variable
'rand_seed1'
Scope
Session
Dynamic
Yes
Type
Integer
Default Value
'N/A'
Minimum Value
'0'
Maximum Value
'4294967295'
The 'rand_seed1' and 'rand_seed2' variables exist as session variables only, and can be set but not read. The variables--but not their values--are shown in the output of *note 'SHOW VARIABLES': show-variables.
The purpose of these variables is to support replication of the 'RAND()' function. For statements that invoke 'RAND()', the source passes two values to the replica, where they are used to seed the random number generator. The replica uses these values to set the session variables 'rand_seed1' and 'rand_seed2' so that 'RAND()' on the replica generates the same value as on the source.
'rand_seed2'
See the description for 'rand_seed1'.
'range_alloc_block_size'
Command-Line Format
'--range-alloc-block-size=#'
System Variable
'range_alloc_block_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'4096'
Minimum Value
'4096'
Maximum Value (64-bit platforms)
'18446744073709550592'
Maximum Value
'4294966272'
Unit
bytes
Block Size
'1024'
The size in bytes of blocks that are allocated when doing range optimization.
The block size for the byte number is 1024. A value that is not an exact multiple of the block size is rounded down to the next lower multiple of the block size by MySQL Server before storing the value for the system variable. The parser allows values up to the maximum unsigned integer value for the platform (4294967295 or 2^32−1 for a 32-bit system, 18446744073709551615 or 2^64−1 for a 64-bit system) but the actual maximum is a block size lower.
'range_optimizer_max_mem_size'
Command-Line Format
'--range-optimizer-max-mem-size=#'
System Variable
'range_optimizer_max_mem_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value (≥ 5.7.12)
'8388608'
Default Value (<= 5.7.11)
'1536000'
Minimum Value
'0'
Maximum Value
'18446744073709551615'
Unit
bytes
The limit on memory consumption for the range optimizer. A value of 0 means 'no limit.' If an execution plan considered by the optimizer uses the range access method but the optimizer estimates that the amount of memory needed for this method would exceed the limit, it abandons the plan and considers other plans. For more information, see *note range-optimization-memory-use::.
'rbr_exec_mode'
System Variable
'rbr_exec_mode'
Scope
Session
Dynamic
Yes
Type
Enumeration
Default Value
'STRICT'
Valid Values
'STRICT' 'IDEMPOTENT'
For internal use by note 'mysqlbinlog': mysqlbinlog. This variable switches the server between 'IDEMPOTENT' mode and 'STRICT' mode. 'IDEMPOTENT' mode causes suppression of duplicate-key and no-key-found errors in note 'BINLOG': binlog. statements generated by note 'mysqlbinlog': mysqlbinlog. This mode is useful when replaying a row-based binary log on a server that causes conflicts with existing data. note 'mysqlbinlog': mysqlbinlog. sets this mode when you specify the '--idempotent' option by writing the following to the output:
SET SESSION RBR_EXEC_MODE=IDEMPOTENT;
'read_buffer_size'
Command-Line Format
'--read-buffer-size=#'
System Variable
'read_buffer_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'131072'
Minimum Value
'8192'
Maximum Value
'2147479552'
Unit
bytes
Block Size
'4096'
Each thread that does a sequential scan for a 'MyISAM' table allocates a buffer of this size (in bytes) for each table it scans. If you do many sequential scans, you might want to increase this value, which defaults to 131072. The value of this variable should be a multiple of 4KB. If it is set to a value that is not a multiple of 4KB, its value is rounded down to the nearest multiple of 4KB.
This option is also used in the following context for all storage engines:
* For caching the indexes in a temporary file (not a temporary
table), when sorting rows for 'ORDER BY'.
* For bulk insert into partitions.
* For caching results of nested queries.
'read_buffer_size' is also used in one other storage engine-specific way: to determine the memory block size for *note 'MEMORY': memory-storage-engine. tables.
For more information about memory use during different operations, see *note memory-use::.
'read_only'
Command-Line Format
'--read-only[={OFF|ON}]'
System Variable
'read_only'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
If the 'read_only' system variable is enabled, the server permits no client updates except from users who have the 'SUPER' privilege. This variable is disabled by default.
The server also supports a 'super_read_only' system variable (disabled by default), which has these effects:
* If 'super_read_only' is enabled, the server prohibits client
updates, even from users who have the 'SUPER' privilege.
* Setting 'super_read_only' to 'ON' implicitly forces
'read_only' to 'ON'.
* Setting 'read_only' to 'OFF' implicitly forces
'super_read_only' to 'OFF'.
Even with 'read_only' enabled, the server permits these operations:
* Updates performed by replication threads, if the server is a
replica. In replication setups, it can be useful to enable
'read_only' on replica servers to ensure that replicas accept
updates only from the source server and not from clients.
* Use of *note 'ANALYZE TABLE': analyze-table. or *note
'OPTIMIZE TABLE': optimize-table. statements. The purpose of
read-only mode is to prevent changes to table structure or
contents. Analysis and optimization do not qualify as such
changes. This means, for example, that consistency checks on
read-only replicas can be performed with *note 'mysqlcheck':
mysqlcheck. '--all-databases' '--analyze'.
* Use of 'FLUSH STATUS' statements, which are always written to
the binary log.
* Operations on 'TEMPORARY' tables.
* Inserts into the log tables ('mysql.general_log' and
'mysql.slow_log'); see *note log-destinations::.
* As of MySQL 5.7.16, updates to Performance Schema tables, such
as *note 'UPDATE': update. or *note 'TRUNCATE TABLE':
truncate-table. operations.
Changes to 'read_only' on a replication source server are not replicated to replica servers. The value can be set on a replica independent of the setting on the source.
The following conditions apply to attempts to enable 'read_only' (including implicit attempts resulting from enabling 'super_read_only'):
* The attempt fails and an error occurs if you have any explicit
locks (acquired with *note 'LOCK TABLES': lock-tables.) or
have a pending transaction.
* The attempt blocks while other clients have any ongoing
statement, active 'LOCK TABLES WRITE', or ongoing commit,
until the locks are released and the statements and
transactions end. While the attempt to enable 'read_only' is
pending, requests by other clients for table locks or to begin
transactions also block until 'read_only' has been set.
* The attempt blocks if there are active transactions that hold
metadata locks, until those transactions end.
* 'read_only' can be enabled while you hold a global read lock
(acquired with 'FLUSH TABLES WITH READ LOCK') because that
does not involve table locks.
'read_rnd_buffer_size'
Command-Line Format
'--read-rnd-buffer-size=#'
System Variable
'read_rnd_buffer_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'262144'
Minimum Value
'1'
Maximum Value
'2147483647'
Unit
bytes
This variable is used for reads from 'MyISAM' tables, and, for any storage engine, for Multi-Range Read optimization.
When reading rows from a 'MyISAM' table in sorted order following a key-sorting operation, the rows are read through this buffer to avoid disk seeks. See *note order-by-optimization::. Setting the variable to a large value can improve 'ORDER BY' performance by a lot. However, this is a buffer allocated for each client, so you should not set the global variable to a large value. Instead, change the session variable only from within those clients that need to run large queries.
For more information about memory use during different operations, see note memory-use::. For information about Multi-Range Read optimization, see note mrr-optimization::.
'require_secure_transport'
Command-Line Format
'--require-secure-transport[={OFF|ON}]'
System Variable
'require_secure_transport'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Whether client connections to the server are required to use some form of secure transport. When this variable is enabled, the server permits only TCP/IP connections encrypted using TLS/SSL, or connections that use a socket file (on Unix) or shared memory (on Windows). The server rejects nonsecure connection attempts, which fail with an 'ER_SECURE_TRANSPORT_REQUIRED' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_secure_transport_required) error.
This capability supplements per-account SSL requirements, which take precedence. For example, if an account is defined with 'REQUIRE SSL', enabling 'require_secure_transport' does not make it possible to use the account to connect using a Unix socket file.
It is possible for a server to have no secure transports available. For example, a server on Windows supports no secure transports if started without specifying any SSL certificate or key files and with the 'shared_memory' system variable disabled. Under these conditions, attempts to enable 'require_secure_transport' at startup cause the server to write a message to the error log and exit. Attempts to enable the variable at runtime fail with an 'ER_NO_SECURE_TRANSPORTS_CONFIGURED' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_no_secure_transports_configured) error.
See also *note mandatory-encrypted-connections::.
'secure_auth'
Command-Line Format
'--secure-auth[={OFF|ON}]'
Deprecated
Yes
System Variable
'secure_auth'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'ON'
Valid Values
'ON'
If this variable is enabled, the server blocks connections by clients that attempt to use accounts that have passwords stored in the old (pre-4.1) format. Enable this variable to prevent all use of passwords employing the old format (and hence insecure communication over the network).
This variable is deprecated; expect it to be removed in a future release of MySQL. It is always enabled and attempting to disable it produces an error.
Server startup fails with an error if this variable is enabled and the privilege tables are in pre-4.1 format. See *note account-upgrades::.
Note:
Passwords that use the pre-4.1 hashing method are less secure than passwords that use the native password hashing method and should be avoided. Pre-4.1 passwords are deprecated and support for them is removed in MySQL 5.7.5. For account upgrade instructions, see *note account-upgrades::.
'secure_file_priv'
Command-Line Format
'--secure-file-priv=dir_name'
System Variable
'secure_file_priv'
Scope
Global
Dynamic
No
Type
String
Default Value
'platform specific'
Valid Values
'empty string' 'dirname' 'NULL'
This variable is used to limit the effect of data import and export operations, such as those performed by the note 'LOAD DATA': load-data. and note 'SELECT ... INTO OUTFILE': select-into. statements and the 'LOAD_FILE()' function. These operations are permitted only to users who have the 'FILE' privilege.
'secure_file_priv' may be set as follows:
* If empty, the variable has no effect. This is not a secure
setting.
* If set to the name of a directory, the server limits import
and export operations to work only with files in that
directory. The directory must exist; the server does not
create it.
* If set to 'NULL', the server disables import and export
operations.
The default value is platform specific and depends on the value of the 'INSTALL_LAYOUT' 'CMake' option, as shown in the following table. To specify the default 'secure_file_priv' value explicitly if you are building from source, use the 'INSTALL_SECURE_FILE_PRIVDIR' 'CMake' option.
'INSTALL_LAYOUT' Value Default 'secure_file_priv' Value
'STANDALONE', 'WIN' 'NULL' (>= MySQL 5.7.16), empty (< MySQL 5.7.16)
'DEB', 'RPM', 'SLES', '/var/lib/mysql-files' 'SVR4'
Otherwise 'mysql-files' under the 'CMAKE_INSTALL_PREFIX' value
To set the default 'secure_file_priv' value for the 'libmysqld' embedded server, use the 'INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR' 'CMake' option. The default value for this option is 'NULL'.
The server checks the value of 'secure_file_priv' at startup and writes a warning to the error log if the value is insecure. A non-'NULL' value is considered insecure if it is empty, or the value is the data directory or a subdirectory of it, or a directory that is accessible by all users. If 'secure_file_priv' is set to a nonexistent path, the server writes an error message to the error log and exits.
'session_track_gtids'
Command-Line Format
'--session-track-gtids=value'
System Variable
'session_track_gtids'
Scope
Global, Session
Dynamic
Yes
Type
Enumeration
Default Value
'OFF'
Valid Values
'OFF' 'OWN_GTID' 'ALL_GTIDS'
Controls whether the server returns GTIDs to the client, enabling the client to use them to track the server state. Depending on the variable value, at the end of executing each transaction, the server's GTIDs are captured and returned to the client as part of the acknowledgement. The possible values for 'session_track_gtids' are as follows:
* 'OFF': The server does not return GTIDs to the client. This
is the default.
* 'OWN_GTID': The server returns the GTIDs for all transactions
that were successfully committed by this client in its current
session since the last acknowledgement. Typically, this is
the single GTID for the last transaction committed, but if a
single client request resulted in multiple transactions, the
server returns a GTID set containing all the relevant GTIDs.
* 'ALL_GTIDS': The server returns the global value of its
'gtid_executed' system variable, which it reads at a point
after the transaction is successfully committed. As well as
the GTID for the transaction just committed, this GTID set
includes all transactions committed on the server by any
client, and can include transactions committed after the point
when the transaction currently being acknowledged was
committed.
'session_track_gtids' cannot be set within transactional context.
For more information about session state tracking, see *note session-state-tracking::.
'session_track_schema'
Command-Line Format
'--session-track-schema[={OFF|ON}]'
System Variable
'session_track_schema'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'ON'
Controls whether the server tracks when the default schema (database) is set within the current session and notifies the client to make the schema name available.
If the schema name tracker is enabled, name notification occurs each time the default schema is set, even if the new schema name is the same as the old.
For more information about session state tracking, see *note session-state-tracking::.
'session_track_state_change'
Command-Line Format
'--session-track-state-change[={OFF|ON}]'
System Variable
'session_track_state_change'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Controls whether the server tracks changes to the state of the current session and notifies the client when state changes occur. Changes can be reported for these attributes of client session state:
* The default schema (database).
* Session-specific values for system variables.
* User-defined variables.
* Temporary tables.
* Prepared statements.
If the session state tracker is enabled, notification occurs for each change that involves tracked session attributes, even if the new attribute values are the same as the old. For example, setting a user-defined variable to its current value results in a notification.
The 'session_track_state_change' variable controls only notification of when changes occur, not what the changes are. For example, state-change notifications occur when the default schema is set or tracked session system variables are assigned, but the notification does not include the schema name or variable values. To receive notification of the schema name or session system variable values, use the 'session_track_schema' or 'session_track_system_variables' system variable, respectively.
Note:
Assigning a value to 'session_track_state_change' itself is not considered a state change and is not reported as such. However, if its name listed in the value of 'session_track_system_variables', any assignments to it do result in notification of the new value.
For more information about session state tracking, see *note session-state-tracking::.
'session_track_system_variables'
Command-Line Format
'--session-track-system-variables=#'
System Variable
'session_track_system_variables'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'time_zone, autocommit, character_set_client, character_set_results, character_set_connection'
Controls whether the server tracks assignments to session system variables and notifies the client of the name and value of each assigned variable. The variable value is a comma-separated list of variables for which to track assignments. By default, notification is enabled for 'time_zone', 'autocommit', 'character_set_client', 'character_set_results', and 'character_set_connection'. (The latter three variables are those affected by *note 'SET NAMES': set-names.)
The special value '*' causes the server to track assignments to all session variables. If given, this value must be specified by itself without specific system variable names.
To disable notification of session variable assignments, set 'session_track_system_variables' to the empty string.
If session system variable tracking is enabled, notification occurs for all assignments to tracked session variables, even if the new values are the same as the old.
For more information about session state tracking, see *note session-state-tracking::.
'session_track_transaction_info'
Command-Line Format
'--session-track-transaction-info=value'
System Variable
'session_track_transaction_info'
Scope
Global, Session
Dynamic
Yes
Type
Enumeration
Default Value
'OFF'
Valid Values
'OFF' 'STATE' 'CHARACTERISTICS'
Controls whether the server tracks the state and characteristics of transactions within the current session and notifies the client to make this information available. These 'session_track_transaction_info' values are permitted:
* 'OFF': Disable transaction state tracking. This is the
default.
* 'STATE': Enable transaction state tracking without
characteristics tracking. State tracking enables the client
to determine whether a transaction is in progress and whether
it could be moved to a different session without being rolled
back.
* 'CHARACTERISTICS': Enable transaction state tracking,
including characteristics tracking. Characteristics tracking
enables the client to determine how to restart a transaction
in another session so that it has the same characteristics as
in the original session. The following characteristics are
relevant for this purpose:
ISOLATION LEVEL
READ ONLY
READ WRITE
WITH CONSISTENT SNAPSHOT
For a client to safely relocate a transaction to another session, it must track not only transaction state but also transaction characteristics. In addition, the client must track the 'transaction_isolation' and 'transaction_read_only' system variables to correctly determine the session defaults. (To track these variables, list them in the value of the 'session_track_system_variables' system variable.)
For more information about session state tracking, see *note session-state-tracking::.
'sha256_password_auto_generate_rsa_keys'
Command-Line Format
'--sha256-password-auto-generate-rsa-keys[={OFF|ON}]'
System Variable
'sha256_password_auto_generate_rsa_keys'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'ON'
This variable is available if the server was compiled using OpenSSL (see *note ssl-libraries::). It controls whether the server autogenerates RSA private/public key-pair files in the data directory, if they do not already exist.
At startup, the server automatically generates RSA private/public key-pair files in the data directory if the 'sha256_password_auto_generate_rsa_keys' system variable is enabled, no RSA options are specified, and the RSA files are missing from the data directory. These files enable secure password exchange using RSA over unencrypted connections for accounts authenticated by the 'sha256_password' plugin; see *note sha256-pluggable-authentication::.
For more information about RSA file autogeneration, including file names and characteristics, see *note creating-ssl-rsa-files-using-mysql::
The 'auto_generate_certs' system variable is related but controls autogeneration of SSL certificate and key files needed for secure connections using SSL.
'sha256_password_private_key_path'
Command-Line Format
'--sha256-password-private-key-path=file_name'
System Variable
'sha256_password_private_key_path'
Scope
Global
Dynamic
No
Type
File name
Default Value
'private_key.pem'
This variable is available if MySQL was compiled using OpenSSL (see *note ssl-libraries::). Its value is the path name of the RSA private key file for the 'sha256_password' authentication plugin. If the file is named as a relative path, it is interpreted relative to the server data directory. The file must be in PEM format.
Important:
Because this file stores a private key, its access mode should be restricted so that only the MySQL server can read it.
For information about 'sha256_password', see *note sha256-pluggable-authentication::.
'sha256_password_proxy_users'
Command-Line Format
'--sha256-password-proxy-users[={OFF|ON}]'
System Variable
'sha256_password_proxy_users'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
This variable controls whether the 'sha256_password' built-in authentication plugin supports proxy users. It has no effect unless the 'check_proxy_users' system variable is enabled. For information about user proxying, see *note proxy-users::.
'sha256_password_public_key_path'
Command-Line Format
'--sha256-password-public-key-path=file_name'
System Variable
'sha256_password_public_key_path'
Scope
Global
Dynamic
No
Type
File name
Default Value
'public_key.pem'
This variable is available if MySQL was compiled using OpenSSL (see *note ssl-libraries::). Its value is the path name of the RSA public key file for the 'sha256_password' authentication plugin. If the file is named as a relative path, it is interpreted relative to the server data directory. The file must be in PEM format. Because this file stores a public key, copies can be freely distributed to client users. (Clients that explicitly specify a public key when connecting to the server using RSA password encryption must use the same public key as that used by the server.)
For information about 'sha256_password', including information about how clients specify the RSA public key, see *note sha256-pluggable-authentication::.
'shared_memory'
Command-Line Format
'--shared-memory[={OFF|ON}]'
System Variable
'shared_memory'
Scope
Global
Dynamic
No
Platform Specific
Windows
Type
Boolean
Default Value
'OFF'
(Windows only.) Whether the server permits shared-memory connections.
'shared_memory_base_name'
Command-Line Format
'--shared-memory-base-name=name'
System Variable
'shared_memory_base_name'
Scope
Global
Dynamic
No
Platform Specific
Windows
Type
String
Default Value
'MYSQL'
(Windows only.) The name of shared memory to use for shared-memory connections. This is useful when running multiple MySQL instances on a single physical machine. The default name is 'MYSQL'. The name is case-sensitive.
This variable applies only if the server is started with the 'shared_memory' system variable enabled to support shared-memory connections.
'show_compatibility_56'
Command-Line Format
'--show-compatibility-56[={OFF|ON}]'
Deprecated
Yes
System Variable
'show_compatibility_56'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
The 'INFORMATION_SCHEMA' has tables that contain system and status variable information (see note information-schema-variables-table::, and note information-schema-status-table::). As of MySQL 5.7.6, the Performance Schema also contains system and status variable tables (see note performance-schema-system-variable-tables::, and note performance-schema-status-variable-tables::). The Performance Schema tables are intended to replace the 'INFORMATION_SCHEMA' tables, which are deprecated as of MySQL 5.7.6 and are removed in MySQL 8.0.
For advice on migrating away from the 'INFORMATION_SCHEMA' tables to the Performance Schema tables, see note performance-schema-variable-table-migration::. To assist in the migration, you can use the 'show_compatibility_56' system variable, which affects whether MySQL 5.6 compatibility is enabled with respect to how system and status variable information is provided by the 'INFORMATION_SCHEMA' and Performance Schema tables, and also by the note 'SHOW VARIABLES': show-variables. and *note 'SHOW STATUS': show-status. statements.
Note:
'show_compatibility_56' is deprecated because its only purpose is to permit control over deprecated system and status variable information sources which you can expect to be removed in a future release of MySQL. When those sources are removed, 'show_compatibility_56' no longer has any purpose, and you can expect it be removed as well.
The following discussion describes the effects of 'show_compatibility_56':
* *note sysvar_show_compatibility_56_overview::
* *note sysvar_show_compatibility_56_show::
* *note sysvar_show_compatibility_56_information_schema::
* *note sysvar_show_compatibility_56_performance_schema::
* *note sysvar_show_compatibility_56_slave_status::
* *note sysvar_show_compatibility_56_flush::
For better understanding, it is strongly recommended that you also read these sections:
* *note performance-schema-system-variable-tables::
* *note performance-schema-status-variable-tables::
* *note performance-schema-status-variable-summary-tables::
Overview of show_compatibility_56 Effects
The 'show_compatibility_56' system variable affects these aspects of server operation regarding system and status variables:
* Information available from the *note 'SHOW VARIABLES':
show-variables. and *note 'SHOW STATUS': show-status.
statements
* Information available from the 'INFORMATION_SCHEMA' tables
that provide system and status variable information
* Information available from the Performance Schema tables that
provide system and status variable information
* The effect of the 'FLUSH STATUS' statement on status variables
This list summarizes the effects of 'show_compatibility_56', with additional details given later:
* When 'show_compatibility_56' is 'ON', compatibility with MySQL
5.6 is enabled. Older variable information sources ('SHOW'
statements, 'INFORMATION_SCHEMA' tables) produce the same
output as in MySQL 5.6.
* When 'show_compatibility_56' is 'OFF', compatibility with
MySQL 5.6 is disabled. Selecting from the
'INFORMATION_SCHEMA' tables produces an error because the
Performance Schema tables are intended to replace them. The
'INFORMATION_SCHEMA' tables are deprecated as of MySQL 5.7.6
and are removed in MySQL 8.0.
To obtain system and status variable information When
'show_compatibility_56=OFF', use the Performance Schema tables
or the 'SHOW' statements.
*Note*:
When 'show_compatibility_56=OFF', the *note 'SHOW VARIABLES':
show-variables. and *note 'SHOW STATUS': show-status.
statements display rows from the Performance Schema *note
'global_variables': performance-schema-system-variable-tables,
*note 'session_variables':
performance-schema-system-variable-tables, *note
'global_status': performance-schema-status-variable-tables,
and *note 'session_status':
performance-schema-status-variable-tables. tables.
As of MySQL 5.7.9, those tables are world readable and
accessible without the 'SELECT' privilege, which means that
'SELECT' is not needed to use the 'SHOW' statements, either.
Before MySQL 5.7.9, the 'SELECT' privilege is required to
access those Performance Schema tables, either directly, or
indirectly through the 'SHOW' statements.
* Several 'Slave_XXX' status variables are available from *note
'SHOW STATUS': show-status. when 'show_compatibility_56' is
'ON'. When 'show_compatibility_56' is 'OFF', some of those
variables are not exposed to *note 'SHOW STATUS': show-status.
The information they provide is available in
replication-related Performance Schema tables, as described
later.
* 'show_compatibility_56' has no effect on system variable
access using '@@' notation: '@@GLOBAL.VAR_NAME',
'@@SESSION.VAR_NAME', '@@VAR_NAME'.
* 'show_compatibility_56' has no effect for the embedded server,
which produces 5.6-compatible output in all cases.
The following descriptions detail the effect of setting 'show_compatibility_56' to 'ON' or 'OFF' in the contexts in which this variable applies.
Effect of show_compatibility_56 on SHOW Statements
*note 'SHOW GLOBAL VARIABLES': show-variables. statement:
* 'ON': MySQL 5.6 output.
* 'OFF': Output displays rows from the Performance Schema *note
'global_variables': performance-schema-system-variable-tables.
table.
*note 'SHOW [SESSION | LOCAL] VARIABLES': show-variables. statement:
* 'ON': MySQL 5.6 output.
* 'OFF': Output displays rows from the Performance Schema *note
'session_variables':
performance-schema-system-variable-tables. table. (In MySQL
5.7.6 and 5.7.7, 'OFF' output does not fully reflect all
system variable values in effect for the current session; it
includes no rows for global variables that have no session
counterpart. This is corrected in MySQL 5.7.8.)
*note 'SHOW GLOBAL STATUS': show-status. statement:
* 'ON': MySQL 5.6 output.
* 'OFF': Output displays rows from the Performance Schema *note
'global_status': performance-schema-status-variable-tables.
table, plus the 'Com_XXX' statement execution counters.
'OFF' output includes no rows for session variables that have
no global counterpart, unlike 'ON' output.
*note 'SHOW [SESSION | LOCAL] STATUS': show-status. statement:
* 'ON': MySQL 5.6 output.
* 'OFF': Output displays rows from the Performance Schema *note
'session_status': performance-schema-status-variable-tables.
table, plus the 'Com_XXX' statement execution counters. (In
MySQL 5.7.6 and 5.7.7, 'OFF' output does not fully reflect all
status variable values in effect for the current session; it
includes no rows for global variables that have no session
counterpart. This is corrected in MySQL 5.7.8.)
In MySQL 5.7.6 and 5.7.7, for each of the 'SHOW' statements just described, use of a 'WHERE' clause produces a warning when 'show_compatibility_56=ON' and an error when 'show_compatibility_56=OFF'. (This applies to 'WHERE' clauses that are not optimized away. For example, 'WHERE 1' is trivially true, is optimized away, and thus produces no warning or error.) This behavior does not occur as of MySQL 5.7.8; 'WHERE' is supported as before 5.7.6.
Effect of show_compatibility_56 on INFORMATION_SCHEMA Tables
'INFORMATION_SCHEMA' tables (note 'GLOBAL_VARIABLES': information-schema-variables-table, note 'SESSION_VARIABLES': information-schema-variables-table, note 'GLOBAL_STATUS': information-schema-status-table, and note 'SESSION_STATUS': information-schema-status-table.):
* 'ON': MySQL 5.6 output, with a deprecation warning.
* 'OFF': Selecting from these tables produces an error. (Before
5.7.9, selecting from these tables produces no output, with a
deprecation warning.)
Effect of show_compatibility_56 on Performance Schema Tables
Performance Schema system variable tables:
* 'OFF':
* *note 'global_variables':
performance-schema-system-variable-tables.: Global system
variables only.
* *note 'session_variables':
performance-schema-system-variable-tables.: System
variables in effect for the current session: A row for
each session variable, and a row for each global variable
that has no session counterpart.
* *note 'variables_by_thread':
performance-schema-system-variable-tables.: Session
system variables only, for each active session.
* 'ON': Same output as for 'OFF'. (Before 5.7.8, these tables
produce no output.)
Performance Schema status variable tables:
* 'OFF':
* *note 'global_status':
performance-schema-status-variable-tables.: Global status
variables only.
* *note 'session_status':
performance-schema-status-variable-tables.: Status
variables in effect the current session: A row for each
session variable, and a row for each global variable that
has no session counterpart.
* *note 'status_by_account':
performance-schema-status-variable-summary-tables.
Session status variables only, aggregated per account.
* *note 'status_by_host':
performance-schema-status-variable-summary-tables.:
Session status variables only, aggregated per host name.
* *note 'status_by_thread':
performance-schema-status-variable-tables.: Session
status variables only, for each active session.
* *note 'status_by_user':
performance-schema-status-variable-summary-tables.:
Session status variables only, aggregated per user name.
The Performance Schema does not collect statistics for
'Com_XXX' status variables in the status variable tables. To
obtain global and per-session statement execution counts, use
the *note 'events_statements_summary_global_by_event_name':
performance-schema-statement-summary-tables. and *note
'events_statements_summary_by_thread_by_event_name':
performance-schema-statement-summary-tables. tables,
respectively.
* 'ON': Same output as for 'OFF'. (Before 5.7.9, these tables
produce no output.)
Effect of show_compatibility_56 on Slave Status Variables
Replica status variables:
* 'ON': Several 'Slave_XXX' status variables are available from
*note 'SHOW STATUS': show-status.
* 'OFF': Some of those replica variables are not exposed to
*note 'SHOW STATUS': show-status. or the Performance Schema
status variable tables. The information they provide is
available in replication-related Performance Schema tables.
The following table shows which 'Slave_XXX' status variables
become unavailable in *note 'SHOW STATUS': show-status. and
their locations in Performance Schema replication tables.
Status Variable Performance Schema Location
'Slave_heartbeat_period' *note 'replication_connection_configuration': performance-schema-replication-connection-configuration-table.
table, 'HEARTBEAT_INTERVAL' column
'Slave_last_heartbeat' *note 'replication_connection_status': performance-schema-replication-connection-status-table.
table, 'LAST_HEARTBEAT_TIMESTAMP' column
'Slave_received_heartbeats' *note 'replication_connection_status': performance-schema-replication-connection-status-table.
table, 'COUNT_RECEIVED_HEARTBEATS' column
'Slave_retried_transactions' *note 'replication_applier_status': performance-schema-replication-applier-status-table.
table, 'COUNT_TRANSACTIONS_RETRIES'
column
'Slave_running' *note 'replication_connection_status': performance-schema-replication-connection-status-table.
and
*note 'replication_applier_status': performance-schema-replication-applier-status-table.
tables, 'SERVICE_STATE' column
Effect of show_compatibility_56 on FLUSH STATUS
'FLUSH STATUS' statement:
* 'ON': This statement produces MySQL 5.6 behavior. It adds the
current thread's session status variable values to the global
values and resets the session values to zero. Some global
variables may be reset to zero as well. It also resets the
counters for key caches (default and named) to zero and sets
'Max_used_connections' to the current number of open
connections.
* 'OFF': This statement adds the session status from all active
sessions to the global status variables, resets the status of
all active sessions, and resets account, host, and user status
values aggregated from disconnected sessions.
'show_create_table_verbosity'
Command-Line Format
'--show-create-table-verbosity[={OFF|ON}]'
Introduced
5.7.22
System Variable
'show_create_table_verbosity'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
note 'SHOW CREATE TABLE': show-create-table. normally does not show the 'ROW_FORMAT' table option if the row format is the default format. Enabling this variable causes note 'SHOW CREATE TABLE': show-create-table. to display 'ROW_FORMAT' regardless of whether it is the default format.
'show_old_temporals'
Command-Line Format
'--show-old-temporals[={OFF|ON}]'
Deprecated
Yes
System Variable
'show_old_temporals'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Whether note 'SHOW CREATE TABLE': show-create-table. output includes comments to flag temporal columns found to be in pre-5.6.4 format (note 'TIME': time, note 'DATETIME': datetime, and note 'TIMESTAMP': datetime. columns without support for fractional seconds precision). This variable is disabled by default. If enabled, *note 'SHOW CREATE TABLE': show-create-table. output looks like this:
CREATE TABLE `mytbl` (
`ts` timestamp /* 5.5 binary format */ NOT NULL DEFAULT CURRENT_TIMESTAMP,
`dt` datetime /* 5.5 binary format */ DEFAULT NULL,
`t` time /* 5.5 binary format */ DEFAULT NULL
) DEFAULT CHARSET=latin1
Output for the 'COLUMN_TYPE' column of the Information Schema *note 'COLUMNS': information-schema-columns-table. table is affected similarly.
This variable is deprecated; expect it to be removed in a future release of MySQL.
'skip_external_locking'
Command-Line Format
'--skip-external-locking[={OFF|ON}]'
System Variable
'skip_external_locking'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'ON'
This is 'OFF' if note 'mysqld': mysqld. uses external locking (system locking), 'ON' if external locking is disabled. This affects only note 'MyISAM': myisam-storage-engine. table access.
This variable is set by the '--external-locking' or '--skip-external-locking' option. External locking is disabled by default.
External locking affects only note 'MyISAM': myisam-storage-engine. table access. For more information, including conditions under which it can and cannot be used, see note external-locking::.
'skip_name_resolve'
Command-Line Format
'--skip-name-resolve[={OFF|ON}]'
System Variable
'skip_name_resolve'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'OFF'
Whether to resolve host names when checking client connections. If this variable is 'OFF', note 'mysqld': mysqld. resolves host names when checking client connections. If it is 'ON', note 'mysqld': mysqld. uses only IP numbers; in this case, all 'Host' column values in the grant tables must be IP addresses. See *note host-cache::.
Depending on the network configuration of your system and the 'Host' values for your accounts, clients may need to connect using an explicit '--host' option, such as '--host=127.0.0.1' or '--host=::1'.
An attempt to connect to the host '127.0.0.1' normally resolves to the 'localhost' account. However, this fails if the server is run with 'skip_name_resolve' enabled. If you plan to do that, make sure an account exists that can accept a connection. For example, to be able to connect as 'root' using '--host=127.0.0.1' or '--host=::1', create these accounts:
CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'ROOT-PASSWORD';
CREATE USER 'root'@'::1' IDENTIFIED BY 'ROOT-PASSWORD';
'skip_networking'
Command-Line Format
'--skip-networking[={OFF|ON}]'
System Variable
'skip_networking'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'OFF'
This variable controls whether the server permits TCP/IP connections. By default, it is disabled (permit TCP connections). If enabled, the server permits only local (non-TCP/IP) connections and all interaction with note 'mysqld': mysqld. must be made using named pipes or shared memory (on Windows) or Unix socket files (on Unix). This option is highly recommended for systems where only local clients are permitted. See note host-cache::.
'skip_show_database'
Command-Line Format
'--skip-show-database'
System Variable
'skip_show_database'
Scope
Global
Dynamic
No
Type
Boolean
Default Value
'OFF'
This prevents people from using the note 'SHOW DATABASES': show-databases. statement if they do not have the 'SHOW DATABASES' privilege. This can improve security if you have concerns about users being able to see databases belonging to other users. Its effect depends on the 'SHOW DATABASES' privilege: If the variable value is 'ON', the note 'SHOW DATABASES': show-databases. statement is permitted only to users who have the 'SHOW DATABASES' privilege, and the statement displays all database names. If the value is 'OFF', *note 'SHOW DATABASES': show-databases. is permitted to all users, but displays the names of only those databases for which the user has the 'SHOW DATABASES' or other privilege.
Caution:
Because a global privilege is considered a privilege for all databases, any global privilege enables a user to see all database names with note 'SHOW DATABASES': show-databases. or by examining the 'INFORMATION_SCHEMA' note 'SCHEMATA': information-schema-schemata-table. table.
'slow_launch_time'
Command-Line Format
'--slow-launch-time=#'
System Variable
'slow_launch_time'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'2'
Minimum Value
'0'
Maximum Value
'31536000'
Unit
seconds
If creating a thread takes longer than this many seconds, the server increments the 'Slow_launch_threads' status variable.
'slow_query_log'
Command-Line Format
'--slow-query-log[={OFF|ON}]'
System Variable
'slow_query_log'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Whether the slow query log is enabled. The value can be 0 (or 'OFF') to disable the log or 1 (or 'ON') to enable the log. The destination for log output is controlled by the 'log_output' system variable; if that value is 'NONE', no log entries are written even if the log is enabled.
'Slow' is determined by the value of the 'long_query_time' variable. See *note slow-query-log::.
'slow_query_log_file'
Command-Line Format
'--slow-query-log-file=file_name'
System Variable
'slow_query_log_file'
Scope
Global
Dynamic
Yes
Type
File name
Default Value
'host_name-slow.log'
The name of the slow query log file. The default value is 'HOST_NAME-slow.log', but the initial value can be changed with the '--slow_query_log_file' option.
'socket'
Command-Line Format
'--socket={file_name|pipe_name}'
System Variable
'socket'
Scope
Global
Dynamic
No
Type
String
Default Value (Windows)
'MySQL'
Default Value (Other)
'/tmp/mysql.sock'
On Unix platforms, this variable is the name of the socket file that is used for local client connections. The default is '/tmp/mysql.sock'. (For some distribution formats, the directory might be different, such as '/var/lib/mysql' for RPMs.)
On Windows, this variable is the name of the named pipe that is used for local client connections. The default value is 'MySQL' (not case-sensitive).
'sort_buffer_size'
Command-Line Format
'--sort-buffer-size=#'
System Variable
'sort_buffer_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'262144'
Minimum Value
'32768'
Maximum Value (Windows)
'4294967295'
Maximum Value (Other, 64-bit platforms)
'18446744073709551615'
Maximum Value (Other, 32-bit platforms)
'4294967295'
Unit
bytes
Each session that must perform a sort allocates a buffer of this size. 'sort_buffer_size' is not specific to any storage engine and applies in a general manner for optimization. At minimum the 'sort_buffer_size' value must be large enough to accommodate fifteen tuples in the sort buffer. Also, increasing the value of 'max_sort_length' may require increasing the value of 'sort_buffer_size'. For more information, see *note order-by-optimization::
If you see many 'Sort_merge_passes' per second in *note 'SHOW GLOBAL STATUS': show-status. output, you can consider increasing the 'sort_buffer_size' value to speed up 'ORDER BY' or 'GROUP BY' operations that cannot be improved with query optimization or improved indexing.
The optimizer tries to work out how much space is needed but can allocate more, up to the limit. Setting it larger than required globally slows down most queries that sort. It is best to increase it as a session setting, and only for the sessions that need a larger size. On Linux, there are thresholds of 256KB and 2MB where larger values may significantly slow down memory allocation, so you should consider staying below one of those values. Experiment to find the best value for your workload. See *note temporary-files::.
The maximum permissible setting for 'sort_buffer_size' is 4GB−1. Larger values are permitted for 64-bit platforms (except 64-bit Windows, for which large values are truncated to 4GB−1 with a warning).
'sql_auto_is_null'
System Variable
'sql_auto_is_null'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
If this variable is enabled, then after a statement that successfully inserts an automatically generated 'AUTO_INCREMENT' value, you can find that value by issuing a statement of the following form:
SELECT * FROM TBL_NAME WHERE AUTO_COL IS NULL
If the statement returns a row, the value returned is the same as if you invoked the 'LAST_INSERT_ID()' function. For details, including the return value after a multiple-row insert, see note information-functions::. If no 'AUTO_INCREMENT' value was successfully inserted, the note 'SELECT': select. statement returns no row.
The behavior of retrieving an 'AUTO_INCREMENT' value by using an 'IS NULL' comparison is used by some ODBC programs, such as Access. See Obtaining Auto-Increment Values (https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-usagenotes-functionality-last-insert-id.html). This behavior can be disabled by setting 'sql_auto_is_null' to 'OFF'.
The default value of 'sql_auto_is_null' is 'OFF'.
'sql_big_selects'
System Variable
'sql_big_selects'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'ON'
If set to 'OFF', MySQL aborts note 'SELECT': select. statements that are likely to take a very long time to execute (that is, statements for which the optimizer estimates that the number of examined rows exceeds the value of 'max_join_size'). This is useful when an inadvisable 'WHERE' statement has been issued. The default value for a new connection is 'ON', which permits all note 'SELECT': select. statements.
If you set the 'max_join_size' system variable to a value other than 'DEFAULT', 'sql_big_selects' is set to 'OFF'.
'sql_buffer_result'
System Variable
'sql_buffer_result'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
If enabled, 'sql_buffer_result' forces results from *note 'SELECT': select. statements to be put into temporary tables. This helps MySQL free the table locks early and can be beneficial in cases where it takes a long time to send results to the client. The default value is 'OFF'.
'sql_log_off'
System Variable
'sql_log_off'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
Valid Values
'OFF' (enable logging) 'ON' (disable logging)
This variable controls whether logging to the general query log is disabled for the current session (assuming that the general query log itself is enabled). The default value is 'OFF' (that is, enable logging). To disable or enable general query logging for the current session, set the session 'sql_log_off' variable to 'ON' or 'OFF'.
Setting the session value of this system variable is a restricted operation. The session user must have privileges sufficient to set restricted session variables. See *note system-variable-privileges::.
'sql_mode'
Command-Line Format
'--sql-mode=name'
System Variable
'sql_mode'
Scope
Global, Session
Dynamic
Yes
Type
Set
Default Value
'ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION'
Valid Values
'ALLOW_INVALID_DATES' 'ANSI_QUOTES' 'ERROR_FOR_DIVISION_BY_ZERO' 'HIGH_NOT_PRECEDENCE' 'IGNORE_SPACE' 'NO_AUTO_CREATE_USER' 'NO_AUTO_VALUE_ON_ZERO' 'NO_BACKSLASH_ESCAPES' 'NO_DIR_IN_CREATE' 'NO_ENGINE_SUBSTITUTION' 'NO_FIELD_OPTIONS' 'NO_KEY_OPTIONS' 'NO_TABLE_OPTIONS' 'NO_UNSIGNED_SUBTRACTION' 'NO_ZERO_DATE' 'NO_ZERO_IN_DATE' 'ONLY_FULL_GROUP_BY' 'PAD_CHAR_TO_FULL_LENGTH' 'PIPES_AS_CONCAT' 'REAL_AS_FLOAT' 'STRICT_ALL_TABLES' 'STRICT_TRANS_TABLES'
The current server SQL mode, which can be set dynamically. For details, see *note sql-mode::.
Note:
MySQL installation programs may configure the SQL mode during the installation process. If the SQL mode differs from the default or from what you expect, check for a setting in an option file that the server reads at startup.
'sql_notes'
System Variable
'sql_notes'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'ON'
If enabled (the default), diagnostics of 'Note' level increment 'warning_count' and the server records them. If disabled, 'Note' diagnostics do not increment 'warning_count' and the server does not record them. *note 'mysqldump': mysqldump. includes output to disable this variable so that reloading the dump file does not produce warnings for events that do not affect the integrity of the reload operation.
'sql_quote_show_create'
System Variable
'sql_quote_show_create'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'ON'
If enabled (the default), the server quotes identifiers for note 'SHOW CREATE TABLE': show-create-table. and note 'SHOW CREATE DATABASE': show-create-database. statements. If disabled, quoting is disabled. This option is enabled by default so that replication works for identifiers that require quoting. See note show-create-table::, and note show-create-database::.
'sql_safe_updates'
System Variable
'sql_safe_updates'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
If this variable is enabled, note 'UPDATE': update. and note 'DELETE': delete. statements that do not use a key in the 'WHERE' clause or a 'LIMIT' clause produce an error. This makes it possible to catch note 'UPDATE': update. and note 'DELETE': delete. statements where keys are not used properly and that would probably change or delete a large number of rows. The default value is 'OFF'.
For the note 'mysql': mysql. client, 'sql_safe_updates' can be enabled by using the '--safe-updates' option. For more information, see note safe-updates::.
'sql_select_limit'
System Variable
'sql_select_limit'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'18446744073709551615'
Minimum Value
'0'
Maximum Value
'18446744073709551615'
The maximum number of rows to return from note 'SELECT': select. statements. For more information, see note safe-updates::.
The default value for a new connection is the maximum number of rows that the server permits per table. Typical default values are (2^32)−1 or (2^64)−1. If you have changed the limit, the default value can be restored by assigning a value of 'DEFAULT'.
If a *note 'SELECT': select. has a 'LIMIT' clause, the 'LIMIT' takes precedence over the value of 'sql_select_limit'.
'sql_warnings'
System Variable
'sql_warnings'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
This variable controls whether single-row *note 'INSERT': insert. statements produce an information string if warnings occur. The default is 'OFF'. Set the value to 'ON' to produce an information string.
'ssl_ca'
Command-Line Format
'--ssl-ca=file_name'
System Variable
'ssl_ca'
Scope
Global
Dynamic
No
Type
File name
Default Value
'NULL'
The path name of the Certificate Authority (CA) certificate file in PEM format. The file contains a list of trusted SSL Certificate Authorities.
'ssl_capath'
Command-Line Format
'--ssl-capath=dir_name'
System Variable
'ssl_capath'
Scope
Global
Dynamic
No
Type
Directory name
Default Value
'NULL'
The path name of the directory that contains trusted SSL Certificate Authority (CA) certificate files in PEM format. You must run OpenSSL 'rehash' on the directory specified by this option prior to using it. On Linux systems, you can invoke 'rehash' like this:
$> openssl rehash PATH/TO/DIRECTORY
On Windows platforms, you can use the 'c_rehash' script in a command prompt, like this:
\> c_rehash PATH/TO/DIRECTORY
See openssl-rehash (https://docs.openssl.org/3.1/man1/openssl-rehash/) for complete syntax and other information.
Support for this capability depends on the SSL library used to compile MySQL; see *note ssl-libraries::.
'ssl_cert'
Command-Line Format
'--ssl-cert=file_name'
System Variable
'ssl_cert'
Scope
Global
Dynamic
No
Type
File name
Default Value
'NULL'
The path name of the server SSL public key certificate file in PEM format.
If the server is started with 'ssl_cert' set to a certificate that uses any restricted cipher or cipher category, the server starts with support for encrypted connections disabled. For information about cipher restrictions, see *note encrypted-connection-cipher-configuration::.
'ssl_cipher'
Command-Line Format
'--ssl-cipher=name'
System Variable
'ssl_cipher'
Scope
Global
Dynamic
No
Type
String
Default Value
'NULL'
The list of permissible ciphers for connection encryption. If no cipher in the list is supported, encrypted connections do not work.
For greatest portability, the cipher list should be a list of one or more cipher names, separated by colons. This format is understood both by OpenSSL and yaSSL. The following example shows two cipher names separated by a colon:
[mysqld]
ssl_cipher="DHE-RSA-AES128-GCM-SHA256:AES128-SHA"
OpenSSL supports a more flexible syntax for specifying ciphers, as described in the OpenSSL documentation at https://www.openssl.org/docs/manmaster/man1/openssl-ciphers.html. yaSSL does not, so attempts to use that extended syntax fail for a MySQL distribution compiled using yaSSL.
For information about which encryption ciphers MySQL supports, see *note encrypted-connection-protocols-ciphers::.
'ssl_crl'
Command-Line Format
'--ssl-crl=file_name'
System Variable
'ssl_crl'
Scope
Global
Dynamic
No
Type
File name
Default Value
'NULL'
The path name of the file containing certificate revocation lists in PEM format. Support for revocation-list capability depends on the SSL library used to compile MySQL. See *note ssl-libraries::.
'ssl_crlpath'
Command-Line Format
'--ssl-crlpath=dir_name'
System Variable
'ssl_crlpath'
Scope
Global
Dynamic
No
Type
Directory name
Default Value
'NULL'
The path of the directory that contains certificate revocation-list files in PEM format. Support for revocation-list capability depends on the SSL library used to compile MySQL. See *note ssl-libraries::.
'ssl_key'
Command-Line Format
'--ssl-key=file_name'
System Variable
'ssl_key'
Scope
Global
Dynamic
No
Type
File name
Default Value
'NULL'
The path name of the server SSL private key file in PEM format. For better security, use a certificate with an RSA key size of at least 2048 bits.
If the key file is protected by a passphrase, the server prompts the user for the passphrase. The password must be given interactively; it cannot be stored in a file. If the passphrase is incorrect, the program continues as if it could not read the key.
'stored_program_cache'
Command-Line Format
'--stored-program-cache=#'
System Variable
'stored_program_cache'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'256'
Minimum Value
'16'
Maximum Value
'524288'
Sets a soft upper limit for the number of cached stored routines per connection. The value of this variable is specified in terms of the number of stored routines held in each of the two caches maintained by the MySQL Server for, respectively, stored procedures and stored functions.
Whenever a stored routine is executed this cache size is checked before the first or top-level statement in the routine is parsed; if the number of routines of the same type (stored procedures or stored functions according to which is being executed) exceeds the limit specified by this variable, the corresponding cache is flushed and memory previously allocated for cached objects is freed. This allows the cache to be flushed safely, even when there are dependencies between stored routines.
'super_read_only'
Command-Line Format
'--super-read-only[={OFF|ON}]'
System Variable
'super_read_only'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
If the 'read_only' system variable is enabled, the server permits no client updates except from users who have the 'SUPER' privilege. If the 'super_read_only' system variable is also enabled, the server prohibits client updates even from users who have 'SUPER'. See the description of the 'read_only' system variable for a description of read-only mode and information about how 'read_only' and 'super_read_only' interact.
Client updates prevented when 'super_read_only' is enabled include operations that do not necessarily appear to be updates, such as 'CREATE FUNCTION' (to install a loadable function) and 'INSTALL PLUGIN'. These operations are prohibited because they involve changes to tables in the 'mysql' system database.
Changes to 'super_read_only' on a replication source server are not replicated to replica servers. The value can be set on a replica independent of the setting on the source.
'sync_frm'
Command-Line Format
'--sync-frm[={OFF|ON}]'
Deprecated
Yes
System Variable
'sync_frm'
Scope
Global
Dynamic
Yes
Type
Boolean
Default Value
'ON'
If this variable is set to 1, when any nontemporary table is created its '.frm' file is synchronized to disk (using 'fdatasync()'). This is slower but safer in case of a crash. The default is 1.
This variable is deprecated in MySQL 5.7 and is removed in MySQL 8.0 (when '.frm' files become obsolete).
'system_time_zone'
System Variable
'system_time_zone'
Scope
Global
Dynamic
No
Type
String
The server system time zone. When the server begins executing, it inherits a time zone setting from the machine defaults, possibly modified by the environment of the account used for running the server or the startup script. The value is used to set 'system_time_zone'. To explicitly specify the system time zone, set the 'TZ' environment variable or use the '--timezone' option of the *note 'mysqld_safe': mysqld-safe. script.
The 'system_time_zone' variable differs from the 'time_zone' variable. Although they might have the same value, the latter variable is used to initialize the time zone for each client that connects. See *note time-zone-support::.
'table_definition_cache'
Command-Line Format
'--table-definition-cache=#'
System Variable
'table_definition_cache'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'-1' (signifies autosizing; do not assign this literal value)
Minimum Value
'400'
Maximum Value
'524288'
The number of table definitions (from '.frm' files) that can be stored in the table definition cache. If you use a large number of tables, you can create a large table definition cache to speed up opening of tables. The table definition cache takes less space and does not use file descriptors, unlike the normal table cache. The minimum value is 400. The default value is based on the following formula, capped to a limit of 2000:
400 + (table_open_cache / 2)
For *note 'InnoDB': innodb-storage-engine, the 'table_definition_cache' setting acts as a soft limit for the number of table instances in the 'InnoDB' data dictionary cache and the number file-per-table tablespaces that can be open at one time.
If the number of table instances in the 'InnoDB' data dictionary cache exceeds the 'table_definition_cache' limit, an LRU mechanism begins marking table instances for eviction and eventually removes them from the InnoDB data dictionary cache. The number of open tables with cached metadata can be higher than the 'table_definition_cache' limit due to table instances with foreign key relationships, which are not placed on the LRU list.
The number of file-per-table tablespaces that can be open at one time is limited by both the 'table_definition_cache' and 'innodb_open_files' settings. If both variables are set, the highest setting is used. If neither variable is set, the 'table_definition_cache' setting, which has a higher default value, is used. If the number of open tablespaces exceeds the limit defined by 'table_definition_cache' or 'innodb_open_files', an LRU mechanism searches the LRU list for tablespace files that are fully flushed and not currently being extended. This process is performed each time a new tablespace is opened. Only inactive tablespaces are closed.
'table_open_cache'
Command-Line Format
'--table-open-cache=#'
System Variable
'table_open_cache'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'2000'
Minimum Value
'1'
Maximum Value
'524288'
The number of open tables for all threads. Increasing this value increases the number of file descriptors that *note 'mysqld': mysqld. requires. The effective value of this variable is the greater of the effective value of 'open_files_limit'' - 10 -' the effective value of 'max_connections'' / 2', and 400; that is
MAX(
(open_files_limit - 10 - max_connections) / 2,
400
)
You can check whether you need to increase the table cache by checking the 'Opened_tables' status variable. If the value of 'Opened_tables' is large and you do not use 'FLUSH TABLES' often (which just forces all tables to be closed and reopened), then you should increase the value of the 'table_open_cache' variable. For more information about the table cache, see *note table-cache::.
'table_open_cache_instances'
Command-Line Format
'--table-open-cache-instances=#'
System Variable
'table_open_cache_instances'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'16'
Minimum Value
'1'
Maximum Value
'64'
The number of open tables cache instances. To improve scalability by reducing contention among sessions, the open tables cache can be partitioned into several smaller cache instances of size 'table_open_cache' / 'table_open_cache_instances' . A session needs to lock only one instance to access it for DML statements. This segments cache access among instances, permitting higher performance for operations that use the cache when there are many sessions accessing tables. (DDL statements still require a lock on the entire cache, but such statements are much less frequent than DML statements.)
A value of 8 or 16 is recommended on systems that routinely use 16 or more cores. However, if you have many large triggers on your tables that cause a high memory load, the default setting for 'table_open_cache_instances' might lead to excessive memory usage. In that situation, it can be helpful to set 'table_open_cache_instances' to 1 in order to restrict memory usage.
'thread_cache_size'
Command-Line Format
'--thread-cache-size=#'
System Variable
'thread_cache_size'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'-1' (signifies autosizing; do not assign this literal value)
Minimum Value
'0'
Maximum Value
'16384'
How many threads the server should cache for reuse. When a client disconnects, the client's threads are put in the cache if there are fewer than 'thread_cache_size' threads there. Requests for threads are satisfied by reusing threads taken from the cache if possible, and only when the cache is empty is a new thread created. This variable can be increased to improve performance if you have a lot of new connections. Normally, this does not provide a notable performance improvement if you have a good thread implementation. However, if your server sees hundreds of connections per second you should normally set 'thread_cache_size' high enough so that most new connections use cached threads. By examining the difference between the 'Connections' and 'Threads_created' status variables, you can see how efficient the thread cache is. For details, see *note server-status-variables::.
The default value is based on the following formula, capped to a limit of 100:
8 + (max_connections / 100)
This variable has no effect for the embedded server ('libmysqld') and as of MySQL 5.7.2 is no longer visible within the embedded server.
'thread_handling'
Command-Line Format
'--thread-handling=name'
System Variable
'thread_handling'
Scope
Global
Dynamic
No
Type
Enumeration
Default Value
'one-thread-per-connection'
Valid Values
'no-threads' 'one-thread-per-connection' 'loaded-dynamically'
The thread-handling model used by the server for connection threads. The permissible values are 'no-threads' (the server uses a single thread to handle one connection), 'one-thread-per-connection' (the server uses one thread to handle each client connection), and 'loaded-dynamically' (set by the thread pool plugin when it initializes). 'no-threads' is useful for debugging under Linux; see *note debugging-mysql::.
This variable has no effect for the embedded server ('libmysqld') and as of MySQL 5.7.2 is no longer visible within the embedded server.
'thread_pool_algorithm'
Command-Line Format
'--thread-pool-algorithm=#'
System Variable
'thread_pool_algorithm'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'0'
Minimum Value
'0'
Maximum Value
'1'
This variable controls which algorithm the thread pool plugin uses:
* A value of 0 (the default) uses a conservative low-concurrency
algorithm which is most well tested and is known to produce
very good results.
* A value of 1 increases the concurrency and uses a more
aggressive algorithm which at times has been known to perform
5-10% better on optimal thread counts, but has degrading
performance as the number of connections increases. Its use
should be considered as experimental and not supported.
This variable is available only if the thread pool plugin is enabled. See *note thread-pool::.
'thread_pool_high_priority_connection'
Command-Line Format
'--thread-pool-high-priority-connection=#'
System Variable
'thread_pool_high_priority_connection'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'0'
Minimum Value
'0'
Maximum Value
'1'
This variable affects queuing of new statements prior to execution. If the value is 0 (false, the default), statement queuing uses both the low-priority and high-priority queues. If the value is 1 (true), queued statements always go to the high-priority queue.
This variable is available only if the thread pool plugin is enabled. See *note thread-pool::.
'thread_pool_max_unused_threads'
Command-Line Format
'--thread-pool-max-unused-threads=#'
System Variable
'thread_pool_max_unused_threads'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'0'
Minimum Value
'0'
Maximum Value
'4096'
The maximum permitted number of unused threads in the thread pool. This variable makes it possible to limit the amount of memory used by sleeping threads.
A value of 0 (the default) means no limit on the number of sleeping threads. A value of N where N is greater than 0 means 1 consumer thread and N−1 reserve threads. In this case, if a thread is ready to sleep but the number of sleeping threads is already at the maximum, the thread exits rather than going to sleep.
A sleeping thread is either sleeping as a consumer thread or a reserve thread. The thread pool permits one thread to be the consumer thread when sleeping. If a thread goes to sleep and there is no existing consumer thread, it sleeps as a consumer thread. When a thread must be woken up, a consumer thread is selected if there is one. A reserve thread is selected only when there is no consumer thread to wake up.
This variable is available only if the thread pool plugin is enabled. See *note thread-pool::.
'thread_pool_prio_kickup_timer'
Command-Line Format
'--thread-pool-prio-kickup-timer=#'
System Variable
'thread_pool_prio_kickup_timer'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'1000'
Minimum Value
'0'
Maximum Value
'4294967294'
Unit
milliseconds
This variable affects statements waiting for execution in the low-priority queue. The value is the number of milliseconds before a waiting statement is moved to the high-priority queue. The default is 1000 (1 second).
This variable is available only if the thread pool plugin is enabled. See *note thread-pool::.
'thread_pool_size'
Command-Line Format
'--thread-pool-size=#'
System Variable
'thread_pool_size'
Scope
Global
Dynamic
No
Type
Integer
Default Value
'16'
Minimum Value
'1'
Maximum Value
'64'
The number of thread groups in the thread pool. This is the most important parameter controlling thread pool performance. It affects how many statements can execute simultaneously. If a value outside the range of permissible values is specified, the thread pool plugin does not load and the server writes a message to the error log.
This variable is available only if the thread pool plugin is enabled. See *note thread-pool::.
'thread_pool_stall_limit'
Command-Line Format
'--thread-pool-stall-limit=#'
System Variable
'thread_pool_stall_limit'
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
'6'
Minimum Value
'4'
Maximum Value
'600'
Unit
milliseconds * 10
This variable affects executing statements. The value is the amount of time a statement has to finish after starting to execute before it becomes defined as stalled, at which point the thread pool permits the thread group to begin executing another statement. The value is measured in 10 millisecond units, so the default of 6 means 60ms. Short wait values permit threads to start more quickly. Short values are also better for avoiding deadlock situations. Long wait values are useful for workloads that include long-running statements, to avoid starting too many new statements while the current ones execute.
This variable is available only if the thread pool plugin is enabled. See *note thread-pool::.
'thread_stack'
Command-Line Format
'--thread-stack=#'
System Variable
'thread_stack'
Scope
Global
Dynamic
No
Type
Integer
Default Value (64-bit platforms)
'262144'
Default Value (32-bit platforms)
'196608'
Minimum Value
'131072'
Maximum Value (64-bit platforms)
'18446744073709550592'
Maximum Value (32-bit platforms)
'4294966272'
Unit
bytes
Block Size
'1024'
The stack size for each thread. The default is large enough for normal operation. If the thread stack size is too small, it limits the complexity of the SQL statements that the server can handle, the recursion depth of stored procedures, and other memory-consuming actions.
'time_format'
This variable is unused. It is deprecated and is removed in MySQL 8.0.
'time_zone'
System Variable
'time_zone'
Scope
Global, Session
Dynamic
Yes
Type
String
Default Value
'SYSTEM'
Minimum Value
'-12:59'
Maximum Value
'+13:00'
The current time zone. This variable is used to initialize the time zone for each client that connects. By default, the initial value of this is ''SYSTEM'' (which means, 'use the value of 'system_time_zone''). The value can be specified explicitly at server startup with the '--default-time-zone' option. See *note time-zone-support::.
Note:
If set to 'SYSTEM', every MySQL function call that requires a time zone calculation makes a system library call to determine the current system time zone. This call may be protected by a global mutex, resulting in contention.
'timestamp'
System Variable
'timestamp'
Scope
Session
Dynamic
Yes
Type
Numeric
Default Value
'UNIX_TIMESTAMP()'
Minimum Value
'1'
Maximum Value
'2147483647'
Set the time for this client. This is used to get the original timestamp if you use the binary log to restore rows. TIMESTAMP_VALUE should be a Unix epoch timestamp (a value like that returned by 'UNIX_TIMESTAMP()', not a value in ''YYYY-MM-DD HH:MM:SS'' format) or 'DEFAULT'.
Setting 'timestamp' to a constant value causes it to retain that value until it is changed again. Setting 'timestamp' to 'DEFAULT' causes its value to be the current date and time as of the time it is accessed. The maximum value corresponds to ''2038-01-19 03:14:07'' UTC, the same as for the *note 'TIMESTAMP': datetime. data type.
'timestamp' is a 'DOUBLE' rather than 'BIGINT' because its value includes a microseconds part.
'SET timestamp' affects the value returned by 'NOW()' but not by 'SYSDATE()'. This means that timestamp settings in the binary log have no effect on invocations of 'SYSDATE()'. The server can be started with the '--sysdate-is-now' option to cause 'SYSDATE()' to be a synonym for 'NOW()', in which case 'SET timestamp' affects both functions.
'tls_version'
Command-Line Format
'--tls-version=protocol_list'
Introduced
5.7.10
System Variable
'tls_version'
Scope
Global
Dynamic
No
Type
String
Default Value (≥ 5.7.28)
'TLSv1,TLSv1.1,TLSv1.2'
Default Value (<= 5.7.27)
'TLSv1,TLSv1.1,TLSv1.2' (OpenSSL) 'TLSv1,TLSv1.1' (yaSSL)
Which protocols the server permits for encrypted connections. The value is a comma-separated list containing one or more protocol versions. The protocols that can be named for this variable depend on the SSL library used to compile MySQL. Permitted protocols should be chosen such as not to leave 'holes' in the list. For details, see *note encrypted-connection-protocols-ciphers::.
Note:
As of MySQL 5.7.35, the TLSv1 and TLSv1.1 connection protocols are deprecated and support for them is subject to removal in a future version of MySQL. See *note encrypted-connection-deprecated-protocols::.
Setting this variable to an empty string disables encrypted connections.
'tmp_table_size'
Command-Line Format
'--tmp-table-size=#'
System Variable
'tmp_table_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'16777216'
Minimum Value
'1024'
Maximum Value
'18446744073709551615'
Unit
bytes
The maximum size of internal in-memory temporary tables. This variable does not apply to user-created 'MEMORY' tables.
The actual limit is the smaller of 'tmp_table_size' and 'max_heap_table_size'. When an in-memory temporary table exceeds the limit, MySQL automatically converts it to an on-disk temporary table. The 'internal_tmp_disk_storage_engine' option defines the storage engine used for on-disk temporary tables.
Increase the value of 'tmp_table_size' (and 'max_heap_table_size' if necessary) if you do many advanced 'GROUP BY' queries and you have lots of memory.
You can compare the number of internal on-disk temporary tables created to the total number of internal temporary tables created by comparing 'Created_tmp_disk_tables' and 'Created_tmp_tables' values.
See also *note internal-temporary-tables::.
'tmpdir'
Command-Line Format
'--tmpdir=dir_name'
System Variable
'tmpdir'
Scope
Global
Dynamic
No
Type
Directory name
The path of the directory to use for creating temporary files. It might be useful if your default '/tmp' directory resides on a partition that is too small to hold temporary tables. This variable can be set to a list of several paths that are used in round-robin fashion. Paths should be separated by colon characters (':') on Unix and semicolon characters (';') on Windows.
'tmpdir' can be a non-permanent location, such as a directory on a memory-based file system or a directory that is cleared when the server host restarts. If the MySQL server is acting as a replica, and you are using a non-permanent location for 'tmpdir', consider setting a different temporary directory for the replica using the 'slave_load_tmpdir' variable. For a replica, the temporary files used to replicate *note 'LOAD DATA': load-data. statements are stored in this directory, so with a permanent location they can survive machine restarts, although replication can now continue after a restart if the temporary files have been removed.
For more information about the storage location of temporary files, see *note temporary-files::.
'transaction_alloc_block_size'
Command-Line Format
'--transaction-alloc-block-size=#'
System Variable
'transaction_alloc_block_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'8192'
Minimum Value
'1024'
Maximum Value
'131072'
Unit
bytes
Block Size
'1024'
The amount in bytes by which to increase a per-transaction memory pool which needs memory. See the description of 'transaction_prealloc_size'.
'transaction_isolation'
Command-Line Format
'--transaction-isolation=name'
System Variable (≥ 5.7.20)
'transaction_isolation'
Scope (≥ 5.7.20)
Global, Session
Dynamic (≥ 5.7.20)
Yes
Type
Enumeration
Default Value
'REPEATABLE-READ'
Valid Values
'READ-UNCOMMITTED' 'READ-COMMITTED' 'REPEATABLE-READ' 'SERIALIZABLE'
The transaction isolation level. The default is 'REPEATABLE-READ'.
The transaction isolation level has three scopes: global, session, and next transaction. This three-scope implementation leads to some nonstandard isolation-level assignment semantics, as described later.
To set the global transaction isolation level at startup, use the '--transaction-isolation' server option.
At runtime, the isolation level can be set directly using the note 'SET': set-variable. statement to assign a value to the 'transaction_isolation' system variable, or indirectly using the note 'SET TRANSACTION': set-transaction. statement. If you set 'transaction_isolation' directly to an isolation level name that contains a space, the name should be enclosed within quotation marks, with the space replaced by a dash. For example, use this *note 'SET': set-variable. statement to set the global value:
SET GLOBAL transaction_isolation = 'READ-COMMITTED';
Setting the global 'transaction_isolation' value sets the isolation level for all subsequent sessions. Existing sessions are unaffected.
To set the session or next-level 'transaction_isolation' value, use the *note 'SET': set-variable. statement. For most session system variables, these statements are equivalent ways to set the value:
SET @@SESSION.VAR_NAME = VALUE;
SET SESSION VAR_NAME = VALUE;
SET VAR_NAME = VALUE;
SET @@VAR_NAME = VALUE;
As mentioned previously, the transaction isolation level has a next-transaction scope, in addition to the global and session scopes. To enable the next-transaction scope to be set, *note 'SET': set-variable. syntax for assigning session system variable values has nonstandard semantics for 'transaction_isolation':
* To set the session isolation level, use any of these syntaxes:
SET @@SESSION.transaction_isolation = VALUE;
SET SESSION transaction_isolation = VALUE;
SET transaction_isolation = VALUE;
For each of those syntaxes, these semantics apply:
* Sets the isolation level for all subsequent transactions
performed within the session.
* Permitted within transactions, but does not affect the
current ongoing transaction.
* If executed between transactions, overrides any preceding
statement that sets the next-transaction isolation level.
* Corresponds to *note 'SET SESSION TRANSACTION ISOLATION
LEVEL': set-transaction. (with the 'SESSION' keyword).
* To set the next-transaction isolation level, use this syntax:
SET @@transaction_isolation = VALUE;
For that syntax, these semantics apply:
* Sets the isolation level only for the next single
transaction performed within the session.
* Subsequent transactions revert to the session isolation
level.
* Not permitted within transactions.
* Corresponds to *note 'SET TRANSACTION ISOLATION LEVEL':
set-transaction. (without the 'SESSION' keyword).
For more information about note 'SET TRANSACTION': set-transaction. and its relationship to the 'transaction_isolation' system variable, see note set-transaction::.
Note:
'transaction_isolation' was added in MySQL 5.7.20 as a synonym for 'tx_isolation', which is now deprecated and is removed in MySQL 8.0. Applications should be adjusted to use 'transaction_isolation' in preference to 'tx_isolation'.
'transaction_prealloc_size'
Command-Line Format
'--transaction-prealloc-size=#'
System Variable
'transaction_prealloc_size'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'4096'
Minimum Value
'1024'
Maximum Value
'131072'
Unit
bytes
Block Size
'1024'
There is a per-transaction memory pool from which various transaction-related allocations take memory. The initial size of the pool in bytes is 'transaction_prealloc_size'. For every allocation that cannot be satisfied from the pool because it has insufficient memory available, the pool is increased by 'transaction_alloc_block_size' bytes. When the transaction ends, the pool is truncated to 'transaction_prealloc_size' bytes.
By making 'transaction_prealloc_size' sufficiently large to contain all statements within a single transaction, you can avoid many 'malloc()' calls.
'transaction_read_only'
Command-Line Format
'--transaction-read-only[={OFF|ON}]'
System Variable (≥ 5.7.20)
'transaction_read_only'
Scope (≥ 5.7.20)
Global, Session
Dynamic (≥ 5.7.20)
Yes
Type
Boolean
Default Value
'OFF'
The transaction access mode. The value can be 'OFF' (read/write; the default) or 'ON' (read only).
The transaction access mode has three scopes: global, session, and next transaction. This three-scope implementation leads to some nonstandard access-mode assignment semantics, as described later.
To set the global transaction access mode at startup, use the '--transaction-read-only' server option.
At runtime, the access mode can be set directly using the note 'SET': set-variable. statement to assign a value to the 'transaction_read_only' system variable, or indirectly using the note 'SET TRANSACTION': set-transaction. statement. For example, use this *note 'SET': set-variable. statement to set the global value:
SET GLOBAL transaction_read_only = ON;
Setting the global 'transaction_read_only' value sets the access mode for all subsequent sessions. Existing sessions are unaffected.
To set the session or next-level 'transaction_read_only' value, use the *note 'SET': set-variable. statement. For most session system variables, these statements are equivalent ways to set the value:
SET @@SESSION.VAR_NAME = VALUE;
SET SESSION VAR_NAME = VALUE;
SET VAR_NAME = VALUE;
SET @@VAR_NAME = VALUE;
As mentioned previously, the transaction access mode has a next-transaction scope, in addition to the global and session scopes. To enable the next-transaction scope to be set, *note 'SET': set-variable. syntax for assigning session system variable values has nonstandard semantics for 'transaction_read_only',
* To set the session access mode, use any of these syntaxes:
SET @@SESSION.transaction_read_only = VALUE;
SET SESSION transaction_read_only = VALUE;
SET transaction_read_only = VALUE;
For each of those syntaxes, these semantics apply:
* Sets the access mode for all subsequent transactions
performed within the session.
* Permitted within transactions, but does not affect the
current ongoing transaction.
* If executed between transactions, overrides any preceding
statement that sets the next-transaction access mode.
* Corresponds to *note 'SET SESSION TRANSACTION {READ WRITE
| READ ONLY}': set-transaction. (with the 'SESSION'
keyword).
* To set the next-transaction access mode, use this syntax:
SET @@transaction_read_only = VALUE;
For that syntax, these semantics apply:
* Sets the access mode only for the next single transaction
performed within the session.
* Subsequent transactions revert to the session access
mode.
* Not permitted within transactions.
* Corresponds to *note 'SET TRANSACTION {READ WRITE | READ
ONLY}': set-transaction. (without the 'SESSION' keyword).
For more information about note 'SET TRANSACTION': set-transaction. and its relationship to the 'transaction_read_only' system variable, see note set-transaction::.
Note:
'transaction_read_only' was added in MySQL 5.7.20 as a synonym for 'tx_read_only', which is now deprecated and is removed in MySQL 8.0. Applications should be adjusted to use 'transaction_read_only' in preference to 'tx_read_only'.
'tx_isolation'
Deprecated
5.7.20
System Variable
'tx_isolation'
Scope
Global, Session
Dynamic
Yes
Type
Enumeration
Default Value
'REPEATABLE-READ'
Valid Values
'READ-UNCOMMITTED' 'READ-COMMITTED' 'REPEATABLE-READ' 'SERIALIZABLE'
The default transaction isolation level. Defaults to 'REPEATABLE-READ'.
Note:
'transaction_isolation' was added in MySQL 5.7.20 as a synonym for 'tx_isolation', which is now deprecated and is removed in MySQL 8.0. Applications should be adjusted to use 'transaction_isolation' in preference to 'tx_isolation'. See the description of 'transaction_isolation' for details.
'tx_read_only'
Deprecated
5.7.20
System Variable
'tx_read_only'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'OFF'
The default transaction access mode. The value can be 'OFF' (read/write, the default) or 'ON' (read only).
Note:
'transaction_read_only' was added in MySQL 5.7.20 as a synonym for 'tx_read_only', which is now deprecated and is removed in MySQL 8.0. Applications should be adjusted to use 'transaction_read_only' in preference to 'tx_read_only'. See the description of 'transaction_read_only' for details.
'unique_checks'
System Variable
'unique_checks'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'ON'
If set to 1 (the default), uniqueness checks for secondary indexes in 'InnoDB' tables are performed. If set to 0, storage engines are permitted to assume that duplicate keys are not present in input data. If you know for certain that your data does not contain uniqueness violations, you can set this to 0 to speed up large table imports to 'InnoDB'.
Setting this variable to 0 does not require storage engines to ignore duplicate keys. An engine is still permitted to check for them and issue duplicate-key errors if it detects them.
'updatable_views_with_limit'
Command-Line Format
'--updatable-views-with-limit[={OFF|ON}]'
System Variable
'updatable_views_with_limit'
Scope
Global, Session
Dynamic
Yes
Type
Boolean
Default Value
'1'
This variable controls whether updates to a view can be made when the view does not contain all columns of the primary key defined in the underlying table, if the update statement contains a 'LIMIT' clause. (Such updates often are generated by GUI tools.) An update is an note 'UPDATE': update. or note 'DELETE': delete. statement. Primary key here means a 'PRIMARY KEY', or a 'UNIQUE' index in which no column can contain 'NULL'.
The variable can have two values:
* '1' or 'YES': Issue a warning only (not an error message).
This is the default value.
* '0' or 'NO': Prohibit the update.
'validate_password_XXX'
The 'validate_password' plugin implements a set of system variables having names of the form 'validate_password_XXX'. These variables affect password testing by that plugin; see *note validate-password-options-variables::.
'version'
The version number for the server. The value might also include a suffix indicating server build or configuration information. '-log' indicates that one or more of the general log, slow query log, or binary log are enabled. '-debug' indicates that the server was built with debugging support enabled.
'version_comment'
System Variable
'version_comment'
Scope
Global
Dynamic
No
Type
String
The 'CMake' configuration program has a 'COMPILATION_COMMENT' option that permits a comment to be specified when building MySQL. This variable contains the value of that comment. See *note source-configuration-options::.
'version_compile_machine'
System Variable
'version_compile_machine'
Scope
Global
Dynamic
No
Type
String
The type of the server binary.
'version_compile_os'
System Variable
'version_compile_os'
Scope
Global
Dynamic
No
Type
String
The type of operating system on which MySQL was built.
'wait_timeout'
Command-Line Format
'--wait-timeout=#'
System Variable
'wait_timeout'
Scope
Global, Session
Dynamic
Yes
Type
Integer
Default Value
'28800'
Minimum Value
'1'
Maximum Value (Windows)
'2147483'
Maximum Value (Other)
'31536000'
Unit
seconds
The number of seconds the server waits for activity on a noninteractive connection before closing it.
On thread startup, the session 'wait_timeout' value is initialized from the global 'wait_timeout' value or from the global 'interactive_timeout' value, depending on the type of client (as defined by the 'CLIENT_INTERACTIVE' connect option to 'mysql_real_connect()' (https://dev.mysql.com/doc/c-api/5.7/en/mysql-real-connect.html)). See also 'interactive_timeout'.
'warning_count'
The number of errors, warnings, and notes that resulted from the last statement that generated messages. This variable is read only. See *note show-warnings::.
File: manual.info.tmp, Node: using-system-variables, Next: server-status-variables, Prev: server-system-variables, Up: mysqld-server
Menu:
structured-system-variables:: Structured System Variables
The MySQL server maintains many system variables that configure its operation. note server-system-variables::, describes the meaning of these variables. Each system variable has a default value. System variables can be set at server startup using options on the command line or in an option file. Most of them can be changed dynamically while the server is running by means of the note 'SET': set-variable. statement, which enables you to modify operation of the server without having to stop and restart it. You can also use system variable values in expressions.
Many system variables are built in. System variables implemented by a server plugin are exposed when the plugin is installed and have names that begin with the plugin name. For example, the 'audit_log' plugin implements a system variable named 'audit_log_policy'.
There are two scopes in which system variables exist. Global variables affect the overall operation of the server. Session variables affect its operation for individual client connections. A given system variable can have both a global and a session value. Global and session system variables are related as follows:
When the server starts, it initializes each global variable to its default value. These defaults can be changed by options specified on the command line or in an option file. (See *note program-options::.)
The server also maintains a set of session variables for each client that connects. The client's session variables are initialized at connect time using the current values of the corresponding global variables. For example, a client's SQL mode is controlled by the session 'sql_mode' value, which is initialized when the client connects to the value of the global 'sql_mode' value.
For some system variables, the session value is not initialized from the corresponding global value; if so, that is indicated in the variable description.
System variable values can be set globally at server startup by using options on the command line or in an option file. At startup, the syntax for system variables is the same as for command options, so within variable names, dashes and underscores may be used interchangeably. For example, '--general_log=ON' and '--general-log=ON' are equivalent.
When you use a startup option to set a variable that takes a numeric value, the value can be given with a suffix of 'K', 'M', or 'G' (either uppercase or lowercase) to indicate a multiplier of 1024, 1024^2 or 1024^3; that is, units of kilobytes, megabytes, or gigabytes, respectively. Thus, the following command starts the server with an 'InnoDB' log file size of 16 megabytes and a maximum packet size of one gigabyte:
mysqld --innodb-log-file-size=16M --max-allowed-packet=1G
Within an option file, those variables are set like this:
[mysqld]
innodb_log_file_size=16M
max_allowed_packet=1G
The lettercase of suffix letters does not matter; '16M' and '16m' are equivalent, as are '1G' and '1g'.
To restrict the maximum value to which a system variable can be set at runtime with the *note 'SET': set-variable. statement, specify this maximum by using an option of the form '--maximum-VAR_NAME=VALUE' at server startup. For example, to prevent the value of 'innodb_log_file_size' from being increased to more than 32MB at runtime, use the option '--maximum-innodb-log-file-size=32M'.
Many system variables are dynamic and can be changed at runtime by using the note 'SET': set-variable. statement. For a list, see note dynamic-system-variables::. To change a system variable with *note 'SET': set-variable, refer to it by name, optionally preceded by a modifier. At runtime, system variable names must be written using underscores, not dashes. The following examples briefly illustrate this syntax:
Set a global system variable:
SET GLOBAL max_connections = 1000;
SET @@GLOBAL.max_connections = 1000;
Set a session system variable:
SET SESSION sql_mode = 'TRADITIONAL';
SET @@SESSION.sql_mode = 'TRADITIONAL';
SET @@sql_mode = 'TRADITIONAL';
For complete details about note 'SET': set-variable. syntax, see note set-variable::. For a description of the privilege requirements for setting system variables, see *note system-variable-privileges::
Suffixes for specifying a value multiplier can be used when setting a variable at server startup, but not to set the value with note 'SET': set-variable. at runtime. On the other hand, with note 'SET': set-variable. you can assign a variable's value using an expression, which is not true when you set a variable at server startup. For example, the first of the following lines is legal at server startup, but the second is not:
$> mysql --max_allowed_packet=16M
$> mysql --max_allowed_packet=16*1024*1024
Conversely, the second of the following lines is legal at runtime, but the first is not:
mysql> SET GLOBAL max_allowed_packet=16M;
mysql> SET GLOBAL max_allowed_packet=16*1024*1024;
To display system variable names and values, use the *note 'SHOW VARIABLES': show-variables. statement:
mysql> SHOW VARIABLES;
+---------------------------------+-----------------------------------+
| Variable_name | Value |
+---------------------------------+-----------------------------------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| automatic_sp_privileges | ON |
| back_log | 50 |
| basedir | /home/mysql/ |
| binlog_cache_size | 32768 |
| bulk_insert_buffer_size | 8388608 |
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /home/mysql/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
...
| innodb_autoextend_increment | 8 |
| innodb_buffer_pool_size | 8388608 |
| innodb_checksums | ON |
| innodb_commit_concurrency | 0 |
| innodb_concurrency_tickets | 500 |
| innodb_data_file_path | ibdata1:10M:autoextend |
| innodb_data_home_dir | |
...
| version | 5.7.18-log |
| version_comment | Source distribution |
| version_compile_machine | i686 |
| version_compile_os | suse-linux |
| wait_timeout | 28800 |
+---------------------------------+-----------------------------------+
With a 'LIKE' clause, the statement displays only those variables that match the pattern. To obtain a specific variable name, use a 'LIKE' clause as shown:
SHOW VARIABLES LIKE 'max_join_size';
SHOW SESSION VARIABLES LIKE 'max_join_size';
To get a list of variables whose name match a pattern, use the '%' wildcard character in a 'LIKE' clause:
SHOW VARIABLES LIKE '%size%';
SHOW GLOBAL VARIABLES LIKE '%size%';
Wildcard characters can be used in any position within the pattern to be matched. Strictly speaking, because '_' is a wildcard that matches any single character, you should escape it as '_' to match it literally. In practice, this is rarely necessary.
For *note 'SHOW VARIABLES': show-variables, if you specify neither 'GLOBAL' nor 'SESSION', MySQL returns 'SESSION' values.
The reason for requiring the 'GLOBAL' keyword when setting 'GLOBAL'-only variables but not when retrieving them is to prevent problems in the future:
Were a 'SESSION' variable to be removed that has the same name as a 'GLOBAL' variable, a client with privileges sufficient to modify global variables might accidentally change the 'GLOBAL' variable rather than just the 'SESSION' variable for its own session.
Were a 'SESSION' variable to be added with the same name as a 'GLOBAL' variable, a client that intends to change the 'GLOBAL' variable might find only its own 'SESSION' variable changed.
File: manual.info.tmp, Node: system-variable-privileges, Next: dynamic-system-variables, Prev: using-system-variables, Up: using-system-variables
5.1.8.1 System Variable Privileges ..................................
A system variable can have a global value that affects server operation as a whole, a session value that affects only the current session, or both. To modify system variable runtime values, use the note 'SET': set-variable. statement. See note set-variable::. This section describes the privileges required to assign values to system variables at runtime.
Setting a global system variable runtime value requires the 'SUPER' privilege.
To set a session system variable runtime value, use the *note 'SET SESSION': set-variable. statement. In contrast to setting global runtime values, setting session runtime values normally requires no special privileges and can be done by any user to affect the current session. For some system variables, setting the session value may have effects outside the current session and thus is a restricted operation that can be done only by users who have the 'SUPER' privilege. If a session system variable is restricted in this way, the variable description indicates that restriction. Examples include 'binlog_format' and 'sql_log_bin'. Setting the session value of these variables affects binary logging for the current session, but may also have wider implications for the integrity of server replication and backups.
File: manual.info.tmp, Node: dynamic-system-variables, Next: structured-system-variables, Prev: system-variable-privileges, Up: using-system-variables
5.1.8.2 Dynamic System Variables ................................
Many server system variables are dynamic and can be set at runtime. See note set-variable::. For a description of the privilege requirements for setting system variables, see note system-variable-privileges::
The following table lists all dynamic system variables applicable within 'mysqld'.
The table lists each variable's data type and scope. The last column indicates whether the scope for each variable is Global, Session, or both. Please see the corresponding item descriptions for details on setting and using the variables. Where appropriate, direct links to further information about the items are provided.
Variables that have a type of 'string' take a string value. Variables that have a type of 'numeric' take a numeric value. Variables that have a type of 'boolean' can be set to 0, 1, 'ON' or 'OFF'. Variables that are marked as 'enumeration' normally should be set to one of the available values for the variable, but can also be set to the number that corresponds to the desired enumeration value. For enumerated system variables, the first enumeration value corresponds to 0. This differs from the *note 'ENUM': enum. data type used for table columns, for which the first enumeration value corresponds to 1.
Dynamic System Variable Summary
Variable Name Variable Variable Type Scope
audit_log_connection_policy
Enumeration Global
audit_log_disable
Boolean Global
audit_log_exclude_accounts
String Global
audit_log_flush
Boolean Global
audit_log_format_unix_timestamp
Boolean Global
audit_log_include_accounts
String Global
audit_log_read_buffer_size
Integer Varies
audit_log_rotate_on_size
Integer Global
audit_log_statement_policy
Enumeration Global
authentication_ldap_sasl_auth_method_name
String Global
authentication_ldap_sasl_bind_base_dn
String Global
authentication_ldap_sasl_bind_root_dn
String Global
authentication_ldap_sasl_bind_root_pwd
String Global
authentication_ldap_sasl_ca_path
String Global
authentication_ldap_sasl_group_search_attr
String Global
authentication_ldap_sasl_group_search_filter
String Global
authentication_ldap_sasl_init_pool_size
Integer Global
authentication_ldap_sasl_log_status
Integer Global
authentication_ldap_sasl_max_pool_size
Integer Global
authentication_ldap_sasl_server_host
String Global
authentication_ldap_sasl_server_port
Integer Global
authentication_ldap_sasl_tls
Boolean Global
authentication_ldap_sasl_user_search_attr
String Global
authentication_ldap_simple_auth_method_name
String Global
authentication_ldap_simple_bind_base_dn
String Global
authentication_ldap_simple_bind_root_dn
String Global
authentication_ldap_simple_bind_root_pwd
String Global
authentication_ldap_simple_ca_path
String Global
authentication_ldap_simple_group_search_attr
String Global
authentication_ldap_simple_group_search_filter
String Global
authentication_ldap_simple_init_pool_size
Integer Global
authentication_ldap_simple_log_status
Integer Global
authentication_ldap_simple_max_pool_size
Integer Global
authentication_ldap_simple_server_host
String Global
authentication_ldap_simple_server_port
Integer Global
authentication_ldap_simple_tls
Boolean Global
authentication_ldap_simple_user_search_attr
String Global
auto_increment_increment
Integer Both
auto_increment_offset
Integer Both
autocommit
Boolean Both
automatic_sp_privileges
Boolean Global
avoid_temporal_upgrade
Boolean Global
big_tables
Boolean Both
binlog_cache_size
Integer Global
binlog_checksum
String Global
binlog_direct_non_transactional_updates
Boolean Both
binlog_error_action
Enumeration Global
binlog_format
Enumeration Both
binlog_group_commit_sync_delay
Integer Global
binlog_group_commit_sync_no_delay_count
Integer Global
binlog_max_flush_queue_time
Integer Global
binlog_order_commits
Boolean Global
binlog_row_image
Enumeration Both
binlog_rows_query_log_events
Boolean Both
binlog_stmt_cache_size
Integer Global
binlog_transaction_dependency_history_size
Integer Global
binlog_transaction_dependency_tracking
Enumeration Global
block_encryption_mode
String Both
bulk_insert_buffer_size
Integer Both
character_set_client
String Both
character_set_connection
String Both
character_set_database
String Both
character_set_filesystem
String Both
character_set_results
String Both
character_set_server
String Both
check_proxy_users
Boolean Global
collation_connection
String Both
collation_database
String Both
collation_server
String Both
completion_type
Enumeration Both
concurrent_insert
Enumeration Global
connect_timeout
Integer Global
connection_control_failed_connections_threshold
Integer Global
connection_control_max_connection_delay
Integer Global
connection_control_min_connection_delay
Integer Global
debug
String Both
debug_sync
String Session
default_password_lifetime
Integer Global
default_storage_engine
Enumeration Both
default_tmp_storage_engine
Enumeration Both
default_week_format
Integer Both
delay_key_write
Enumeration Global
delayed_insert_limit
Integer Global
delayed_insert_timeout
Integer Global
delayed_queue_size
Integer Global
div_precision_increment
Integer Both
end_markers_in_json
Boolean Both
enforce_gtid_consistency
Enumeration Global
eq_range_index_dive_limit
Integer Both
event_scheduler
Enumeration Global
expire_logs_days
Integer Global
explicit_defaults_for_timestamp
Boolean Both
flush
Boolean Global
flush_time
Integer Global
foreign_key_checks
Boolean Both
ft_boolean_syntax
String Global
general_log
Boolean Global
general_log_file
File name Global
group_concat_max_len
Integer Both
group_replication_allow_local_disjoint_gtids_join
Boolean Global
group_replication_allow_local_lower_version_join
Boolean Global
group_replication_auto_increment_increment
Integer Global
group_replication_bootstrap_group
Boolean Global
group_replication_components_stop_timeout
Integer Global
group_replication_compression_threshold
Integer Global
group_replication_enforce_update_everywhere_checks
Boolean Global
group_replication_exit_state_action
Enumeration Global
group_replication_flow_control_applier_threshold
Integer Global
group_replication_flow_control_certifier_threshold
Integer Global
group_replication_flow_control_mode
Enumeration Global
group_replication_force_members
String Global
group_replication_group_name
String Global
group_replication_group_seeds
String Global
group_replication_gtid_assignment_block_size
Integer Global
group_replication_ip_whitelist
String Global
group_replication_local_address
String Global
group_replication_member_weight
Integer Global
group_replication_poll_spin_loops
Integer Global
group_replication_recovery_complete_at
Enumeration Global
group_replication_recovery_reconnect_interval
Integer Global
group_replication_recovery_retry_count
Integer Global
group_replication_recovery_ssl_ca
String Global
group_replication_recovery_ssl_capath
String Global
group_replication_recovery_ssl_cert
String Global
group_replication_recovery_ssl_cipher
String Global
group_replication_recovery_ssl_crl
File name Global
group_replication_recovery_ssl_crlpath
Directory name Global
group_replication_recovery_ssl_key
String Global
group_replication_recovery_ssl_verify_server_cert
Boolean Global
group_replication_recovery_use_ssl
Boolean Global
group_replication_single_primary_mode
Boolean Global
group_replication_ssl_mode
Enumeration Global
group_replication_start_on_boot
Boolean Global
group_replication_transaction_size_limit
Integer Global
group_replication_unreachable_majority_timeout
Integer Global
gtid_executed_compression_period
Integer Global
gtid_mode
Enumeration Global
gtid_next
Enumeration Session
gtid_purged
String Global
host_cache_size
Integer Global
identity
Integer Session
init_connect
String Global
init_slave
String Global
innodb_adaptive_flushing
Boolean Global
innodb_adaptive_flushing_lwm
Integer Global
innodb_adaptive_hash_index
Boolean Global
innodb_adaptive_max_sleep_delay
Integer Global
innodb_api_bk_commit_interval
Integer Global
innodb_api_trx_level
Integer Global
innodb_autoextend_increment
Integer Global
innodb_background_drop_list_empty
Boolean Global
innodb_buffer_pool_dump_at_shutdown
Boolean Global
innodb_buffer_pool_dump_now
Boolean Global
innodb_buffer_pool_dump_pct
Integer Global
innodb_buffer_pool_filename
File name Global
innodb_buffer_pool_load_abort
Boolean Global
innodb_buffer_pool_load_now
Boolean Global
innodb_buffer_pool_size
Integer Global
innodb_change_buffer_max_size
Integer Global
innodb_change_buffering
Enumeration Global
innodb_change_buffering_debug
Integer Global
innodb_checksum_algorithm
Enumeration Global
innodb_cmp_per_index_enabled
Boolean Global
innodb_commit_concurrency
Integer Global
innodb_compress_debug
Enumeration Global
innodb_compression_failure_threshold_pct
Integer Global
innodb_compression_level
Integer Global
innodb_compression_pad_pct_max
Integer Global
innodb_concurrency_tickets
Integer Global
innodb_deadlock_detect
Boolean Global
innodb_default_row_format
Enumeration Global
innodb_disable_resize_buffer_pool_debug
Boolean Global
innodb_disable_sort_file_cache
Boolean Global
innodb_fast_shutdown
Integer Global
innodb_fil_make_page_dirty_debug
Integer Global
innodb_file_format
String Global
innodb_file_format_max
String Global
innodb_file_per_table
Boolean Global
innodb_fill_factor
Integer Global
innodb_flush_log_at_timeout
Integer Global
innodb_flush_log_at_trx_commit
Enumeration Global
innodb_flush_neighbors
Enumeration Global
innodb_flush_sync
Boolean Global
innodb_flushing_avg_loops
Integer Global
innodb_ft_aux_table
String Global
innodb_ft_enable_diag_print
Boolean Global
innodb_ft_enable_stopword
Boolean Both
innodb_ft_num_word_optimize
Integer Global
innodb_ft_result_cache_limit
Integer Global
innodb_ft_server_stopword_table
String Global
innodb_ft_user_stopword_table
String Both
innodb_io_capacity
Integer Global
innodb_io_capacity_max
Integer Global
innodb_large_prefix
Boolean Global
innodb_limit_optimistic_insert_debug
Integer Global
innodb_lock_wait_timeout
Integer Both
innodb_log_checkpoint_now
Boolean Global
innodb_log_checksums
Boolean Global
innodb_log_compressed_pages
Boolean Global
innodb_log_write_ahead_size
Integer Global
innodb_lru_scan_depth
Integer Global
innodb_max_dirty_pages_pct
Numeric Global
innodb_max_dirty_pages_pct_lwm
Numeric Global
innodb_max_purge_lag
Integer Global
innodb_max_purge_lag_delay
Integer Global
innodb_max_undo_log_size
Integer Global
innodb_merge_threshold_set_all_debug
Integer Global
innodb_monitor_disable
String Global
innodb_monitor_enable
String Global
innodb_monitor_reset
Enumeration Global
innodb_monitor_reset_all
Enumeration Global
innodb_old_blocks_pct
Integer Global
innodb_old_blocks_time
Integer Global
innodb_online_alter_log_max_size
Integer Global
innodb_optimize_fulltext_only
Boolean Global
innodb_print_all_deadlocks
Boolean Global
innodb_purge_batch_size
Integer Global
innodb_purge_rseg_truncate_frequency
Integer Global
innodb_random_read_ahead
Boolean Global
innodb_read_ahead_threshold
Integer Global
innodb_replication_delay
Integer Global
innodb_rollback_segments
Integer Global
innodb_saved_page_number_debug
Integer Global
innodb_spin_wait_delay
Integer Global
innodb_stats_auto_recalc
Boolean Global
innodb_stats_include_delete_marked
Boolean Global
innodb_stats_method
Enumeration Global
innodb_stats_on_metadata
Boolean Global
innodb_stats_persistent
Boolean Global
innodb_stats_persistent_sample_pages
Integer Global
innodb_stats_sample_pages
Integer Global
innodb_stats_transient_sample_pages
Integer Global
innodb_status_output
Boolean Global
innodb_status_output_locks
Boolean Global
innodb_strict_mode
Boolean Both
innodb_support_xa
Boolean Both
innodb_sync_spin_loops
Integer Global
innodb_table_locks
Boolean Both
innodb_thread_concurrency
Integer Global
innodb_thread_sleep_delay
Integer Global
innodb_tmpdir
Directory name Both
innodb_trx_purge_view_update_only_debug
Boolean Global
innodb_trx_rseg_n_slots_debug
Integer Global
innodb_undo_log_truncate
Boolean Global
innodb_undo_logs
Integer Global
insert_id
Integer Session
interactive_timeout
Integer Both
internal_tmp_disk_storage_engine
Enumeration Global
join_buffer_size
Integer Both
keep_files_on_create
Boolean Both
key_buffer_size
Integer Global
key_cache_age_threshold
Integer Global
key_cache_block_size
Integer Global
key_cache_division_limit
Integer Global
keyring_aws_cmk_id
String Global
keyring_aws_region
Enumeration Global
keyring_encrypted_file_data
File name Global
keyring_encrypted_file_password
String Global
keyring_file_data
File name Global
keyring_okv_conf_dir
Directory name Global
keyring_operations
Boolean Global
last_insert_id
Integer Session
lc_messages
String Both
lc_time_names
String Both
local_infile
Boolean Global
lock_wait_timeout
Integer Both
log_bin_trust_function_creators
Boolean Global
log_bin_use_v1_row_events
Boolean Global
log_builtin_as_identified_by_password
Boolean Global
log_error_verbosity
Integer Global
log_output
Set Global
log_queries_not_using_indexes
Boolean Global
log_slow_admin_statements
Boolean Global
log_slow_slave_statements
Boolean Global
log_statements_unsafe_for_binlog
Boolean Global
log_syslog
Boolean Global
log_syslog_facility
String Global
log_syslog_include_pid
Boolean Global
log_syslog_tag
String Global
log_throttle_queries_not_using_indexes
Integer Global
log_timestamps
Enumeration Global
log_warnings
Integer Global
long_query_time
Numeric Both
low_priority_updates
Boolean Both
master_info_repository
String Global
master_verify_checksum
Boolean Global
max_allowed_packet
Integer Both
max_binlog_cache_size
Integer Global
max_binlog_size
Integer Global
max_binlog_stmt_cache_size
Integer Global
max_connect_errors
Integer Global
max_connections
Integer Global
max_delayed_threads
Integer Both
max_error_count
Integer Both
max_execution_time
Integer Both
max_heap_table_size
Integer Both
max_insert_delayed_threads
Integer Both
max_join_size
Integer Both
max_length_for_sort_data
Integer Both
max_points_in_geometry
Integer Both
max_prepared_stmt_count
Integer Global
max_relay_log_size
Integer Global
max_seeks_for_key
Integer Both
max_sort_length
Integer Both
max_sp_recursion_depth
Integer Both
max_tmp_tables
Integer Both
max_user_connections
Integer Both
max_write_lock_count
Integer Global
min_examined_row_limit
Integer Both
multi_range_count
Integer Both
myisam_data_pointer_size
Integer Global
myisam_max_sort_file_size
Integer Global
myisam_repair_threads
Integer Both
myisam_sort_buffer_size
Integer Both
myisam_stats_method
Enumeration Both
myisam_use_mmap
Boolean Global
mysql_firewall_mode
Boolean Global
mysql_firewall_trace
Boolean Global
mysql_native_password_proxy_users
Boolean Global
mysqlx_connect_timeout
Integer Global
mysqlx_idle_worker_thread_timeout
Integer Global
mysqlx_max_allowed_packet
Integer Global
mysqlx_max_connections
Integer Global
mysqlx_min_worker_threads
Integer Global
ndb_allow_copying_alter_table
Boolean Both
ndb_autoincrement_prefetch_sz
Integer Both
ndb_batch_size
Integer Both
ndb_blob_read_batch_bytes
Integer Both
ndb_blob_write_batch_bytes
Integer Both
ndb_cache_check_time
Integer Global
ndb_clear_apply_status
Boolean Global
ndb_data_node_neighbour
Integer Global
ndb_default_column_format
Enumeration Global
ndb_default_column_format
Enumeration Global
ndb_deferred_constraints
Integer Both
ndb_deferred_constraints
Integer Both
ndb_distribution
Enumeration Global
ndb_distribution
Enumeration Global
ndb_eventbuffer_free_percent
Integer Global
ndb_eventbuffer_max_alloc
Integer Global
ndb_extra_logging
Integer Global
ndb_force_send
Boolean Both
ndb_fully_replicated
Boolean Both
ndb_index_stat_enable
Boolean Both
ndb_index_stat_option
String Both
ndb_join_pushdown
Boolean Both
ndb_log_binlog_index
Boolean Global
ndb_log_empty_epochs
Boolean Global
ndb_log_empty_epochs
Boolean Global
ndb_log_empty_update
Boolean Global
ndb_log_empty_update
Boolean Global
ndb_log_exclusive_reads
Boolean Both
ndb_log_exclusive_reads
Boolean Both
ndb_log_update_as_write
Boolean Global
ndb_log_update_minimal
Boolean Global
ndb_log_updated_only
Boolean Global
ndb_optimization_delay
Integer Global
ndb_read_backup
Boolean Global
ndb_recv_thread_activation_threshold
Integer Global
ndb_recv_thread_cpu_mask
Bitmap Global
ndb_report_thresh_binlog_epoch_slip
Integer Global
ndb_report_thresh_binlog_mem_usage
Integer Global
ndb_row_checksum
Integer Both
ndb_show_foreign_key_mock_tables
Boolean Global
ndb_slave_conflict_role
Enumeration Global
ndb_table_no_logging
Boolean Session
ndb_table_temporary
Boolean Session
ndb_use_exact_count
Boolean Both
ndb_use_transactions
Boolean Both
ndbinfo_max_bytes
Integer Both
ndbinfo_max_rows
Integer Both
ndbinfo_offline
Boolean Global
ndbinfo_show_hidden
Boolean Both
net_buffer_length
Integer Both
net_read_timeout
Integer Both
net_retry_count
Integer Both
net_write_timeout
Integer Both
new
Boolean Both
offline_mode
Boolean Global
old_alter_table
Boolean Both
old_passwords
Enumeration Both
optimizer_prune_level
Integer Both
optimizer_search_depth
Integer Both
optimizer_switch
Set Both
optimizer_trace
String Both
optimizer_trace_features
String Both
optimizer_trace_limit
Integer Both
optimizer_trace_max_mem_size
Integer Both
optimizer_trace_offset
Integer Both
parser_max_mem_size
Integer Both
performance_schema_show_processlist
Boolean Global
preload_buffer_size
Integer Both
profiling
Boolean Both
profiling_history_size
Integer Both
pseudo_slave_mode
Boolean Session
pseudo_thread_id
Integer Session
query_alloc_block_size
Integer Both
query_cache_limit
Integer Global
query_cache_min_res_unit
Integer Global
query_cache_size
Integer Global
query_cache_type
Enumeration Both
query_cache_wlock_invalidate
Boolean Both
query_prealloc_size
Integer Both
rand_seed1
Integer Session
rand_seed2
Integer Session
range_alloc_block_size
Integer Both
range_optimizer_max_mem_size
Integer Both
rbr_exec_mode
Enumeration Session
read_buffer_size
Integer Both
read_only
Boolean Global
read_rnd_buffer_size
Integer Both
relay_log_info_repository
String Global
relay_log_purge
Boolean Global
replication_optimize_for_static_plugin_config
Boolean Global
replication_sender_observe_commit_only
Boolean Global
require_secure_transport
Boolean Global
rewriter_enabled
Boolean Global
rewriter_verbose
Integer Global
rpl_semi_sync_master_enabled
Boolean Global
rpl_semi_sync_master_timeout
Integer Global
rpl_semi_sync_master_trace_level
Integer Global
rpl_semi_sync_master_wait_for_slave_count
Integer Global
rpl_semi_sync_master_wait_no_slave
Boolean Global
rpl_semi_sync_master_wait_point
Enumeration Global
rpl_semi_sync_slave_enabled
Boolean Global
rpl_semi_sync_slave_trace_level
Integer Global
rpl_stop_slave_timeout
Integer Global
secure_auth
Boolean Global
server_id
Integer Global
session_track_gtids
Enumeration Both
session_track_schema
Boolean Both
session_track_state_change
Boolean Both
session_track_system_variables
String Both
session_track_transaction_info
Enumeration Both
sha256_password_proxy_users
Boolean Global
show_compatibility_56
Boolean Global
show_create_table_verbosity
Boolean Both
show_old_temporals
Boolean Both
slave_allow_batching
Boolean Global
slave_checkpoint_group
Integer Global
slave_checkpoint_period
Integer Global
slave_compressed_protocol
Boolean Global
slave_exec_mode
Enumeration Global
slave_max_allowed_packet
Integer Global
slave_net_timeout
Integer Global
slave_parallel_type
Enumeration Global
slave_parallel_workers
Integer Global
slave_pending_jobs_size_max
Integer Global
slave_preserve_commit_order
Boolean Global
slave_rows_search_algorithms
Set Global
slave_sql_verify_checksum
Boolean Global
slave_transaction_retries
Integer Global
slave_type_conversions
Set Global
slow_launch_time
Integer Global
slow_query_log
Boolean Global
slow_query_log_file
File name Global
sort_buffer_size
Integer Both
sql_auto_is_null
Boolean Both
sql_big_selects
Boolean Both
sql_buffer_result
Boolean Both
sql_log_bin
Boolean Session
sql_log_off
Boolean Both
sql_mode
Set Both
sql_notes
Boolean Both
sql_quote_show_create
Boolean Both
sql_safe_updates
Boolean Both
sql_select_limit
Integer Both
sql_slave_skip_counter
Integer Global
sql_warnings
Boolean Both
stored_program_cache
Integer Global
super_read_only
Boolean Global
sync_binlog
Integer Global
sync_frm
Boolean Global
sync_master_info
Integer Global
sync_relay_log
Integer Global
sync_relay_log_info
Integer Global
table_definition_cache
Integer Global
table_open_cache
Integer Global
thread_cache_size
Integer Global
thread_pool_high_priority_connection
Integer Both
thread_pool_max_unused_threads
Integer Global
thread_pool_prio_kickup_timer
Integer Global
thread_pool_stall_limit
Integer Global
time_zone
String Both
timestamp
Numeric Session
tmp_table_size
Integer Both
transaction_alloc_block_size
Integer Both
transaction_allow_batching
Boolean Session
transaction_isolation
Enumeration Both
transaction_prealloc_size
Integer Both
transaction_read_only
Boolean Both
transaction_write_set_extraction
Enumeration Both
tx_isolation
Enumeration Both
tx_read_only
Boolean Both
unique_checks
Boolean Both
updatable_views_with_limit
Boolean Both
validate_password_check_user_name
Boolean Global
validate_password_dictionary_file
File name Global
validate_password_length
Integer Global
validate_password_mixed_case_count
Integer Global
validate_password_number_count
Integer Global
validate_password_policy
Enumeration Global
validate_password_special_char_count
Integer Global
version_tokens_session
String Both
wait_timeout
Integer Both
File: manual.info.tmp, Node: structured-system-variables, Prev: dynamic-system-variables, Up: using-system-variables
5.1.8.3 Structured System Variables ...................................
A structured variable differs from a regular system variable in two respects:
Its value is a structure with components that specify server parameters considered to be closely related.
There might be several instances of a given type of structured variable. Each one has a different name and refers to a different resource maintained by the server.
MySQL supports one structured variable type, which specifies parameters governing the operation of key caches. A key cache structured variable has these components:
'key_buffer_size'
'key_cache_block_size'
'key_cache_division_limit'
'key_cache_age_threshold'
This section describes the syntax for referring to structured variables. Key cache variables are used for syntax examples, but specific details about how key caches operate are found elsewhere, in *note myisam-key-cache::.
To refer to a component of a structured variable instance, you can use a compound name in INSTANCE_NAME.COMPONENT_NAME format. Examples:
hot_cache.key_buffer_size
hot_cache.key_cache_block_size
cold_cache.key_cache_block_size
For each structured system variable, an instance with the name of 'default' is always predefined. If you refer to a component of a structured variable without any instance name, the 'default' instance is used. Thus, 'default.key_buffer_size' and 'key_buffer_size' both refer to the same system variable.
Structured variable instances and components follow these naming rules:
For a given type of structured variable, each instance must have a name that is unique within variables of that type. However, instance names need not be unique across structured variable types. For example, each structured variable has an instance named 'default', so 'default' is not unique across variable types.
The names of the components of each structured variable type must be unique across all system variable names. If this were not true (that is, if two different types of structured variables could share component member names), it would not be clear which default structured variable to use for references to member names that are not qualified by an instance name.
If a structured variable instance name is not legal as an unquoted identifier, refer to it as a quoted identifier using backticks. For example, 'hot-cache' is not legal, but 'hot-cache
' is.
'global', 'session', and 'local' are not legal instance names. This avoids a conflict with notation such as '@@GLOBAL.VAR_NAME' for referring to nonstructured system variables.
Currently, the first two rules have no possibility of being violated because the only structured variable type is the one for key caches. These rules may assume greater significance if some other type of structured variable is created in the future.
With one exception, you can refer to structured variable components using compound names in any context where simple variable names can occur. For example, you can assign a value to a structured variable using a command-line option:
$> mysqld --hot_cache.key_buffer_size=64K
In an option file, use this syntax:
[mysqld]
hot_cache.key_buffer_size=64K
If you start the server with this option, it creates a key cache named 'hot_cache' with a size of 64KB in addition to the default key cache that has a default size of 8MB.
Suppose that you start the server as follows:
$> mysqld --key_buffer_size=256K \
--extra_cache.key_buffer_size=128K \
--extra_cache.key_cache_block_size=2048
In this case, the server sets the size of the default key cache to 256KB. (You could also have written '--default.key_buffer_size=256K'.) In addition, the server creates a second key cache named 'extra_cache' that has a size of 128KB, with the size of block buffers for caching table index blocks set to 2048 bytes.
The following example starts the server with three different key caches having sizes in a 3:1:1 ratio:
$> mysqld --key_buffer_size=6M \
--hot_cache.key_buffer_size=2M \
--cold_cache.key_buffer_size=2M
Structured variable values may be set and retrieved at runtime as well. For example, to set a key cache named 'hot_cache' to a size of 10MB, use either of these statements:
mysql> SET GLOBAL hot_cache.key_buffer_size = 10*1024*1024;
mysql> SET @@GLOBAL.hot_cache.key_buffer_size = 10*1024*1024;
To retrieve the cache size, do this:
mysql> SELECT @@GLOBAL.hot_cache.key_buffer_size;
However, the following statement does not work. The variable is not interpreted as a compound name, but as a simple string for a 'LIKE' pattern-matching operation:
mysql> SHOW GLOBAL VARIABLES LIKE 'hot_cache.key_buffer_size';
This is the exception to being able to use structured variable names anywhere a simple variable name may occur.
File: manual.info.tmp, Node: server-status-variables, Next: sql-mode, Prev: using-system-variables, Up: mysqld-server
The MySQL server maintains many status variables that provide information about its operation. You can view these variables and their values by using the 'SHOW [GLOBAL | SESSION] STATUS' statement (see *note show-status::). The optional 'GLOBAL' keyword aggregates the values over all connections, and 'SESSION' shows the values for the current connection.
mysql> SHOW GLOBAL STATUS;
+-----------------------------------+------------+
| Variable_name | Value |
+-----------------------------------+------------+
| Aborted_clients | 0 |
| Aborted_connects | 0 |
| Bytes_received | 155372598 |
| Bytes_sent | 1176560426 |
...
| Connections | 30023 |
| Created_tmp_disk_tables | 0 |
| Created_tmp_files | 3 |
| Created_tmp_tables | 2 |
...
| Threads_created | 217 |
| Threads_running | 88 |
| Uptime | 1389872 |
+-----------------------------------+------------+
Many status variables are reset to 0 by the 'FLUSH STATUS' statement.
This section provides a description of each status variable. For a status variable summary, see note server-status-variable-reference::. For information about status variables specific to NDB Cluster, see note mysql-cluster-status-variables::.
The status variables have the meanings shown in the following list.
'Aborted_clients'
The number of connections that were aborted because the client died without closing the connection properly. See *note communication-errors::.
'Aborted_connects'
The number of failed attempts to connect to the MySQL server. See *note communication-errors::.
For additional connection-related information, check the 'Connection_errors_XXX' status variables and the *note 'host_cache': performance-schema-host-cache-table. table.
As of MySQL 5.7.3, 'Aborted_connects' is not visible in the embedded server because for that server it is not updated and is not meaningful.
'Binlog_cache_disk_use'
The number of transactions that used the temporary binary log cache but that exceeded the value of 'binlog_cache_size' and used a temporary file to store statements from the transaction.
The number of nontransactional statements that caused the binary log transaction cache to be written to disk is tracked separately in the 'Binlog_stmt_cache_disk_use' status variable.
'Binlog_cache_use'
The number of transactions that used the binary log cache.
'Binlog_stmt_cache_disk_use'
The number of nontransaction statements that used the binary log statement cache but that exceeded the value of 'binlog_stmt_cache_size' and used a temporary file to store those statements.
'Binlog_stmt_cache_use'
The number of nontransactional statements that used the binary log statement cache.
'Bytes_received'
The number of bytes received from all clients.
'Bytes_sent'
The number of bytes sent to all clients.
'Com_XXX'
The 'Com_XXX' statement counter variables indicate the number of times each XXX statement has been executed. There is one status variable for each type of statement. For example, 'Com_delete' and 'Com_update' count note 'DELETE': delete. and note 'UPDATE': update. statements, respectively. 'Com_delete_multi' and 'Com_update_multi' are similar but apply to note 'DELETE': delete. and note 'UPDATE': update. statements that use multiple-table syntax.
If a query result is returned from query cache, the server increments the 'Qcache_hits' status variable, not 'Com_select'. See *note query-cache-status-and-maintenance::.
All 'Com_stmt_XXX' variables are increased even if a prepared statement argument is unknown or an error occurred during execution. In other words, their values correspond to the number of requests issued, not to the number of requests successfully completed. For example, because status variables are initialized for each server startup and do not persist across restarts, the 'Com_shutdown' variable that tracks note 'SHUTDOWN': shutdown. statements normally has a value of zero, but can be nonzero if note 'SHUTDOWN': shutdown. statements were executed but failed.
The 'Com_stmt_XXX' status variables are as follows:
* 'Com_stmt_prepare'
* 'Com_stmt_execute'
* 'Com_stmt_fetch'
* 'Com_stmt_send_long_data'
* 'Com_stmt_reset'
* 'Com_stmt_close'
Those variables stand for prepared statement commands. Their names refer to the 'COM_XXX' command set used in the network layer. In other words, their values increase whenever prepared statement API calls such as 'mysql_stmt_prepare()', 'mysql_stmt_execute()', and so forth are executed. However, 'Com_stmt_prepare', 'Com_stmt_execute' and 'Com_stmt_close' also increase for note 'PREPARE': prepare, note 'EXECUTE': execute, or note 'DEALLOCATE PREPARE': deallocate-prepare, respectively. Additionally, the values of the older statement counter variables 'Com_prepare_sql', 'Com_execute_sql', and 'Com_dealloc_sql' increase for the note 'PREPARE': prepare, note 'EXECUTE': execute, and note 'DEALLOCATE PREPARE': deallocate-prepare. statements. 'Com_stmt_fetch' stands for the total number of network round-trips issued when fetching from cursors.
'Com_stmt_reprepare' indicates the number of times statements were automatically reprepared by the server after metadata changes to tables or views referred to by the statement. A reprepare operation increments 'Com_stmt_reprepare', and also 'Com_stmt_prepare'.
'Com_explain_other' indicates the number of note 'EXPLAIN FOR CONNECTION': explain. statements executed. See note explain-for-connection::.
'Com_change_repl_filter' indicates the number of *note 'CHANGE REPLICATION FILTER': change-replication-filter. statements executed.
'Compression'
Whether the client connection uses compression in the client/server protocol.
'Connection_errors_XXX'
These variables provide information about errors that occur during the client connection process. They are global only and represent error counts aggregated across connections from all hosts. These variables track errors not accounted for by the host cache (see *note host-cache::), such as errors that are not associated with TCP connections, occur very early in the connection process (even before an IP address is known), or are not specific to any particular IP address (such as out-of-memory conditions).
As of MySQL 5.7.3, the 'Connection_errors_XXX' status variables are not visible in the embedded server because for that server they are not updated and are not meaningful.
* 'Connection_errors_accept'
The number of errors that occurred during calls to 'accept()'
on the listening port.
* 'Connection_errors_internal'
The number of connections refused due to internal errors in
the server, such as failure to start a new thread or an
out-of-memory condition.
* 'Connection_errors_max_connections'
The number of connections refused because the server
'max_connections' limit was reached.
* 'Connection_errors_peer_address'
The number of errors that occurred while searching for
connecting client IP addresses.
* 'Connection_errors_select'
The number of errors that occurred during calls to 'select()'
or 'poll()' on the listening port. (Failure of this operation
does not necessarily means a client connection was rejected.)
* 'Connection_errors_tcpwrap'
The number of connections refused by the 'libwrap' library.
'Connections'
The number of connection attempts (successful or not) to the MySQL server.
'Created_tmp_disk_tables'
The number of internal on-disk temporary tables created by the server while executing statements.
You can compare the number of internal on-disk temporary tables created to the total number of internal temporary tables created by comparing 'Created_tmp_disk_tables' and 'Created_tmp_tables' values.
See also *note internal-temporary-tables::.
'Created_tmp_files'
How many temporary files *note 'mysqld': mysqld. has created.
'Created_tmp_tables'
The number of internal temporary tables created by the server while executing statements.
You can compare the number of internal on-disk temporary tables created to the total number of internal temporary tables created by comparing 'Created_tmp_disk_tables' and 'Created_tmp_tables' values.
See also *note internal-temporary-tables::.
Each invocation of the *note 'SHOW STATUS': show-status. statement uses an internal temporary table and increments the global 'Created_tmp_tables' value.
'Delayed_errors'
This status variable is deprecated (because 'DELAYED' inserts are not supported); expect it to be removed in a future release.
'Delayed_insert_threads'
This status variable is deprecated (because 'DELAYED' inserts are not supported); expect it to be removed in a future release.
'Delayed_writes'
This status variable is deprecated (because 'DELAYED' inserts are not supported); expect it to be removed in a future release.
'Flush_commands'
The number of times the server flushes tables, whether because a user executed a 'FLUSH TABLES' statement or due to internal server operation. It is also incremented by receipt of a 'COM_REFRESH' packet. This is in contrast to 'Com_flush', which indicates how many 'FLUSH' statements have been executed, whether 'FLUSH TABLES', 'FLUSH LOGS', and so forth.
'group_replication_primary_member'
Shows the primary member's UUID when the group is operating in single-primary mode. If the group is operating in multi-primary mode, shows an empty string.
'Handler_commit'
The number of internal *note 'COMMIT': commit. statements.
'Handler_delete'
The number of times that rows have been deleted from tables.
'Handler_external_lock'
The server increments this variable for each call to its 'external_lock()' function, which generally occurs at the beginning and end of access to a table instance. There might be differences among storage engines. This variable can be used, for example, to discover for a statement that accesses a partitioned table how many partitions were pruned before locking occurred: Check how much the counter increased for the statement, subtract 2 (2 calls for the table itself), then divide by 2 to get the number of partitions locked.
'Handler_mrr_init'
The number of times the server uses a storage engine's own Multi-Range Read implementation for table access.
'Handler_prepare'
A counter for the prepare phase of two-phase commit operations.
'Handler_read_first'
The number of times the first entry in an index was read. If this value is high, it suggests that the server is doing a lot of full index scans (for example, 'SELECT col1 FROM foo', assuming that 'col1' is indexed).
'Handler_read_key'
The number of requests to read a row based on a key. If this value is high, it is a good indication that your tables are properly indexed for your queries.
'Handler_read_last'
The number of requests to read the last key in an index. With 'ORDER BY', the server issues a first-key request followed by several next-key requests, whereas with 'ORDER BY DESC', the server issues a last-key request followed by several previous-key requests.
'Handler_read_next'
The number of requests to read the next row in key order. This value is incremented if you are querying an index column with a range constraint or if you are doing an index scan.
'Handler_read_prev'
The number of requests to read the previous row in key order. This read method is mainly used to optimize 'ORDER BY ... DESC'.
'Handler_read_rnd'
The number of requests to read a row based on a fixed position. This value is high if you are doing a lot of queries that require sorting of the result. You probably have a lot of queries that require MySQL to scan entire tables or you have joins that do not use keys properly.
'Handler_read_rnd_next'
The number of requests to read the next row in the data file. This value is high if you are doing a lot of table scans. Generally this suggests that your tables are not properly indexed or that your queries are not written to take advantage of the indexes you have.
'Handler_rollback'
The number of requests for a storage engine to perform a rollback operation.
'Handler_savepoint'
The number of requests for a storage engine to place a savepoint.
'Handler_savepoint_rollback'
The number of requests for a storage engine to roll back to a savepoint.
'Handler_update'
The number of requests to update a row in a table.
'Handler_write'
The number of requests to insert a row in a table.
'Innodb_available_undo_logs'
Note:
The 'Innodb_available_undo_logs' status variable is deprecated as of MySQL 5.7.19; expect it to be removed in a future release.
The total number of available 'InnoDB' rollback segments. Supplements the 'innodb_rollback_segments' system variable, which defines the number of active rollback segments.
One rollback segment always resides in the system tablespace, and 32 rollback segments are reserved for use by temporary tables and are hosted in the temporary tablespace ('ibtmp1'). See *note innodb-undo-logs::.
If you initiate a MySQL instance with 32 or fewer rollback segments, 'InnoDB' still assigns one rollback segment to the system tablespace and 32 rollback segments to the temporary tablespace. In this case, 'Innodb_available_undo_logs' reports 33 available rollback segments even though the instance was initialized with a lesser 'innodb_rollback_segments' value.
'Innodb_buffer_pool_dump_status'
The progress of an operation to record the pages held in the 'InnoDB' buffer pool, triggered by the setting of 'innodb_buffer_pool_dump_at_shutdown' or 'innodb_buffer_pool_dump_now'.
For related information and examples, see *note innodb-preload-buffer-pool::.
'Innodb_buffer_pool_load_status'
The progress of an operation to warm up the 'InnoDB' buffer pool by reading in a set of pages corresponding to an earlier point in time, triggered by the setting of 'innodb_buffer_pool_load_at_startup' or 'innodb_buffer_pool_load_now'. If the operation introduces too much overhead, you can cancel it by setting 'innodb_buffer_pool_load_abort'.
For related information and examples, see *note innodb-preload-buffer-pool::.
'Innodb_buffer_pool_bytes_data'
The total number of bytes in the 'InnoDB' buffer pool containing data. The number includes both dirty and clean pages. For more accurate memory usage calculations than with 'Innodb_buffer_pool_pages_data', when compressed tables cause the buffer pool to hold pages of different sizes.
'Innodb_buffer_pool_pages_data'
The number of pages in the 'InnoDB' buffer pool containing data. The number includes both dirty and clean pages. When using compressed tables, the reported 'Innodb_buffer_pool_pages_data' value may be larger than 'Innodb_buffer_pool_pages_total' (Bug #59550).
'Innodb_buffer_pool_bytes_dirty'
The total current number of bytes held in dirty pages in the 'InnoDB' buffer pool. For more accurate memory usage calculations than with 'Innodb_buffer_pool_pages_dirty', when compressed tables cause the buffer pool to hold pages of different sizes.
'Innodb_buffer_pool_pages_dirty'
The current number of dirty pages in the 'InnoDB' buffer pool.
'Innodb_buffer_pool_pages_flushed'
The number of requests to flush pages from the 'InnoDB' buffer pool.
'Innodb_buffer_pool_pages_free'
The number of free pages in the 'InnoDB' buffer pool.
'Innodb_buffer_pool_pages_latched'
The number of latched pages in the 'InnoDB' buffer pool. These are pages currently being read or written, or that cannot be flushed or removed for some other reason. Calculation of this variable is expensive, so it is available only when the 'UNIV_DEBUG' system is defined at server build time.
'Innodb_buffer_pool_pages_misc'
The number of pages in the 'InnoDB' buffer pool that are busy because they have been allocated for administrative overhead, such as row locks or the adaptive hash index. This value can also be calculated as 'Innodb_buffer_pool_pages_total' − 'Innodb_buffer_pool_pages_free' − 'Innodb_buffer_pool_pages_data'. When using compressed tables, 'Innodb_buffer_pool_pages_misc' may report an out-of-bounds value (Bug #59550).
'Innodb_buffer_pool_pages_total'
The total size of the 'InnoDB' buffer pool, in pages. When using compressed tables, the reported 'Innodb_buffer_pool_pages_data' value may be larger than 'Innodb_buffer_pool_pages_total' (Bug #59550)
'Innodb_buffer_pool_read_ahead'
The number of pages read into the 'InnoDB' buffer pool by the read-ahead background thread.
'Innodb_buffer_pool_read_ahead_evicted'
The number of pages read into the 'InnoDB' buffer pool by the read-ahead background thread that were subsequently evicted without having been accessed by queries.
'Innodb_buffer_pool_read_ahead_rnd'
The number of 'random' read-aheads initiated by 'InnoDB'. This happens when a query scans a large portion of a table but in random order.
'Innodb_buffer_pool_read_requests'
The number of logical read requests.
'Innodb_buffer_pool_reads'
The number of logical reads that 'InnoDB' could not satisfy from the buffer pool, and had to read directly from disk.
'Innodb_buffer_pool_resize_status'
The status of an operation to resize the 'InnoDB' buffer pool dynamically, triggered by setting the 'innodb_buffer_pool_size' parameter dynamically. The 'innodb_buffer_pool_size' parameter is dynamic, which allows you to resize the buffer pool without restarting the server. See *note innodb-buffer-pool-online-resize:: for related information.
'Innodb_buffer_pool_wait_free'
Normally, writes to the 'InnoDB' buffer pool happen in the background. When 'InnoDB' needs to read or create a page and no clean pages are available, 'InnoDB' flushes some dirty pages first and waits for that operation to finish. This counter counts instances of these waits. If 'innodb_buffer_pool_size' has been set properly, this value should be small.
'Innodb_buffer_pool_write_requests'
The number of writes done to the 'InnoDB' buffer pool.
'Innodb_data_fsyncs'
The number of 'fsync()' operations so far. The frequency of 'fsync()' calls is influenced by the setting of the 'innodb_flush_method' configuration option.
'Innodb_data_pending_fsyncs'
The current number of pending 'fsync()' operations. The frequency of 'fsync()' calls is influenced by the setting of the 'innodb_flush_method' configuration option.
'Innodb_data_pending_reads'
The current number of pending reads.
'Innodb_data_pending_writes'
The current number of pending writes.
'Innodb_data_read'
The amount of data read since the server was started (in bytes).
'Innodb_data_reads'
The total number of data reads (OS file reads).
'Innodb_data_writes'
The total number of data writes.
'Innodb_data_written'
The amount of data written so far, in bytes.
'Innodb_dblwr_pages_written'
The number of pages that have been written to the doublewrite buffer. See *note innodb-disk-io::.
'Innodb_dblwr_writes'
The number of doublewrite operations that have been performed. See *note innodb-disk-io::.
'Innodb_have_atomic_builtins'
Indicates whether the server was built with atomic instructions.
'Innodb_log_waits'
The number of times that the log buffer was too small and a wait was required for it to be flushed before continuing.
'Innodb_log_write_requests'
The number of write requests for the 'InnoDB' redo log.
'Innodb_log_writes'
The number of physical writes to the 'InnoDB' redo log file.
'Innodb_num_open_files'
The number of files 'InnoDB' currently holds open.
'Innodb_os_log_fsyncs'
The number of 'fsync()' writes done to the 'InnoDB' redo log files.
'Innodb_os_log_pending_fsyncs'
The number of pending 'fsync()' operations for the 'InnoDB' redo log files.
'Innodb_os_log_pending_writes'
The number of pending writes to the 'InnoDB' redo log files.
'Innodb_os_log_written'
The number of bytes written to the 'InnoDB' redo log files.
'Innodb_page_size'
'InnoDB' page size (default 16KB). Many values are counted in pages; the page size enables them to be easily converted to bytes.
'Innodb_pages_created'
The number of pages created by operations on 'InnoDB' tables.
'Innodb_pages_read'
The number of pages read from the 'InnoDB' buffer pool by operations on 'InnoDB' tables.
'Innodb_pages_written'
The number of pages written by operations on 'InnoDB' tables.
'Innodb_row_lock_current_waits'
The number of row locks currently being waited for by operations on 'InnoDB' tables.
'Innodb_row_lock_time'
The total time spent in acquiring row locks for 'InnoDB' tables, in milliseconds.
'Innodb_row_lock_time_avg'
The average time to acquire a row lock for 'InnoDB' tables, in milliseconds.
'Innodb_row_lock_time_max'
The maximum time to acquire a row lock for 'InnoDB' tables, in milliseconds.
'Innodb_row_lock_waits'
The number of times operations on 'InnoDB' tables had to wait for a row lock.
'Innodb_rows_deleted'
The number of rows deleted from 'InnoDB' tables.
'Innodb_rows_inserted'
The number of rows inserted into 'InnoDB' tables.
'Innodb_rows_read'
The number of rows read from 'InnoDB' tables.
'Innodb_rows_updated'
The estimated number of rows updated in 'InnoDB' tables.
Note:
This value is not meant to be 100% accurate. For an accurate (but more expensive) result, use 'ROW_COUNT()'.
'Innodb_truncated_status_writes'
The number of times output from the 'SHOW ENGINE INNODB STATUS' statement has been truncated.
'Key_blocks_not_flushed'
The number of key blocks in the 'MyISAM' key cache that have changed but have not yet been flushed to disk.
'Key_blocks_unused'
The number of unused blocks in the 'MyISAM' key cache. You can use this value to determine how much of the key cache is in use; see the discussion of 'key_buffer_size' in *note server-system-variables::.
'Key_blocks_used'
The number of used blocks in the 'MyISAM' key cache. This value is a high-water mark that indicates the maximum number of blocks that have ever been in use at one time.
'Key_read_requests'
The number of requests to read a key block from the 'MyISAM' key cache.
'Key_reads'
The number of physical reads of a key block from disk into the 'MyISAM' key cache. If 'Key_reads' is large, then your 'key_buffer_size' value is probably too small. The cache miss rate can be calculated as 'Key_reads'/'Key_read_requests'.
'Key_write_requests'
The number of requests to write a key block to the 'MyISAM' key cache.
'Key_writes'
The number of physical writes of a key block from the 'MyISAM' key cache to disk.
'Last_query_cost'
The total cost of the last compiled query as computed by the query optimizer. This is useful for comparing the cost of different query plans for the same query. The default value of 0 means that no query has been compiled yet. The default value is 0. 'Last_query_cost' has session scope.
'Last_query_cost' can be computed accurately only for simple, 'flat' queries, but not for complex queries such as those containing subqueries or *note 'UNION': union. For the latter, the value is set to 0.
'Last_query_partial_plans'
The number of iterations the query optimizer made in execution plan construction for the previous query.
'Last_query_partial_plans' has session scope.
'Locked_connects'
The number of attempts to connect to locked user accounts. For information about account locking and unlocking, see *note account-locking::.
'Max_execution_time_exceeded'
The number of *note 'SELECT': select. statements for which the execution timeout was exceeded.
'Max_execution_time_set'
The number of *note 'SELECT': select. statements for which a nonzero execution timeout was set. This includes statements that include a nonzero 'MAX_EXECUTION_TIME' optimizer hint, and statements that include no such hint but execute while the timeout indicated by the 'max_execution_time' system variable is nonzero.
'Max_execution_time_set_failed'
The number of *note 'SELECT': select. statements for which the attempt to set an execution timeout failed.
'Max_used_connections'
The maximum number of connections that have been in use simultaneously since the server started.
'Max_used_connections_time'
The time at which 'Max_used_connections' reached its current value.
'Not_flushed_delayed_rows'
This status variable is deprecated (because 'DELAYED' inserts are not supported); expect it to be removed in a future release.
'mecab_charset'
The character set currently used by the MeCab full-text parser plugin. For related information, see *note fulltext-search-mecab::.
'Ongoing_anonymous_transaction_count'
Shows the number of ongoing transactions which have been marked as anonymous. This can be used to ensure that no further transactions are waiting to be processed.
'Ongoing_anonymous_gtid_violating_transaction_count'
This status variable is only available in debug builds. Shows the number of ongoing transactions which use 'gtid_next=ANONYMOUS' and that violate GTID consistency.
'Ongoing_automatic_gtid_violating_transaction_count'
This status variable is only available in debug builds. Shows the number of ongoing transactions which use 'gtid_next=AUTOMATIC' and that violate GTID consistency.
'Open_files'
The number of files that are open. This count includes regular files opened by the server. It does not include other types of files such as sockets or pipes. Also, the count does not include files that storage engines open using their own internal functions rather than asking the server level to do so.
'Open_streams'
The number of streams that are open (used mainly for logging).
'Open_table_definitions'
The number of cached '.frm' files.
'Open_tables'
The number of tables that are open.
'Opened_files'
The number of files that have been opened with 'my_open()' (a 'mysys' library function). Parts of the server that open files without using this function do not increment the count.
'Opened_table_definitions'
The number of '.frm' files that have been cached.
'Opened_tables'
The number of tables that have been opened. If 'Opened_tables' is big, your 'table_open_cache' value is probably too small.
'Performance_schema_XXX'
Performance Schema status variables are listed in *note performance-schema-status-variables::. These variables provide information about instrumentation that could not be loaded or created due to memory constraints.
'Prepared_stmt_count'
The current number of prepared statements. (The maximum number of statements is given by the 'max_prepared_stmt_count' system variable.)
'Qcache_free_blocks'
The number of free memory blocks in the query cache.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'Qcache_free_blocks'.
'Qcache_free_memory'
The amount of free memory for the query cache.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'Qcache_free_memory'.
'Qcache_hits'
The number of query cache hits.
The discussion at the beginning of this section indicates how to relate this statement-counting status variable to other such variables.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'Qcache_hits'.
'Qcache_inserts'
The number of queries added to the query cache.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'Qcache_inserts'.
'Qcache_lowmem_prunes'
The number of queries that were deleted from the query cache because of low memory.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'Qcache_lowmem_prunes'.
'Qcache_not_cached'
The number of noncached queries (not cacheable, or not cached due to the 'query_cache_type' setting).
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'Qcache_not_cached'.
'Qcache_queries_in_cache'
The number of queries registered in the query cache.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'Qcache_queries_in_cache'.
'Qcache_total_blocks'
The total number of blocks in the query cache.
Note:
The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes 'Qcache_total_blocks'.
'Queries'
The number of statements executed by the server. This variable includes statements executed within stored programs, unlike the 'Questions' variable. It does not count 'COM_PING' or 'COM_STATISTICS' commands.
The discussion at the beginning of this section indicates how to relate this statement-counting status variable to other such variables.
'Questions'
The number of statements executed by the server. This includes only statements sent to the server by clients and not statements executed within stored programs, unlike the 'Queries' variable. This variable does not count 'COM_PING', 'COM_STATISTICS', 'COM_STMT_PREPARE', 'COM_STMT_CLOSE', or 'COM_STMT_RESET' commands.
The discussion at the beginning of this section indicates how to relate this statement-counting status variable to other such variables.
'Rpl_semi_sync_master_clients'
The number of semisynchronous replicas.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_net_avg_wait_time'
The average time in microseconds the source waited for a replica reply. This variable is deprecated, always '0'; expect it to be in a future version.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_net_wait_time'
The total time in microseconds the source waited for replica replies. This variable is deprecated, and is always '0'; expect it to be removed in a future version.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_net_waits'
The total number of times the source waited for replica replies.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_no_times'
The number of times the source turned off semisynchronous replication.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_no_tx'
The number of commits that were not acknowledged successfully by a replica.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_status'
Whether semisynchronous replication currently is operational on the source. The value is 'ON' if the plugin has been enabled and a commit acknowledgment has occurred. It is 'OFF' if the plugin is not enabled or the source has fallen back to asynchronous replication due to commit acknowledgment timeout.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_timefunc_failures'
The number of times the source failed when calling time functions such as 'gettimeofday()'.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_tx_avg_wait_time'
The average time in microseconds the source waited for each transaction.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_tx_wait_time'
The total time in microseconds the source waited for transactions.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_tx_waits'
The total number of times the source waited for transactions.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_wait_pos_backtraverse'
The total number of times the source waited for an event with binary coordinates lower than events waited for previously. This can occur when the order in which transactions start waiting for a reply is different from the order in which their binary log events are written.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_wait_sessions'
The number of sessions currently waiting for replica replies.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_master_yes_tx'
The number of commits that were acknowledged successfully by a replica.
This variable is available only if the source-side semisynchronous replication plugin is installed.
'Rpl_semi_sync_slave_status'
Whether semisynchronous replication currently is operational on the replica. This is 'ON' if the plugin has been enabled and the replica I/O thread is running, 'OFF' otherwise.
This variable is available only if the replica-side semisynchronous replication plugin is installed.
'Rsa_public_key'
This variable is available if MySQL was compiled using OpenSSL (see *note ssl-libraries::). Its value is the public key used by the 'sha256_password' authentication plugin for RSA key pair-based password exchange. The value is nonempty only if the server successfully initializes the private and public keys in the files named by the 'sha256_password_private_key_path' and 'sha256_password_public_key_path' system variables. The value of 'Rsa_public_key' comes from the latter file.
For information about 'sha256_password', see *note sha256-pluggable-authentication::.
'Select_full_join'
The number of joins that perform table scans because they do not use indexes. If this value is not 0, you should carefully check the indexes of your tables.
'Select_full_range_join'
The number of joins that used a range search on a reference table.
'Select_range'
The number of joins that used ranges on the first table. This is normally not a critical issue even if the value is quite large.
'Select_range_check'
The number of joins without keys that check for key usage after each row. If this is not 0, you should carefully check the indexes of your tables.
'Select_scan'
The number of joins that did a full scan of the first table.
'Slave_heartbeat_period'
Shows the replication heartbeat interval (in seconds) on a replication replica.
This variable is affected by the value of the 'show_compatibility_56' system variable. For details, see *note sysvar_show_compatibility_56_slave_status::.
Note:
This variable only shows the status of the default replication channel. To monitor any replication channel, use the 'HEARTBEAT_INTERVAL' column in the *note 'replication_connection_configuration': performance-schema-replication-connection-configuration-table. table for the replication channel. 'Slave_heartbeat_period' is deprecated and is removed in MySQL 8.0.
'Slave_last_heartbeat'
Shows when the most recent heartbeat signal was received by a replica, as a *note 'TIMESTAMP': datetime. value.
This variable is affected by the value of the 'show_compatibility_56' system variable. For details, see *note sysvar_show_compatibility_56_slave_status::.
Note:
This variable only shows the status of the default replication channel. To monitor any replication channel, use the 'LAST_HEARTBEAT_TIMESTAMP' column in the *note 'replication_connection_status': performance-schema-replication-connection-status-table. table for the replication channel. 'Slave_last_heartbeat' is deprecated and is removed in MySQL 8.0.
'Slave_open_temp_tables'
The number of temporary tables that the replica SQL thread currently has open. If the value is greater than zero, it is not safe to shut down the replica; see *note replication-features-temptables::. This variable reports the total count of open temporary tables for all replication channels.
'Slave_received_heartbeats'
This counter increments with each replication heartbeat received by a replication replica since the last time that the replica was restarted or reset, or a *note 'CHANGE MASTER TO': change-master-to. statement was issued.
This variable is affected by the value of the 'show_compatibility_56' system variable. For details, see *note sysvar_show_compatibility_56_slave_status::.
Note:
This variable only shows the status of the default replication channel. To monitor any replication channel, use the 'COUNT_RECEIVED_HEARTBEATS' column in the *note 'replication_connection_status': performance-schema-replication-connection-status-table. table for the replication channel. 'Slave_received_heartbeats' is deprecated and is removed in MySQL 8.0.
'Slave_retried_transactions'
The total number of times since startup that the replication replica SQL thread has retried transactions.
This variable is affected by the value of the 'show_compatibility_56' system variable. For details, see *note sysvar_show_compatibility_56_slave_status::.
Note:
This variable only shows the status of the default replication channel. To monitor any replication channel, use the 'COUNT_TRANSACTIONS_RETRIES' column in the *note 'replication_applier_status': performance-schema-replication-applier-status-table. table for the replication channel. 'Slave_retried_transactions' is deprecated and is removed in MySQL 8.0.
'Slave_rows_last_search_algorithm_used'
The search algorithm that was most recently used by this replica to locate rows for row-based replication. The result shows whether the replica used indexes, a table scan, or hashing as the search algorithm for the last transaction executed on any channel.
The method used depends on the setting for the 'slave_rows_search_algorithms' system variable, and the keys that are available on the relevant table.
This variable is available only for debug builds of MySQL.
'Slave_running'
This is 'ON' if this server is a replica that is connected to a replication source, and both the I/O and SQL threads are running; otherwise, it is 'OFF'.
This variable is affected by the value of the 'show_compatibility_56' system variable. For details, see *note sysvar_show_compatibility_56_slave_status::.
Note:
This variable only shows the status of the default replication channel. To monitor any replication channel, use the 'SERVICE_STATE' column in the note 'replication_applier_status': performance-schema-replication-applier-status-table. or note 'replication_connection_status': performance-schema-replication-connection-status-table. tables of the replication channel. 'Slave_running' is deprecated and is removed in MySQL 8.0.
'Slow_launch_threads'
The number of threads that have taken more than 'slow_launch_time' seconds to create.
This variable is not meaningful in the embedded server ('libmysqld') and as of MySQL 5.7.2 is no longer visible within the embedded server.
'Slow_queries'
The number of queries that have taken more than 'long_query_time' seconds. This counter increments regardless of whether the slow query log is enabled. For information about that log, see *note slow-query-log::.
'Sort_merge_passes'
The number of merge passes that the sort algorithm has had to do. If this value is large, you should consider increasing the value of the 'sort_buffer_size' system variable.
'Sort_range'
The number of sorts that were done using ranges.
'Sort_rows'
The number of sorted rows.
'Sort_scan'
The number of sorts that were done by scanning the table.
'Ssl_accept_renegotiates'
The number of negotiates needed to establish the connection.
'Ssl_accepts'
The number of accepted SSL connections.
'Ssl_callback_cache_hits'
The number of callback cache hits.
'Ssl_cipher'
The current encryption cipher (empty for unencrypted connections).
'Ssl_cipher_list'
The list of possible SSL ciphers (empty for non-SSL connections).
'Ssl_client_connects'
The number of SSL connection attempts to an SSL-enabled source.
'Ssl_connect_renegotiates'
The number of negotiates needed to establish the connection to an SSL-enabled source.
'Ssl_ctx_verify_depth'
The SSL context verification depth (how many certificates in the chain are tested).
'Ssl_ctx_verify_mode'
The SSL context verification mode.
'Ssl_default_timeout'
The default SSL timeout.
'Ssl_finished_accepts'
The number of successful SSL connections to the server.
'Ssl_finished_connects'
The number of successful replica connections to an SSL-enabled source.
'Ssl_server_not_after'
The last date for which the SSL certificate is valid. To check SSL certificate expiration information, use this statement:
mysql> SHOW STATUS LIKE 'Ssl_server_not%';
+-----------------------+--------------------------+
| Variable_name | Value |
+-----------------------+--------------------------+
| Ssl_server_not_after | Apr 28 14:16:39 2025 GMT |
| Ssl_server_not_before | May 1 14:16:39 2015 GMT |
+-----------------------+--------------------------+
'Ssl_server_not_before'
The first date for which the SSL certificate is valid.
'Ssl_session_cache_hits'
The number of SSL session cache hits.
'Ssl_session_cache_misses'
The number of SSL session cache misses.
'Ssl_session_cache_mode'
The SSL session cache mode.
'Ssl_session_cache_overflows'
The number of SSL session cache overflows.
'Ssl_session_cache_size'
The SSL session cache size.
'Ssl_session_cache_timeouts'
The number of SSL session cache timeouts.
'Ssl_sessions_reused'
This is equal to 0 if TLS was not used in the current MySQL session, or if a TLS session has not been reused; otherwise it is equal to 1.
'Ssl_sessions_reused' has session scope.
'Ssl_used_session_cache_entries'
How many SSL session cache entries were used.
'Ssl_verify_depth'
The verification depth for replication SSL connections.
'Ssl_verify_mode'
The verification mode used by the server for a connection that uses SSL. The value is a bitmask; bits are defined in the 'openssl/ssl.h' header file:
# define SSL_VERIFY_NONE 0x00
# define SSL_VERIFY_PEER 0x01
# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
# define SSL_VERIFY_CLIENT_ONCE 0x04
'SSL_VERIFY_PEER' indicates that the server asks for a client certificate. If the client supplies one, the server performs verification and proceeds only if verification is successful. 'SSL_VERIFY_CLIENT_ONCE' indicates that a request for the client certificate is done only in the initial handshake.
'Ssl_version'
The SSL protocol version of the connection (for example, TLSv1). If the connection is not encrypted, the value is empty.
'Table_locks_immediate'
The number of times that a request for a table lock could be granted immediately.
'Table_locks_waited'
The number of times that a request for a table lock could not be granted immediately and a wait was needed. If this is high and you have performance problems, you should first optimize your queries, and then either split your table or tables or use replication.
'Table_open_cache_hits'
The number of hits for open tables cache lookups.
'Table_open_cache_misses'
The number of misses for open tables cache lookups.
'Table_open_cache_overflows'
The number of overflows for the open tables cache. This is the number of times, after a table is opened or closed, a cache instance has an unused entry and the size of the instance is larger than 'table_open_cache' / 'table_open_cache_instances'.
'Tc_log_max_pages_used'
For the memory-mapped implementation of the log that is used by *note 'mysqld': mysqld. when it acts as the transaction coordinator for recovery of internal XA transactions, this variable indicates the largest number of pages used for the log since the server started. If the product of 'Tc_log_max_pages_used' and 'Tc_log_page_size' is always significantly less than the log size, the size is larger than necessary and can be reduced. (The size is set by the '--log-tc-size' option. This variable is unused: It is unneeded for binary log-based recovery, and the memory-mapped recovery log method is not used unless the number of storage engines that are capable of two-phase commit and that support XA transactions is greater than one. ('InnoDB' is the only applicable engine.)
'Tc_log_page_size'
The page size used for the memory-mapped implementation of the XA recovery log. The default value is determined using 'getpagesize()'. This variable is unused for the same reasons as described for 'Tc_log_max_pages_used'.
'Tc_log_page_waits'
For the memory-mapped implementation of the recovery log, this variable increments each time the server was not able to commit a transaction and had to wait for a free page in the log. If this value is large, you might want to increase the log size (with the '--log-tc-size' option). For binary log-based recovery, this variable increments each time the binary log cannot be closed because there are two-phase commits in progress. (The close operation waits until all such transactions are finished.)
'Threads_cached'
The number of threads in the thread cache.
This variable is not meaningful in the embedded server ('libmysqld') and as of MySQL 5.7.2 is no longer visible within the embedded server.
'Threads_connected'
The number of currently open connections.
'Threads_created'
The number of threads created to handle connections. If 'Threads_created' is big, you may want to increase the 'thread_cache_size' value. The cache miss rate can be calculated as 'Threads_created'/'Connections'.
'Threads_running'
The number of threads that are not sleeping.
'Uptime'
The number of seconds that the server has been up.
'Uptime_since_flush_status'
The number of seconds since the most recent 'FLUSH STATUS' statement.
File: manual.info.tmp, Node: sql-mode, Next: connection-management, Prev: server-status-variables, Up: mysqld-server
The MySQL server can operate in different SQL modes, and can apply these modes differently for different clients, depending on the value of the 'sql_mode' system variable. DBAs can set the global SQL mode to match site server operating requirements, and each application can set its session SQL mode to its own requirements.
Modes affect the SQL syntax MySQL supports and the data validation checks it performs. This makes it easier to use MySQL in different environments and to use MySQL together with other database servers.
*note sql-mode-setting::
*note sql-mode-important::
*note sql-mode-full::
*note sql-mode-combo::
*note sql-mode-strict::
*note ignore-strict-comparison::
*note sql-mode-changes::
For answers to questions often asked about server SQL modes in MySQL, see *note faqs-sql-modes::.
When working with 'InnoDB' tables, consider also the 'innodb_strict_mode' system variable. It enables additional error checks for 'InnoDB' tables.
Setting the SQL Mode
The default SQL mode in MySQL 5.7 includes these modes: 'ONLY_FULL_GROUP_BY', 'STRICT_TRANS_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_AUTO_CREATE_USER', and 'NO_ENGINE_SUBSTITUTION'.
These modes were added to the default SQL mode in MySQL 5.7: The 'ONLY_FULL_GROUP_BY' and 'STRICT_TRANS_TABLES' modes were added in MySQL 5.7.5. The 'NO_AUTO_CREATE_USER' mode was added in MySQL 5.7.7. The 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_ZERO_DATE', and 'NO_ZERO_IN_DATE' modes were added in MySQL 5.7.8. For additional discussion regarding these changes to the default SQL mode value, see *note sql-mode-changes::.
To set the SQL mode at server startup, use the '--sql-mode="MODES"' option on the command line, or 'sql-mode="MODES"' in an option file such as 'my.cnf' (Unix operating systems) or 'my.ini' (Windows). MODES is a list of different modes separated by commas. To clear the SQL mode explicitly, set it to an empty string using '--sql-mode=""' on the command line, or 'sql-mode=""' in an option file.
Note:
MySQL installation programs may configure the SQL mode during the installation process. If the SQL mode differs from the default or from what you expect, check for a setting in an option file that the server reads at startup.
To change the SQL mode at runtime, set the global or session 'sql_mode' system variable using a *note 'SET': set-variable. statement:
SET GLOBAL sql_mode = 'MODES';
SET SESSION sql_mode = 'MODES';
Setting the 'GLOBAL' variable requires the 'SUPER' privilege and affects the operation of all clients that connect from that time on. Setting the 'SESSION' variable affects only the current client. Each client can change its session 'sql_mode' value at any time.
To determine the current global or session 'sql_mode' setting, select its value:
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
Important:
SQL mode and user-defined partitioning
Changing the server SQL mode after creating and inserting data into partitioned tables can cause major changes in the behavior of such tables, and could lead to loss or corruption of data. It is strongly recommended that you never change the SQL mode once you have created tables employing user-defined partitioning.
When replicating partitioned tables, differing SQL modes on the source and replica can also lead to problems. For best results, you should always use the same server SQL mode on the source and replica.
For more information, see *note partitioning-limitations::.
The Most Important SQL Modes
The most important 'sql_mode' values are probably these:
'ANSI'
This mode changes syntax and behavior to conform more closely to standard SQL. It is one of the special combination modes listed at the end of this section.
'STRICT_TRANS_TABLES'
If a value could not be inserted as given into a transactional table, abort the statement. For a nontransactional table, abort the statement if the value occurs in a single-row statement or the first row of a multiple-row statement. More details are given later in this section.
As of MySQL 5.7.5, the default SQL mode includes 'STRICT_TRANS_TABLES'.
'TRADITIONAL'
Make MySQL behave like a 'traditional' SQL database system. A simple description of this mode is 'give an error instead of a warning' when inserting an incorrect value into a column. It is one of the special combination modes listed at the end of this section.
Note:
With 'TRADITIONAL' mode enabled, an note 'INSERT': insert. or note 'UPDATE': update. aborts as soon as an error occurs. If you are using a nontransactional storage engine, this may not be what you want because data changes made prior to the error may not be rolled back, resulting in a 'partially done' update.
When this manual refers to 'strict mode,' it means a mode with either or both 'STRICT_TRANS_TABLES' or 'STRICT_ALL_TABLES' enabled.
Full List of SQL Modes
The following list describes all supported SQL modes:
'ALLOW_INVALID_DATES'
Do not perform full checking of dates. Check only that the month is in the range from 1 to 12 and the day is in the range from 1 toWith 'ALLOW_INVALID_DATES' disabled, the server requires that month and day values be legal, and not merely in the range 1 to 12 and 1 to 31, respectively. With strict mode disabled, invalid dates such as ''2004-04-31'' are converted to ''0000-00-00'' and a warning is generated. With strict mode enabled, invalid dates generate an error. To permit such dates, enable 'ALLOW_INVALID_DATES'.
'ANSI_QUOTES'
Treat '"' as an identifier quote character (like the '' quote character) and not as a string quote character. You can still use '
' to quote identifiers with this mode enabled. With 'ANSI_QUOTES' enabled, you cannot use double quotation marks to quote literal strings because they are interpreted as identifiers.
'ERROR_FOR_DIVISION_BY_ZERO'
The 'ERROR_FOR_DIVISION_BY_ZERO' mode affects handling of division by zero, which includes 'MOD(N,0)'. For data-change operations (note 'INSERT': insert, note 'UPDATE': update.), its effect also depends on whether strict SQL mode is enabled.
* If this mode is not enabled, division by zero inserts 'NULL'
and produces no warning.
* If this mode is enabled, division by zero inserts 'NULL' and
produces a warning.
* If this mode and strict mode are enabled, division by zero
produces an error, unless 'IGNORE' is given as well. For
'INSERT IGNORE' and 'UPDATE IGNORE', division by zero inserts
'NULL' and produces a warning.
For *note 'SELECT': select, division by zero returns 'NULL'. Enabling 'ERROR_FOR_DIVISION_BY_ZERO' causes a warning to be produced as well, regardless of whether strict mode is enabled.
'ERROR_FOR_DIVISION_BY_ZERO' is deprecated. 'ERROR_FOR_DIVISION_BY_ZERO' is not part of strict mode, but should be used in conjunction with strict mode and is enabled by default. A warning occurs if 'ERROR_FOR_DIVISION_BY_ZERO' is enabled without also enabling strict mode or vice versa. For additional discussion, see *note sql-mode-changes::.
Because 'ERROR_FOR_DIVISION_BY_ZERO' is deprecated; expect it to be removed in a future release of MySQL as a separate mode name and its effect included in the effects of strict SQL mode.
'HIGH_NOT_PRECEDENCE'
The precedence of the 'NOT' operator is such that expressions such as 'NOT a BETWEEN b AND c' are parsed as 'NOT (a BETWEEN b AND c)'. In some older versions of MySQL, the expression was parsed as '(NOTBETWEEN b AND c'. The old higher-precedence behavior can be obtained by enabling the 'HIGH_NOT_PRECEDENCE' SQL mode.
mysql> SET sql_mode = ''; mysql> SELECT NOT 1 BETWEEN -5 AND 5; -> 0 mysql> SET sql_mode = 'HIGH_NOT_PRECEDENCE'; mysql> SELECT NOT 1 BETWEEN -5 AND 5; -> 1
'IGNORE_SPACE'
Permit spaces between a function name and the '(' character. This causes built-in function names to be treated as reserved words. As a result, identifiers that are the same as function names must be quoted as described in *note identifiers::. For example, because there is a 'COUNT()' function, the use of 'count' as a table name in the following statement causes an error:
mysql> CREATE TABLE count (i INT);
ERROR 1064 (42000): You have an error in your SQL syntax
The table name should be quoted:
mysql> CREATE TABLE `count` (i INT);
Query OK, 0 rows affected (0.00 sec)
The 'IGNORE_SPACE' SQL mode applies to built-in functions, not to loadable functions or stored functions. It is always permissible to have spaces after a loadable function or stored function name, regardless of whether 'IGNORE_SPACE' is enabled.
For further discussion of 'IGNORE_SPACE', see *note function-resolution::.
'NO_AUTO_CREATE_USER'
Prevent the *note 'GRANT': grant. statement from automatically creating new user accounts if it would otherwise do so, unless authentication information is specified. The statement must specify a nonempty password using 'IDENTIFIED BY' or an authentication plugin using 'IDENTIFIED WITH'.
It is preferable to create MySQL accounts with note 'CREATE USER': create-user. rather than note 'GRANT': grant. 'NO_AUTO_CREATE_USER' is deprecated and the default SQL mode includes 'NO_AUTO_CREATE_USER'. Assignments to 'sql_mode' that change the 'NO_AUTO_CREATE_USER' mode state produce a warning, except assignments that set 'sql_mode' to 'DEFAULT'. Expect 'NO_AUTO_CREATE_USER' to be be removed in a future release of MySQL, and its effect to be enabled at all times (and for *note 'GRANT': grant. not to create accounts any longer).
Previously, before 'NO_AUTO_CREATE_USER' was deprecated, one reason not to enable it was that it was not replication safe. Now it can be enabled and replication-safe user management performed with 'CREATE USER IF NOT EXISTS', 'DROP USER IF EXISTS', and 'ALTER USER IF EXISTS' rather than 'GRANT'. These statements enable safe replication when replicas may have different grants than those on the source. See note create-user::, note drop-user::, and *note alter-user::.
'NO_AUTO_VALUE_ON_ZERO'
'NO_AUTO_VALUE_ON_ZERO' affects handling of 'AUTO_INCREMENT' columns. Normally, you generate the next sequence number for the column by inserting either 'NULL' or '0' into it. 'NO_AUTO_VALUE_ON_ZERO' suppresses this behavior for '0' so that only 'NULL' generates the next sequence number.
This mode can be useful if '0' has been stored in a table's 'AUTO_INCREMENT' column. (Storing '0' is not a recommended practice, by the way.) For example, if you dump the table with note 'mysqldump': mysqldump. and then reload it, MySQL normally generates new sequence numbers when it encounters the '0' values, resulting in a table with contents different from the one that was dumped. Enabling 'NO_AUTO_VALUE_ON_ZERO' before reloading the dump file solves this problem. For this reason, note 'mysqldump': mysqldump. automatically includes in its output a statement that enables 'NO_AUTO_VALUE_ON_ZERO'.
'NO_BACKSLASH_ESCAPES'
Enabling this mode disables the use of the backslash character ('') as an escape character within strings and identifiers. With this mode enabled, backslash becomes an ordinary character like any other, and the default escape sequence for 'LIKE' expressions is changed so that no escape character is used.
'NO_DIR_IN_CREATE'
When creating a table, ignore all 'INDEX DIRECTORY' and 'DATA DIRECTORY' directives. This option is useful on replica replication servers.
'NO_ENGINE_SUBSTITUTION'
Control automatic substitution of the default storage engine when a statement such as note 'CREATE TABLE': create-table. or note 'ALTER TABLE': alter-table. specifies a storage engine that is disabled or not compiled in.
By default, 'NO_ENGINE_SUBSTITUTION' is enabled.
Because storage engines can be pluggable at runtime, unavailable engines are treated the same way:
With 'NO_ENGINE_SUBSTITUTION' disabled, for note 'CREATE TABLE': create-table. the default engine is used and a warning occurs if the desired engine is unavailable. For note 'ALTER TABLE': alter-table, a warning occurs and the table is not altered.
With 'NO_ENGINE_SUBSTITUTION' enabled, an error occurs and the table is not created or altered if the desired engine is unavailable.
'NO_FIELD_OPTIONS'
Do not print MySQL-specific column options in the output of note 'SHOW CREATE TABLE': show-create-table. This mode is used by note 'mysqldump': mysqldump. in portability mode.
Note:
As of MySQL 5.7.22, 'NO_FIELD_OPTIONS' is deprecated. It is removed in MySQL 8.0.
'NO_KEY_OPTIONS'
Do not print MySQL-specific index options in the output of note 'SHOW CREATE TABLE': show-create-table. This mode is used by note 'mysqldump': mysqldump. in portability mode.
Note:
As of MySQL 5.7.22, 'NO_KEY_OPTIONS' is deprecated. It is removed in MySQL 8.0.
'NO_TABLE_OPTIONS'
Do not print MySQL-specific table options (such as 'ENGINE') in the output of note 'SHOW CREATE TABLE': show-create-table. This mode is used by note 'mysqldump': mysqldump. in portability mode.
Note:
As of MySQL 5.7.22, 'NO_TABLE_OPTIONS' is deprecated. It is removed in MySQL 8.0.
'NO_UNSIGNED_SUBTRACTION'
Subtraction between integer values, where one is of type 'UNSIGNED', produces an unsigned result by default. If the result would otherwise have been negative, an error results:
mysql> SET sql_mode = '';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT CAST(0 AS UNSIGNED) - 1;
ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in '(cast(0 as unsigned) - 1)'
If the 'NO_UNSIGNED_SUBTRACTION' SQL mode is enabled, the result is negative:
mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
mysql> SELECT CAST(0 AS UNSIGNED) - 1;
+-------------------------+
| CAST(0 AS UNSIGNED) - 1 |
+-------------------------+
| -1 |
+-------------------------+
If the result of such an operation is used to update an 'UNSIGNED' integer column, the result is clipped to the maximum value for the column type, or clipped to 0 if 'NO_UNSIGNED_SUBTRACTION' is enabled. With strict SQL mode enabled, an error occurs and the column remains unchanged.
When 'NO_UNSIGNED_SUBTRACTION' is enabled, the subtraction result is signed, even if any operand is unsigned. For example, compare the type of column 'c2' in table 't1' with that of column 'c2' in table 't2':
mysql> SET sql_mode='';
mysql> CREATE TABLE test (c1 BIGINT UNSIGNED NOT NULL);
mysql> CREATE TABLE t1 SELECT c1 - 1 AS c2 FROM test;
mysql> DESCRIBE t1;
+-------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| c2 | bigint(21) unsigned | NO | | 0 | |
+-------+---------------------+------+-----+---------+-------+
mysql> SET sql_mode='NO_UNSIGNED_SUBTRACTION';
mysql> CREATE TABLE t2 SELECT c1 - 1 AS c2 FROM test;
mysql> DESCRIBE t2;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| c2 | bigint(21) | NO | | 0 | |
+-------+------------+------+-----+---------+-------+
This means that 'BIGINT UNSIGNED' is not 100% usable in all contexts. See *note cast-functions::.
'NO_ZERO_DATE'
The 'NO_ZERO_DATE' mode affects whether the server permits ''0000-00-00'' as a valid date. Its effect also depends on whether strict SQL mode is enabled.
* If this mode is not enabled, ''0000-00-00'' is permitted and
inserts produce no warning.
* If this mode is enabled, ''0000-00-00'' is permitted and
inserts produce a warning.
* If this mode and strict mode are enabled, ''0000-00-00'' is
not permitted and inserts produce an error, unless 'IGNORE' is
given as well. For 'INSERT IGNORE' and 'UPDATE IGNORE',
''0000-00-00'' is permitted and inserts produce a warning.
'NO_ZERO_DATE' is deprecated. 'NO_ZERO_DATE' is not part of strict mode, but should be used in conjunction with strict mode and is enabled by default. A warning occurs if 'NO_ZERO_DATE' is enabled without also enabling strict mode or vice versa. For additional discussion, see *note sql-mode-changes::.
Because 'NO_ZERO_DATE' is deprecated; expect it to be removed in a future release of MySQL as a separate mode name and its effect included in the effects of strict SQL mode.
'NO_ZERO_IN_DATE'
The 'NO_ZERO_IN_DATE' mode affects whether the server permits dates in which the year part is nonzero but the month or day part is 0. (This mode affects dates such as ''2010-00-01'' or ''2010-01-00'', but not ''0000-00-00''. To control whether the server permits ''0000-00-00'', use the 'NO_ZERO_DATE' mode.) The effect of 'NO_ZERO_IN_DATE' also depends on whether strict SQL mode is enabled.
* If this mode is not enabled, dates with zero parts are
permitted and inserts produce no warning.
* If this mode is enabled, dates with zero parts are inserted as
''0000-00-00'' and produce a warning.
* If this mode and strict mode are enabled, dates with zero
parts are not permitted and inserts produce an error, unless
'IGNORE' is given as well. For 'INSERT IGNORE' and 'UPDATE
IGNORE', dates with zero parts are inserted as ''0000-00-00''
and produce a warning.
'NO_ZERO_IN_DATE' is deprecated. 'NO_ZERO_IN_DATE' is not part of strict mode, but should be used in conjunction with strict mode and is enabled by default. A warning occurs if 'NO_ZERO_IN_DATE' is enabled without also enabling strict mode or vice versa. For additional discussion, see *note sql-mode-changes::.
Because 'NO_ZERO_IN_DATE' is deprecated; expect it to be removed in a future release of MySQL as a separate mode name and its effect included in the effects of strict SQL mode.
'ONLY_FULL_GROUP_BY'
Reject queries for which the select list, 'HAVING' condition, or 'ORDER BY' list refer to nonaggregated columns that are neither named in the 'GROUP BY' clause nor are functionally dependent on (uniquely determined by) 'GROUP BY' columns.
As of MySQL 5.7.5, the default SQL mode includes 'ONLY_FULL_GROUP_BY'. (Before 5.7.5, MySQL does not detect functional dependency and 'ONLY_FULL_GROUP_BY' is not enabled by default.)
A MySQL extension to standard SQL permits references in the 'HAVING' clause to aliased expressions in the select list. Before MySQL 5.7.5, enabling 'ONLY_FULL_GROUP_BY' disables this extension, thus requiring the 'HAVING' clause to be written using unaliased expressions. As of MySQL 5.7.5, this restriction is lifted so that the 'HAVING' clause can refer to aliases regardless of whether 'ONLY_FULL_GROUP_BY' is enabled.
For additional discussion and examples, see *note group-by-handling::.
'PAD_CHAR_TO_FULL_LENGTH'
By default, trailing spaces are trimmed from note 'CHAR': char. column values on retrieval. If 'PAD_CHAR_TO_FULL_LENGTH' is enabled, trimming does not occur and retrieved note 'CHAR': char. values are padded to their full length. This mode does not apply to *note 'VARCHAR': char. columns, for which trailing spaces are retained on retrieval.
mysql> CREATE TABLE t1 (c1 CHAR(10));
Query OK, 0 rows affected (0.37 sec)
mysql> INSERT INTO t1 (c1) VALUES('xy');
Query OK, 1 row affected (0.01 sec)
mysql> SET sql_mode = '';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT c1, CHAR_LENGTH(c1) FROM t1;
+------+-----------------+
| c1 | CHAR_LENGTH(c1) |
+------+-----------------+
| xy | 2 |
+------+-----------------+
1 row in set (0.00 sec)
mysql> SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT c1, CHAR_LENGTH(c1) FROM t1;
+------------+-----------------+
| c1 | CHAR_LENGTH(c1) |
+------------+-----------------+
| xy | 10 |
+------------+-----------------+
1 row in set (0.00 sec)
'PIPES_AS_CONCAT'
Treat '||' as a string concatenation operator (same as 'CONCAT()') rather than as a synonym for 'OR'.
'REAL_AS_FLOAT'
Treat note 'REAL': floating-point-types. as a synonym for note 'FLOAT': floating-point-types. By default, MySQL treats note 'REAL': floating-point-types. as a synonym for note 'DOUBLE': floating-point-types.
'STRICT_ALL_TABLES'
Enable strict SQL mode for all storage engines. Invalid data values are rejected. For details, see *note sql-mode-strict::.
From MySQL 5.7.4 through 5.7.7, 'STRICT_ALL_TABLES' includes the effect of the 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_ZERO_DATE', and 'NO_ZERO_IN_DATE' modes. For additional discussion, see *note sql-mode-changes::.
'STRICT_TRANS_TABLES'
Enable strict SQL mode for transactional storage engines, and when possible for nontransactional storage engines. For details, see *note sql-mode-strict::.
From MySQL 5.7.4 through 5.7.7, 'STRICT_TRANS_TABLES' includes the effect of the 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_ZERO_DATE', and 'NO_ZERO_IN_DATE' modes. For additional discussion, see *note sql-mode-changes::.
Combination SQL Modes
The following special modes are provided as shorthand for combinations of mode values from the preceding list.
'ANSI'
Equivalent to 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', and (as of MySQL 5.7.5) 'ONLY_FULL_GROUP_BY'.
'ANSI' mode also causes the server to return an error for queries where a set function S with an outer reference 'S(OUTER_REF)' cannot be aggregated in the outer query against which the outer reference has been resolved. This is such a query:
SELECT * FROM t1 WHERE t1.a IN (SELECT MAX(t1.b) FROM t2 WHERE ...);
Here, 'MAX(t1.b)' cannot aggregated in the outer query because it appears in the 'WHERE' clause of that query. Standard SQL requires an error in this situation. If 'ANSI' mode is not enabled, the server treats 'S(OUTER_REF)' in such queries the same way that it would interpret 'S(CONST)'.
See *note compatibility::.
'DB2'
Equivalent to 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS'.
Note:
As of MySQL 5.7.22, 'DB2' is deprecated. It is removed in MySQL 8.0.
'MAXDB'
Equivalent to 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'NO_AUTO_CREATE_USER'.
Note:
As of MySQL 5.7.22, 'MAXDB' is deprecated. It is removed in MySQL 8.0.
'MSSQL'
Equivalent to 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS'.
Note:
As of MySQL 5.7.22, 'MSSQL' is deprecated. It is removed in MySQL 8.0.
'MYSQL323'
Equivalent to 'MYSQL323', 'HIGH_NOT_PRECEDENCE'. This means 'HIGH_NOT_PRECEDENCE' plus some *note 'SHOW CREATE TABLE': show-create-table. behaviors specific to 'MYSQL323':
* *note 'TIMESTAMP': datetime. column display does not include
'DEFAULT' or 'ON UPDATE' attributes.
* String column display does not include character set and
collation attributes. For *note 'CHAR': char. and *note
'VARCHAR': char. columns, if the collation is binary, 'BINARY'
is appended to the column type.
* The 'ENGINE=ENGINE_NAME' table option displays as
'TYPE=ENGINE_NAME'.
* For *note 'MEMORY': memory-storage-engine. tables, the storage
engine is displayed as 'HEAP'.
Note:
As of MySQL 5.7.22, 'MYSQL323' is deprecated. It is removed in MySQL 8.0.
'MYSQL40'
Equivalent to 'MYSQL40', 'HIGH_NOT_PRECEDENCE'. This means 'HIGH_NOT_PRECEDENCE' plus some behaviors specific to 'MYSQL40'. These are the same as for 'MYSQL323', except that note 'SHOW CREATE TABLE': show-create-table. does not display 'HEAP' as the storage engine for note 'MEMORY': memory-storage-engine. tables.
Note:
As of MySQL 5.7.22, 'MYSQL40' is deprecated. It is removed in MySQL 8.0.
'ORACLE'
Equivalent to 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'NO_AUTO_CREATE_USER'.
Note:
As of MySQL 5.7.22, 'ORACLE' is deprecated. It is removed in MySQL 8.0.
'POSTGRESQL'
Equivalent to 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS'.
Note:
As of MySQL 5.7.22, 'POSTGRESQL' is deprecated. It is removed in MySQL 8.0.
'TRADITIONAL'
Before MySQL 5.7.4, and in MySQL 5.7.8 and later, 'TRADITIONAL' is equivalent to 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_AUTO_CREATE_USER', and 'NO_ENGINE_SUBSTITUTION'.
From MySQL 5.7.4 though 5.7.7, 'TRADITIONAL' is equivalent to 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_AUTO_CREATE_USER', and 'NO_ENGINE_SUBSTITUTION'. The 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', and 'ERROR_FOR_DIVISION_BY_ZERO' modes are not named because in those versions their effects are included in the effects of strict SQL mode ('STRICT_ALL_TABLES' or 'STRICT_TRANS_TABLES'). Thus, the effects of 'TRADITIONAL' are the same in all MySQL 5.7 versions (and the same as in MySQL 5.6). For additional discussion, see *note sql-mode-changes::.
Strict SQL Mode
Strict mode controls how MySQL handles invalid or missing values in data-change statements such as note 'INSERT': insert. or note 'UPDATE': update. A value can be invalid for several reasons. For example, it might have the wrong data type for the column, or it might be out of range. A value is missing when a new row to be inserted does not contain a value for a non-'NULL' column that has no explicit 'DEFAULT' clause in its definition. (For a 'NULL' column, 'NULL' is inserted if the value is missing.) Strict mode also affects DDL statements such as *note 'CREATE TABLE': create-table.
If strict mode is not in effect, MySQL inserts adjusted values for invalid or missing values and produces warnings (see note show-warnings::). In strict mode, you can produce this behavior by using note 'INSERT IGNORE': insert. or *note 'UPDATE IGNORE': update.
For statements such as *note 'SELECT': select. that do not change data, invalid values generate a warning in strict mode, not an error.
Strict mode produces an error for attempts to create a key that exceeds the maximum key length. When strict mode is not enabled, this results in a warning and truncation of the key to the maximum key length.
Strict mode does not affect whether foreign key constraints are checked. 'foreign_key_checks' can be used for that. (See *note server-system-variables::.)
Strict SQL mode is in effect if either 'STRICT_ALL_TABLES' or 'STRICT_TRANS_TABLES' is enabled, although the effects of these modes differ somewhat:
For transactional tables, an error occurs for invalid or missing values in a data-change statement when either 'STRICT_ALL_TABLES' or 'STRICT_TRANS_TABLES' is enabled. The statement is aborted and rolled back.
For nontransactional tables, the behavior is the same for either mode if the bad value occurs in the first row to be inserted or updated: The statement is aborted and the table remains unchanged. If the statement inserts or modifies multiple rows and the bad value occurs in the second or later row, the result depends on which strict mode is enabled:
* For 'STRICT_ALL_TABLES', MySQL returns an error and ignores
the rest of the rows. However, because the earlier rows have
been inserted or updated, the result is a partial update. To
avoid this, use single-row statements, which can be aborted
without changing the table.
* For 'STRICT_TRANS_TABLES', MySQL converts an invalid value to
the closest valid value for the column and inserts the
adjusted value. If a value is missing, MySQL inserts the
implicit default value for the column data type. In either
case, MySQL generates a warning rather than an error and
continues processing the statement. Implicit defaults are
described in *note data-type-defaults::.
Strict mode affects handling of division by zero, zero dates, and zeros in dates as follows:
Strict mode affects handling of division by zero, which includes 'MOD(N,0)':
For data-change operations (note 'INSERT': insert, note 'UPDATE': update.):
* If strict mode is not enabled, division by zero inserts 'NULL'
and produces no warning.
* If strict mode is enabled, division by zero produces an error,
unless 'IGNORE' is given as well. For 'INSERT IGNORE' and
'UPDATE IGNORE', division by zero inserts 'NULL' and produces
a warning.
For *note 'SELECT': select, division by zero returns 'NULL'. Enabling strict mode causes a warning to be produced as well.
Strict mode affects whether the server permits ''0000-00-00'' as a valid date:
* If strict mode is not enabled, ''0000-00-00'' is permitted and
inserts produce no warning.
* If strict mode is enabled, ''0000-00-00'' is not permitted and
inserts produce an error, unless 'IGNORE' is given as well.
For 'INSERT IGNORE' and 'UPDATE IGNORE', ''0000-00-00'' is
permitted and inserts produce a warning.
Strict mode affects whether the server permits dates in which the year part is nonzero but the month or day part is 0 (dates such as ''2010-00-01'' or ''2010-01-00''):
* If strict mode is not enabled, dates with zero parts are
permitted and inserts produce no warning.
* If strict mode is enabled, dates with zero parts are not
permitted and inserts produce an error, unless 'IGNORE' is
given as well. For 'INSERT IGNORE' and 'UPDATE IGNORE', dates
with zero parts are inserted as ''0000-00-00'' (which is
considered valid with 'IGNORE') and produce a warning.
For more information about strict mode with respect to 'IGNORE', see *note ignore-strict-comparison::.
Before MySQL 5.7.4, and in MySQL 5.7.8 and later, strict mode affects handling of division by zero, zero dates, and zeros in dates in conjunction with the 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_ZERO_DATE', and 'NO_ZERO_IN_DATE' modes. From MySQL 5.7.4 though 5.7.7, the 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_ZERO_DATE', and 'NO_ZERO_IN_DATE' modes do nothing when named explicitly and their effects are included in the effects of strict mode. For additional discussion, see *note sql-mode-changes::.
Comparison of the IGNORE Keyword and Strict SQL Mode
This section compares the effect on statement execution of the 'IGNORE' keyword (which downgrades errors to warnings) and strict SQL mode (which upgrades warnings to errors). It describes which statements they affect, and which errors they apply to.
The following table presents a summary comparison of statement behavior when the default is to produce an error versus a warning. An example of when the default is to produce an error is inserting a 'NULL' into a 'NOT NULL' column. An example of when the default is to produce a warning is inserting a value of the wrong data type into a column (such as inserting the string ''abc'' into an integer column).
Operational Mode When Statement Default When Statement Default is Error is Warning
Without 'IGNORE' or strict SQL mode
Error Warning
With 'IGNORE'
Warning Warning (same as without 'IGNORE' or strict SQL mode)
With strict SQL mode
Error (same as without Error 'IGNORE' or strict SQL
mode)
With 'IGNORE' and strict SQL mode
Warning Warning
One conclusion to draw from the table is that when the 'IGNORE' keyword and strict SQL mode are both in effect, 'IGNORE' takes precedence. This means that, although 'IGNORE' and strict SQL mode can be considered to have opposite effects on error handling, they do not cancel when used together.
*note ignore-effect-on-execution::
*note strict-sql-mode-effect-on-execution::
The Effect of IGNORE on Statement Execution
Several statements in MySQL support an optional 'IGNORE' keyword. This keyword causes the server to downgrade certain types of errors and generate warnings instead. For a multiple-row statement, downgrading an error to a warning may enable a row to be processed. Otherwise, 'IGNORE' causes the statement to skip to the next row instead of aborting. (For nonignorable errors, an error occurs regardless of the 'IGNORE' keyword.)
Example: If the table 't' has a primary key column 'i' containing unique values, attempting to insert the same value of 'i' into multiple rows normally produces a duplicate-key error:
mysql> CREATE TABLE t (i INT NOT NULL PRIMARY KEY);
mysql> INSERT INTO t (i) VALUES(1),(1);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
With 'IGNORE', the row containing the duplicate key still is not inserted, but a warning occurs instead of an error:
mysql> INSERT IGNORE INTO t (i) VALUES(1),(1);
Query OK, 1 row affected, 1 warning (0.01 sec)
Records: 2 Duplicates: 1 Warnings: 1
mysql> SHOW WARNINGS;
+---------+------+---------------------------------------+
| Level | Code | Message |
+---------+------+---------------------------------------+
| Warning | 1062 | Duplicate entry '1' for key 'PRIMARY' |
+---------+------+---------------------------------------+
1 row in set (0.00 sec)
Example: If the table 't2' has a 'NOT NULL' column 'id', attempting to insert 'NULL' produces an error in strict SQL mode:
mysql> CREATE TABLE t2 (id INT NOT NULL);
mysql> INSERT INTO t2 (id) VALUES(1),(NULL),(3);
ERROR 1048 (23000): Column 'id' cannot be null
mysql> SELECT * FROM t2;
Empty set (0.00 sec)
If the SQL mode is not strict, 'IGNORE' causes the 'NULL' to be inserted as the column implicit default (0 in this case), which enables the row to be handled without skipping it:
mysql> INSERT INTO t2 (id) VALUES(1),(NULL),(3);
mysql> SELECT * FROM t2;
+----+
| id |
+----+
| 1 |
| 0 |
| 3 |
+----+
These statements support the 'IGNORE' keyword:
note 'CREATE TABLE ... SELECT': create-table.: 'IGNORE' does not apply to the note 'CREATE TABLE': create-table. or note 'SELECT': select. parts of the statement but to inserts into the table of rows produced by the note 'SELECT': select. Rows that duplicate an existing row on a unique key value are discarded.
*note 'DELETE': delete.: 'IGNORE' causes MySQL to ignore errors during the process of deleting rows.
*note 'INSERT': insert.: With 'IGNORE', rows that duplicate an existing row on a unique key value are discarded. Rows set to values that would cause data conversion errors are set to the closest valid values instead.
For partitioned tables where no partition matching a given value is found, 'IGNORE' causes the insert operation to fail silently for rows containing the unmatched value.
note 'LOAD DATA': load-data, note 'LOAD XML': load-xml.: With 'IGNORE', rows that duplicate an existing row on a unique key value are discarded.
*note 'UPDATE': update.: With 'IGNORE', rows for which duplicate-key conflicts occur on a unique key value are not updated. Rows updated to values that would cause data conversion errors are updated to the closest valid values instead.
The 'IGNORE' keyword applies to the following ignorable errors:
'ER_BAD_NULL_ERROR' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_bad_null_error)
'ER_DUP_ENTRY' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_dup_entry)
'ER_DUP_ENTRY_WITH_KEY_NAME' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_dup_entry_with_key_name)
'ER_DUP_KEY' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_dup_key)
'ER_NO_PARTITION_FOR_GIVEN_VALUE' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_no_partition_for_given_value)
'ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_no_partition_for_given_value_silent)
'ER_NO_REFERENCED_ROW_2' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_no_referenced_row_2)
'ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_row_does_not_match_given_partition_set)
'ER_ROW_IS_REFERENCED_2' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_row_is_referenced_2)
'ER_SUBQUERY_NO_1_ROW' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_subquery_no_1_row)
'ER_VIEW_CHECK_FAILED' (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_view_check_failed)
The Effect of Strict SQL Mode on Statement Execution
The MySQL server can operate in different SQL modes, and can apply these modes differently for different clients, depending on the value of the 'sql_mode' system variable. In 'strict' SQL mode, the server upgrades certain warnings to errors.
For example, in non-strict SQL mode, inserting the string ''abc'' into an integer column results in conversion of the value to 0 and a warning:
mysql> SET sql_mode = '';
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO t (i) VALUES('abc');
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> SHOW WARNINGS;
+---------+------+--------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------------+
| Warning | 1366 | Incorrect integer value: 'abc' for column 'i' at row 1 |
+---------+------+--------------------------------------------------------+
1 row in set (0.00 sec)
In strict SQL mode, the invalid value is rejected with an error:
mysql> SET sql_mode = 'STRICT_ALL_TABLES';
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO t (i) VALUES('abc');
ERROR 1366 (HY000): Incorrect integer value: 'abc' for column 'i' at row 1
For more information about possible settings of the 'sql_mode' system variable, see *note sql-mode::.
Strict SQL mode applies to the following statements under conditions for which some value might be out of range or an invalid row is inserted into or deleted from a table:
*note 'ALTER TABLE': alter-table.
*note 'CREATE TABLE': create-table.
*note 'CREATE TABLE ... SELECT': create-table.
*note 'DELETE': delete. (both single table and multiple table)
*note 'INSERT': insert.
*note 'LOAD DATA': load-data.
*note 'LOAD XML': load-xml.
*note 'SELECT SLEEP()': select.
*note 'UPDATE': update. (both single table and multiple table)
Within stored programs, individual statements of the types just listed execute in strict SQL mode if the program was defined while strict mode was in effect.
Strict SQL mode applies to the following errors, which represent a class of errors in which an input value is either invalid or missing. A value is invalid if it has the wrong data type for the column or might be out of range. A value is missing if a new row to be inserted does not contain a value for a 'NOT NULL' column that has no explicit 'DEFAULT' clause in its definition.
ER_BAD_NULL_ERROR (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_bad_null_error)
ER_CUT_VALUE_GROUP_CONCAT (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_cut_value_group_concat)
ER_DATA_TOO_LONG (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_data_too_long)
ER_DATETIME_FUNCTION_OVERFLOW (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_datetime_function_overflow)
ER_DIVISION_BY_ZERO (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_division_by_zero)
ER_INVALID_ARGUMENT_FOR_LOGARITHM (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_invalid_argument_for_logarithm)
ER_NO_DEFAULT_FOR_FIELD (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_no_default_for_field)
ER_NO_DEFAULT_FOR_VIEW_FIELD (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_no_default_for_view_field)
ER_TOO_LONG_KEY (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_too_long_key)
ER_TRUNCATED_WRONG_VALUE (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_truncated_wrong_value)
ER_TRUNCATED_WRONG_VALUE_FOR_FIELD (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_truncated_wrong_value_for_field)
ER_WARN_DATA_OUT_OF_RANGE (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_warn_data_out_of_range)
ER_WARN_NULL_TO_NOTNULL (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_warn_null_to_notnull)
ER_WARN_TOO_FEW_RECORDS (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_warn_too_few_records)
ER_WRONG_ARGUMENTS (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_wrong_arguments)
ER_WRONG_VALUE_FOR_TYPE (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_er_wrong_value_for_type)
WARN_DATA_TRUNCATED (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html#error_warn_data_truncated)
Note:
Because continued MySQL development defines new errors, there may be errors not in the preceding list to which strict SQL mode applies.
SQL Mode Changes in MySQL 5.7
In MySQL 5.7.22, these SQL modes are deprecated and are removed in MySQL 8.0: 'DB2', 'MAXDB', 'MSSQL', 'MYSQL323', 'MYSQL40', 'ORACLE', 'POSTGRESQL', 'NO_FIELD_OPTIONS', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS'.
In MySQL 5.7, the 'ONLY_FULL_GROUP_BY' SQL mode is enabled by default because 'GROUP BY' processing has become more sophisticated to include detection of functional dependencies. However, if you find that having 'ONLY_FULL_GROUP_BY' enabled causes queries for existing applications to be rejected, either of these actions should restore operation:
If it is possible to modify an offending query, do so, either so that nonaggregated columns are functionally dependent on 'GROUP BY' columns, or by referring to nonaggregated columns using 'ANY_VALUE()'.
If it is not possible to modify an offending query (for example, if it is generated by a third-party application), set the 'sql_mode' system variable at server startup to not enable 'ONLY_FULL_GROUP_BY'.
In MySQL 5.7, the 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_ZERO_DATE', and 'NO_ZERO_IN_DATE' SQL modes are deprecated. The long term plan is to have the three modes be included in strict SQL mode and to remove them as explicit modes in a future release of MySQL. For compatibility in MySQL 5.7 with MySQL 5.6 strict mode and to provide additional time for affected applications to be modified, the following behaviors apply:
'ERROR_FOR_DIVISION_BY_ZERO', 'NO_ZERO_DATE', and 'NO_ZERO_IN_DATE' are not part of strict SQL mode, but it is intended that they be used together with strict mode. As a reminder, a warning occurs if they are enabled without also enabling strict mode or vice versa.
'ERROR_FOR_DIVISION_BY_ZERO', 'NO_ZERO_DATE', and 'NO_ZERO_IN_DATE' are enabled by default.
With the preceding changes, stricter data checking is still enabled by default, but the individual modes can be disabled in environments where it is currently desirable or necessary to do so.
File: manual.info.tmp, Node: connection-management, Next: ipv6-support, Prev: sql-mode, Up: mysqld-server
Menu:
host-cache:: DNS Lookups and the Host Cache
This section describes how MySQL Server manages connections. This includes a description of the available connection interfaces, how the server uses connection handler threads, details about the administrative connection interface, and management of DNS lookups.
File: manual.info.tmp, Node: connection-interfaces, Next: host-cache, Prev: connection-management, Up: connection-management
5.1.11.1 Connection Interfaces ..............................
This section describes aspects of how the MySQL server manages client connections.
*note connection-interfaces-interfaces::
*note connection-interfaces-thread-management::
*note connection-interfaces-volume-management::
Network Interfaces and Connection Manager Threads
The server is capable of listening for client connections on multiple network interfaces. Connection manager threads handle client connection requests on the network interfaces that the server listens to:
On all platforms, one manager thread handles TCP/IP connection requests.
On Unix, the same manager thread also handles Unix socket file connection requests.
On Windows, one manager thread handles shared-memory connection requests, and another handles named-pipe connection requests.
The server does not create threads to handle interfaces that it does not listen to. For example, a Windows server that does not have support for named-pipe connections enabled does not create a thread to handle them.
Individual server plugins or components may implement their own connection interface:
Client Connection Thread Management
Connection manager threads associate each client connection with a thread dedicated to it that handles authentication and request processing for that connection. Manager threads create a new thread when necessary but try to avoid doing so by consulting the thread cache first to see whether it contains a thread that can be used for the connection. When a connection ends, its thread is returned to the thread cache if the cache is not full.
In this connection thread model, there are as many threads as there are clients currently connected, which has some disadvantages when server workload must scale to handle large numbers of connections. For example, thread creation and disposal becomes expensive. Also, each thread requires server and kernel resources, such as stack space. To accommodate a large number of simultaneous connections, the stack size per thread must be kept small, leading to a situation where it is either too small or the server consumes large amounts of memory. Exhaustion of other resources can occur as well, and scheduling overhead can become significant.
MySQL Enterprise Edition includes a thread pool plugin that provides an alternative thread-handling model designed to reduce overhead and improve performance. It implements a thread pool that increases server performance by efficiently managing statement execution threads for large numbers of client connections. See *note thread-pool::.
To control and monitor how the server manages threads that handle client connections, several system and status variables are relevant. (See note server-system-variables::, and note server-status-variables::.)
The 'thread_cache_size' system variable determines the thread cache size. By default, the server autosizes the value at startup, but it can be set explicitly to override this default. A value of 0 disables caching, which causes a thread to be set up for each new connection and disposed of when the connection terminates. To enable N inactive connection threads to be cached, set 'thread_cache_size' to N at server startup or at runtime. A connection thread becomes inactive when the client connection with which it was associated terminates.
To monitor the number of threads in the cache and how many threads have been created because a thread could not be taken from the cache, check the 'Threads_cached' and 'Threads_created' status variables.
When the thread stack is too small, this limits the complexity of the SQL statements the server can handle, the recursion depth of stored procedures, and other memory-consuming actions. To set a stack size of N bytes for each thread, start the server with 'thread_stack' set to N.
Connection Volume Management
To control the maximum number of clients the server permits to connect simultaneously, set the 'max_connections' system variable at server startup or at runtime. It may be necessary to increase 'max_connections' if more clients attempt to connect simultaneously then the server is configured to handle (see *note too-many-connections::).
note 'mysqld': mysqld. actually permits 'max_connections' + 1 client connections. The extra connection is reserved for use by accounts that have the 'SUPER' privilege. By granting the privilege to administrators and not to normal users (who should not need it), an administrator who also has the 'PROCESS' privilege can connect to the server and use note 'SHOW PROCESSLIST': show-processlist. to diagnose problems even if the maximum number of unprivileged clients are connected. See *note show-processlist::.
If the server refuses a connection because the 'max_connections' limit is reached, it increments the 'Connection_errors_max_connections' status variable.
The maximum number of connections MySQL supports (that is, the maximum value to which 'max_connections' can be set) depends on several factors:
The quality of the thread library on a given platform.
The amount of RAM available.
The amount of RAM is used for each connection.
The workload from each connection.
The desired response time.
The number of file descriptors available.
Linux or Solaris should be able to support at least 500 to 1000 simultaneous connections routinely and as many as 10,000 connections if you have many gigabytes of RAM available and the workload from each is low or the response time target undemanding.
Increasing the 'max_connections' value increases the number of file descriptors that note 'mysqld': mysqld. requires. If the required number of descriptors are not available, the server reduces the value of 'max_connections'. For comments on file descriptor limits, see note table-cache::.
Increasing the 'open_files_limit' system variable may be necessary, which may also require raising the operating system limit on how many file descriptors can be used by MySQL. Consult your operating system documentation to determine whether it is possible to increase the limit and how to do so. See also *note not-enough-file-handles::.
File: manual.info.tmp, Node: host-cache, Prev: connection-interfaces, Up: connection-management
5.1.11.2 DNS Lookups and the Host Cache .......................................
The MySQL server maintains an in-memory host cache that contains information about clients: IP address, host name, and error information. The Performance Schema note 'host_cache': performance-schema-host-cache-table. table exposes the contents of the host cache so that it can be examined using note 'SELECT': select. statements. This may help you diagnose the causes of connection problems. See *note performance-schema-host-cache-table::.
The following sections discuss how the host cache works, as well as other topics such as how to configure and monitor the cache.
*note host-cache-operation::
*note host-cache-configuration::
*note host-cache-monitoring::
*note host-cache-flushing::
*note blocked-host::
Host Cache Operation
The server uses the host cache only for non-localhost TCP connections. It does not use the cache for TCP connections established using a loopback interface address (for example, '127.0.0.1' or '::1'), or for connections established using a Unix socket file, named pipe, or shared memory.
The server uses the host cache for several purposes:
By caching the results of IP-to-host name lookups, the server avoids doing a Domain Name System (DNS) lookup for each client connection. Instead, for a given host, it needs to perform a lookup only for the first connection from that host.
The cache contains information about errors that occur during the client connection process. Some errors are considered 'blocking.' If too many of these occur successively from a given host without a successful connection, the server blocks further connections from that host. The 'max_connect_errors' system variable determines the permitted number of successive errors before blocking occurs.
For each applicable new client connection, the server uses the client IP address to check whether the client host name is in the host cache. If so, the server refuses or continues to process the connection request depending on whether or not the host is blocked. If the host is not in the cache, the server attempts to resolve the host name. First, it resolves the IP address to a host name and resolves that host name back to an IP address. Then it compares the result to the original IP address to ensure that they are the same. The server stores information about the result of this operation in the host cache. If the cache is full, the least recently used entry is discarded.
The server performs host name resolution using the 'getaddrinfo()' system call.
The server handles entries in the host cache like this:
When the first TCP client connection reaches the server from a given IP address, a new cache entry is created to record the client IP, host name, and client lookup validation flag. Initially, the host name is set to 'NULL' and the flag is false. This entry is also used for subsequent client TCP connections from the same originating IP.
If the validation flag for the client IP entry is false, the server attempts an IP-to-host name-to-IP DNS resolution. If that is successful, the host name is updated with the resolved host name and the validation flag is set to true. If resolution is unsuccessful, the action taken depends on whether the error is permanent or transient. For permanent failures, the host name remains 'NULL' and the validation flag is set to true. For transient failures, the host name and validation flag remain unchanged. (In this case, another DNS resolution attempt occurs the next time a client connects from this IP.)
If an error occurs while processing an incoming client connection from a given IP address, the server updates the corresponding error counters in the entry for that IP. For a description of the errors recorded, see *note performance-schema-host-cache-table::.
To unblock blocked hosts, flush the host cache; see *note blocked-host::.
It is possible for a blocked host to become unblocked even without flushing the host cache if activity from other hosts occurs:
If the cache is full when a connection arrives from a client IP not in the cache, the server discards the least recently used cache entry to make room for the new entry.
If the discarded entry is for a blocked host, that host becomes unblocked.
Some connection errors are not associated with TCP connections, occur very early in the connection process (even before an IP address is known), or are not specific to any particular IP address (such as out-of-memory conditions). For information about these errors, check the 'Connection_errors_XXX' status variables (see *note server-status-variables::).
Configuring the Host Cache
The host cache is enabled by default. The 'host_cache_size' system variable controls its size, as well as the size of the Performance Schema *note 'host_cache': performance-schema-host-cache-table. table that exposes the cache contents. The cache size can be set at server startup and changed at runtime. For example, to set the size to 100 at startup, put these lines in the server 'my.cnf' file:
[mysqld]
host_cache_size=200
To change the size to 300 at runtime, do this:
SET GLOBAL host_cache_size=300;
Setting 'host_cache_size' to 0, either at server startup or at runtime, disables the host cache. With the cache disabled, the server performs a DNS lookup every time a client connects.
Changing the cache size at runtime causes an implicit host cache flushing operation that clears the host cache, truncates the note 'host_cache': performance-schema-host-cache-table. table, and unblocks any blocked hosts; see note host-cache-flushing::.
Using the '--skip-host-cache' option is similar to setting the 'host_cache_size' system variable to 0, but 'host_cache_size' is more flexible because it can also be used to resize, enable, and disable the host cache at runtime, not just at server startup. Starting the server with '--skip-host-cache' does not prevent runtime changes to the value of 'host_cache_size', but such changes have no effect and the cache is not re-enabled even if 'host_cache_size' is set larger than 0.
To disable DNS host name lookups, start the server with the 'skip_name_resolve' system variable enabled. In this case, the server uses only IP addresses and not host names to match connecting hosts to rows in the MySQL grant tables. Only accounts specified in those tables using IP addresses can be used. (A client may not be able to connect if no account exists that specifies the client IP address.)
If you have a very slow DNS and many hosts, you might be able to improve performance either by enabling 'skip_name_resolve' to disable DNS lookups, or by increasing the value of 'host_cache_size' to make the host cache larger.
To disallow TCP/IP connections entirely, start the server with the 'skip_networking' system variable enabled.
To adjust the permitted number of successive connection errors before host blocking occurs, set the 'max_connect_errors' system variable. For example, to set the value at startup put these lines in the server 'my.cnf' file:
[mysqld]
max_connect_errors=10000
To change the value at runtime, do this:
SET GLOBAL max_connect_errors=10000;
Monitoring the Host Cache
The Performance Schema note 'host_cache': performance-schema-host-cache-table. table exposes the contents of the host cache. This table can be examined using note 'SELECT': select. statements, which may help you diagnose the causes of connection problems. The Performance Schema must be enabled or this table is empty. For information about this table, see *note performance-schema-host-cache-table::.
Flushing the Host Cache
Flushing the host cache might be advisable or desirable under these conditions:
Some of your client hosts change IP address.
The error message 'Host 'HOST_NAME' is blocked' occurs for connections from legitimate hosts. (See *note blocked-host::.)
Flushing the host cache has these effects:
It clears the in-memory host cache.
It removes all rows from the Performance Schema *note 'host_cache': performance-schema-host-cache-table. table that exposes the cache contents.
It unblocks any blocked hosts. This enables further connection attempts from those hosts.
To flush the host cache, use any of these methods:
Change the value of the 'host_cache_size' system variable. This requires the 'SUPER' privilege.
Execute a note 'TRUNCATE TABLE': truncate-table. statement that truncates the Performance Schema note 'host_cache': performance-schema-host-cache-table. table. This requires the 'DROP' privilege for the table.
Execute a 'FLUSH HOSTS' statement. This requires the 'RELOAD' privilege.
Execute a *note 'mysqladmin flush-hosts': mysqladmin. command. This requires the 'RELOAD' privilege.
Dealing with Blocked Hosts
The server uses the host cache to track errors that occur during the client connection process. If the following error occurs, it means that *note 'mysqld': mysqld. has received many connection requests from the given host that were interrupted in the middle:
Host 'HOST_NAME' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'
The value of the 'max_connect_errors' system variable determines how many successive interrupted connection requests the server permits before blocking a host. After 'max_connect_errors' failed requests without a successful connection, the server assumes that something is wrong (for example, that someone is trying to break in), and blocks the host from further connection requests.
To unblock blocked hosts, flush the host cache; see *note host-cache-flushing::.
Alternatively, to avoid having the error message occur, set 'max_connect_errors' as described in *note host-cache-configuration::. The default value of 'max_connect_errors' is 100. Increasing 'max_connect_errors' to a large value makes it less likely that a host reaches the threshold and becomes blocked. However, if the 'Host 'HOST_NAME' is blocked' error message occurs, first verify that there is nothing wrong with TCP/IP connections from the blocked hosts. It does no good to increase the value of 'max_connect_errors' if there are network problems.
File: manual.info.tmp, Node: ipv6-support, Next: time-zone-support, Prev: connection-management, Up: mysqld-server
Menu:
ipv6-brokers:: Obtaining an IPv6 Address from a Broker
Support for IPv6 in MySQL includes these capabilities:
MySQL Server can accept TCP/IP connections from clients connecting over IPv6. For example, this command connects over IPv6 to the MySQL server on the local host:
$> mysql -h ::1
To use this capability, two things must be true:
* Your system must be configured to support IPv6. See *note
ipv6-system-support::.
* The default MySQL server configuration permits IPv6
connections in addition to IPv4 connections. To change the
default configuration, start the server with the
'bind_address' system variable set to an appropriate value.
See *note server-system-variables::.
MySQL account names permit IPv6 addresses to enable DBAs to specify privileges for clients that connect to the server over IPv6. See note account-names::. IPv6 addresses can be specified in account names in statements such as note 'CREATE USER': create-user, note 'GRANT': grant, and note 'REVOKE': revoke. For example:
mysql> CREATE USER 'bill'@'::1' IDENTIFIED BY 'secret';
mysql> GRANT SELECT ON mydb.* TO 'bill'@'::1';
IPv6 functions enable conversion between string and internal format IPv6 address formats, and checking whether values represent valid IPv6 addresses. For example, 'INET6_ATON()' and 'INET6_NTOA()' are similar to 'INET_ATON()' and 'INET_NTOA()', but handle IPv6 addresses in addition to IPv4 addresses. See *note miscellaneous-functions::.
The following sections describe how to set up MySQL so that clients can connect to the server over IPv6.
File: manual.info.tmp, Node: ipv6-system-support, Next: ipv6-server-config, Prev: ipv6-support, Up: ipv6-support
5.1.12.1 Verifying System Support for IPv6 ..........................................
Before MySQL Server can accept IPv6 connections, the operating system on your server host must support IPv6. As a simple test to determine whether that is true, try this command:
$> ping6 ::1
16 bytes from ::1, icmp_seq=0 hlim=64 time=0.171 ms
16 bytes from ::1, icmp_seq=1 hlim=64 time=0.077 ms
...
To produce a description of your system's network interfaces, invoke 'ifconfig -a' and look for IPv6 addresses in the output.
If your host does not support IPv6, consult your system documentation for instructions on enabling it. It might be that you need only reconfigure an existing network interface to add an IPv6 address. Or a more extensive change might be needed, such as rebuilding the kernel with IPv6 options enabled.
These links may be helpful in setting up IPv6 on various platforms:
Windows (https://msdn.microsoft.com/en-us/library/dd163569.aspx)
Gentoo Linux (http://www.gentoo.org/doc/en/ipv6.xml)
Ubuntu Linux (https://wiki.ubuntu.com/IPv6)
Linux (Generic) (http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/)
macOS (https://support.apple.com/en-us/HT202237)
File: manual.info.tmp, Node: ipv6-server-config, Next: ipv6-local-connections, Prev: ipv6-system-support, Up: ipv6-support
5.1.12.2 Configuring the MySQL Server to Permit IPv6 Connections ................................................................
The MySQL server listens on a single network socket for TCP/IP connections. This socket is bound to a single address, but it is possible for an address to map onto multiple network interfaces. To specify an address, set 'bind_address=ADDR' at server startup, where ADDR is an IPv4 or IPv6 address or a host name. For details, see the 'bind_address' description in *note server-system-variables::.
File: manual.info.tmp, Node: ipv6-local-connections, Next: ipv6-remote-connections, Prev: ipv6-server-config, Up: ipv6-support
5.1.12.3 Connecting Using the IPv6 Local Host Address .....................................................
The following procedure shows how to configure MySQL to permit IPv6 connections by clients that connect to the local server using the '::1' local host address. The instructions given here assume that your system supports IPv6.
Start the MySQL server with an appropriate 'bind_address' setting to permit it to accept IPv6 connections. For example, put the following lines in the server option file and restart the server:
[mysqld]
bind_address = *
Alternatively, you can bind the server to '::1', but that makes the server more restrictive for TCP/IP connections. It accepts only IPv6 connections for that single address and rejects IPv4 connections. For more information, see the 'bind_address' description in *note server-system-variables::.
As an administrator, connect to the server and create an account for a local user who connects from the '::1' local IPv6 host address:
mysql> CREATE USER 'ipv6user'@'::1' IDENTIFIED BY 'ipv6pass';
For the permitted syntax of IPv6 addresses in account names, see note account-names::. In addition to the note 'CREATE USER': create-user. statement, you can issue *note 'GRANT': grant. statements that give specific privileges to the account, although that is not necessary for the remaining steps in this procedure.
Invoke the *note 'mysql': mysql. client to connect to the server using the new account:
$> mysql -h ::1 -u ipv6user -pipv6pass
Try some simple statements that show connection information:
mysql> STATUS
...
Connection: ::1 via TCP/IP
...
mysql> SELECT CURRENT_USER(), @@bind_address;
+----------------+----------------+
| CURRENT_USER() | @@bind_address |
+----------------+----------------+
| ipv6user@::1 | :: |
+----------------+----------------+
File: manual.info.tmp, Node: ipv6-remote-connections, Next: ipv6-brokers, Prev: ipv6-local-connections, Up: ipv6-support
5.1.12.4 Connecting Using IPv6 Nonlocal Host Addresses ......................................................
The following procedure shows how to configure MySQL to permit IPv6 connections by remote clients. It is similar to the preceding procedure for local clients, but the server and client hosts are distinct and each has its own nonlocal IPv6 address. The example uses these addresses:
Server host: 2001:db8:0:f101::1
Client host: 2001:db8:0:f101::2
These addresses are chosen from the nonroutable address range recommended by IANA (http://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xml) for documentation purposes and suffice for testing on your local network. To accept IPv6 connections from clients outside the local network, the server host must have a public address. If your network provider assigns you an IPv6 address, you can use that. Otherwise, another way to obtain an address is to use an IPv6 broker; see *note ipv6-brokers::.
Start the MySQL server with an appropriate 'bind_address' setting to permit it to accept IPv6 connections. For example, put the following lines in the server option file and restart the server:
[mysqld]
bind_address = *
Alternatively, you can bind the server to '2001:db8:0:f101::1', but that makes the server more restrictive for TCP/IP connections. It accepts only IPv6 connections for that single address and rejects IPv4 connections. For more information, see the 'bind_address' description in *note server-system-variables::.
On the server host ('2001:db8:0:f101::1'), create an account for a user who connects from the client host ('2001:db8:0:f101::2'):
mysql> CREATE USER 'remoteipv6user'@'2001:db8:0:f101::2' IDENTIFIED BY 'remoteipv6pass';
On the client host ('2001:db8:0:f101::2'), invoke the *note 'mysql': mysql. client to connect to the server using the new account:
$> mysql -h 2001:db8:0:f101::1 -u remoteipv6user -premoteipv6pass
Try some simple statements that show connection information:
mysql> STATUS
...
Connection: 2001:db8:0:f101::1 via TCP/IP
...
mysql> SELECT CURRENT_USER(), @@bind_address;
+-----------------------------------+----------------+
| CURRENT_USER() | @@bind_address |
+-----------------------------------+----------------+
| remoteipv6user@2001:db8:0:f101::2 | :: |
+-----------------------------------+----------------+
File: manual.info.tmp, Node: ipv6-brokers, Prev: ipv6-remote-connections, Up: ipv6-support
5.1.12.5 Obtaining an IPv6 Address from a Broker ................................................
If you do not have a public IPv6 address that enables your system to communicate over IPv6 outside your local network, you can obtain one from an IPv6 broker. The Wikipedia IPv6 Tunnel Broker page (http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers) lists several brokers and their features, such as whether they provide static addresses and the supported routing protocols.
After configuring your server host to use a broker-supplied IPv6 address, start the MySQL server with an appropriate 'bind_address' setting to permit the server to accept IPv6 connections. For example, put the following lines in the server option file and restart the server:
[mysqld]
bind_address = *
Alternatively, you can bind the server to the specific IPv6 address provided by the broker, but that makes the server more restrictive for TCP/IP connections. It accepts only IPv6 connections for that single address and rejects IPv4 connections. For more information, see the 'bind_address' description in *note server-system-variables::. In addition, if the broker allocates dynamic addresses, the address provided for your system might change the next time you connect to the broker. If so, any accounts you create that name the original address become invalid. To bind to a specific address but avoid this change-of-address problem, you may be able to arrange with the broker for a static IPv6 address.
The following example shows how to use Freenet6 as the broker and the 'gogoc' IPv6 client package on Gentoo Linux.
Create an account at Freenet6 by visiting this URL and signing up:
<http://gogonet.gogo6.com>
After creating the account, go to this URL, sign in, and create a user ID and password for the IPv6 broker:
<http://gogonet.gogo6.com/page/freenet6-registration>
As 'root', install 'gogoc':
$> emerge gogoc
Edit '/etc/gogoc/gogoc.conf' to set the 'userid' and 'password' values. For example:
userid=gogouser
passwd=gogopass
Start 'gogoc':
$> /etc/init.d/gogoc start
To start 'gogoc' each time your system boots, execute this command:
$> rc-update add gogoc default
Use 'ping6' to try to ping a host:
$> ping6 ipv6.google.com
To see your IPv6 address:
$> ifconfig tun
File: manual.info.tmp, Node: time-zone-support, Next: server-side-help-support, Prev: ipv6-support, Up: mysqld-server
This section describes the time zone settings maintained by MySQL, how to load the system tables required for named time support, how to stay current with time zone changes, and how to enable leap-second support.
For information about time zone settings in replication setups, see note replication-features-functions:: and note replication-features-timezone::.
*note time-zone-variables::
*note time-zone-installation::
*note time-zone-upgrades::
*note time-zone-leap-seconds::
Time Zone Variables
MySQL Server maintains several time zone settings:
The server system time zone. When the server starts, it attempts to determine the time zone of the host machine and uses it to set the 'system_time_zone' system variable. The value does not change thereafter.
To explicitly specify the system time zone for MySQL Server at startup, set the 'TZ' environment variable before you start note 'mysqld': mysqld. If you start the server using note 'mysqld_safe': mysqld-safe, its '--timezone' option provides another way to set the system time zone. The permissible values for 'TZ' and '--timezone' are system dependent. Consult your operating system documentation to see what values are acceptable.
The server current time zone. The global 'time_zone' system variable indicates the time zone the server currently is operating in. The initial 'time_zone' value is ''SYSTEM'', which indicates that the server time zone is the same as the system time zone.
Note:
If set to 'SYSTEM', every MySQL function call that requires a time zone calculation makes a system library call to determine the current system time zone. This call may be protected by a global mutex, resulting in contention.
The initial global server time zone value can be specified explicitly at startup with the '--default-time-zone' option on the command line, or you can use the following line in an option file:
default-time-zone='TIMEZONE'
If you have the 'SUPER' privilege, you can set the global server time zone value at runtime with this statement:
SET GLOBAL time_zone = TIMEZONE;
Per-session time zones. Each client that connects has its own session time zone setting, given by the session 'time_zone' variable. Initially, the session variable takes its value from the global 'time_zone' variable, but the client can change its own time zone with this statement:
SET time_zone = TIMEZONE;
The session time zone setting affects display and storage of time values that are zone-sensitive. This includes the values displayed by functions such as 'NOW()' or 'CURTIME()', and values stored in and retrieved from note 'TIMESTAMP': datetime. columns. Values for note 'TIMESTAMP': datetime. columns are converted from the session time zone to UTC for storage, and from UTC to the session time zone for retrieval.
The session time zone setting does not affect values displayed by functions such as 'UTC_TIMESTAMP()' or values in note 'DATE': datetime, note 'TIME': time, or note 'DATETIME': datetime. columns. Nor are values in those data types stored in UTC; the time zone applies for them only when converting from note 'TIMESTAMP': datetime. values. If you want locale-specific arithmetic for note 'DATE': datetime, note 'TIME': time, or *note 'DATETIME': datetime. values, convert them to UTC, perform the arithmetic, and then convert back.
The current global and session time zone values can be retrieved like this:
SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
TIMEZONE values can be given in several formats, none of which are case-sensitive:
As the value ''SYSTEM'', indicating that the server time zone is the same as the system time zone.
As a string indicating an offset from UTC of the form '[H]H:MM', prefixed with a '+' or '-', such as ''+10:00'', ''-6:00'', or ''+05:30''. A leading zero can optionally be used for hours values less than 10; MySQL prepends a leading zero when storing and retriving the value in such cases. MySQL converts ''-00:00'' or ''-0:00'' to ''+00:00''.
A time zone offset must be in the range ''-12:59'' to ''+13:00'', inclusive.
As a named time zone, such as ''Europe/Helsinki'', ''US/Eastern'', ''MET'', or ''UTC''.
Note:
Named time zones can be used only if the time zone information tables in the 'mysql' database have been created and populated. Otherwise, use of a named time zone results in an error:
mysql> SET time_zone = 'UTC';
ERROR 1298 (HY000): Unknown or incorrect time zone: 'UTC'
Populating the Time Zone Tables
Several tables in the 'mysql' system database exist to store time zone information (see *note system-schema::). The MySQL installation procedure creates the time zone tables, but does not load them. To do so manually, use the following instructions.
Note:
Loading the time zone information is not necessarily a one-time operation because the information changes occasionally. When such changes occur, applications that use the old rules become out of date and you may find it necessary to reload the time zone tables to keep the information used by your MySQL server current. See *note time-zone-upgrades::.
If your system has its own zoneinfo database (the set of files describing time zones), use the *note 'mysql_tzinfo_to_sql': mysql-tzinfo-to-sql. program to load the time zone tables. Examples of such systems are Linux, macOS, FreeBSD, and Solaris. One likely location for these files is the '/usr/share/zoneinfo' directory. If your system has no zoneinfo database, you can use a downloadable package, as described later in this section.
To load the time zone tables from the command line, pass the zoneinfo directory path name to note 'mysql_tzinfo_to_sql': mysql-tzinfo-to-sql. and send the output into the note 'mysql': mysql. program. For example:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
The *note 'mysql': mysql. command shown here assumes that you connect to the server using an account such as 'root' that has privileges for modifying tables in the 'mysql' system database. Adjust the connection parameters as required.
note 'mysql_tzinfo_to_sql': mysql-tzinfo-to-sql. reads your system's time zone files and generates SQL statements from them. note 'mysql': mysql. processes those statements to load the time zone tables.
*note 'mysql_tzinfo_to_sql': mysql-tzinfo-to-sql. also can be used to load a single time zone file or generate leap second information:
To load a single time zone file TZ_FILE that corresponds to a time zone name TZ_NAME, invoke *note 'mysql_tzinfo_to_sql': mysql-tzinfo-to-sql. like this:
mysql_tzinfo_to_sql TZ_FILE TZ_NAME | mysql -u root -p mysql
With this approach, you must execute a separate command to load the time zone file for each named zone that the server needs to know about.
If your time zone must account for leap seconds, initialize leap second information like this, where TZ_FILE is the name of your time zone file:
mysql_tzinfo_to_sql --leap TZ_FILE | mysql -u root -p mysql
After running *note 'mysql_tzinfo_to_sql': mysql-tzinfo-to-sql, restart the server so that it does not continue to use any previously cached time zone data.
If your system has no zoneinfo database (for example, Windows), you can use a package containing SQL statements that is available for download at the MySQL Developer Zone:
<https://dev.mysql.com/downloads/timezones.html>
Warning:
Do not use a downloadable time zone package if your system has a zoneinfo database. Use the *note 'mysql_tzinfo_to_sql': mysql-tzinfo-to-sql. utility instead. Otherwise, you may cause a difference in datetime handling between MySQL and other applications on your system.
To use an SQL-statement time zone package that you have downloaded, unpack it, then load the unpacked file contents into the time zone tables:
mysql -u root -p mysql < FILE_NAME
Then restart the server.
Warning:
Do not use a downloadable time zone package that contains 'MyISAM' tables. That is intended for older MySQL versions. MySQL 5.7 and higher uses 'InnoDB' for the time zone tables. Trying to replace them with 'MyISAM' tables causes problems.
Staying Current with Time Zone Changes
When time zone rules change, applications that use the old rules become out of date. To stay current, it is necessary to make sure that your system uses current time zone information is used. For MySQL, there are multiple factors to consider in staying current:
The operating system time affects the value that the MySQL server uses for times if its time zone is set to 'SYSTEM'. Make sure that your operating system is using the latest time zone information. For most operating systems, the latest update or service pack prepares your system for the time changes. Check the website for your operating system vendor for an update that addresses the time changes.
If you replace the system's '/etc/localtime' time zone file with a version that uses rules differing from those in effect at note 'mysqld': mysqld. startup, restart note 'mysqld': mysqld. so that it uses the updated rules. Otherwise, *note 'mysqld': mysqld. might not notice when the system changes its time.
If you use named time zones with MySQL, make sure that the time zone tables in the 'mysql' database are up to date:
* If your system has its own zoneinfo database, reload the MySQL
time zone tables whenever the zoneinfo database is updated.
* For systems that do not have their own zoneinfo database,
check the MySQL Developer Zone for updates. When a new update
is available, download it and use it to replace the content of
your current time zone tables.
For instructions for both methods, see note time-zone-installation::. note 'mysqld': mysqld. caches time zone information that it looks up, so after updating the time zone tables, restart *note 'mysqld': mysqld. to make sure that it does not continue to serve outdated time zone data.
If you are uncertain whether named time zones are available, for use either as the server's time zone setting or by clients that set their own time zone, check whether your time zone tables are empty. The following query determines whether the table that contains time zone names has any rows:
mysql> SELECT COUNT(*) FROM mysql.time_zone_name;
+----------+
| COUNT(*) |
+----------+
| 0 |
+----------+
A count of zero indicates that the table is empty. In this case, no applications currently are using named time zones, and you need not update the tables (unless you want to enable named time zone support). A count greater than zero indicates that the table is not empty and that its contents are available to be used for named time zone support. In this case, be sure to reload your time zone tables so that applications that use named time zones obtain correct query results.
To check whether your MySQL installation is updated properly for a change in Daylight Saving Time rules, use a test like the one following. The example uses values that are appropriate for the 2007 DST 1-hour change that occurs in the United States on March 11 at 2 a.m.
The test uses this query:
SELECT
CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central') AS time1,
CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central') AS time2;
The two time values indicate the times at which the DST change occurs, and the use of named time zones requires that the time zone tables be used. The desired result is that both queries return the same result (the input time, converted to the equivalent value in the 'US/Central' time zone).
Before updating the time zone tables, you see an incorrect result like this:
+---------------------+---------------------+
| time1 | time2 |
+---------------------+---------------------+
| 2007-03-11 01:00:00 | 2007-03-11 02:00:00 |
+---------------------+---------------------+
After updating the tables, you should see the correct result:
+---------------------+---------------------+
| time1 | time2 |
+---------------------+---------------------+
| 2007-03-11 01:00:00 | 2007-03-11 01:00:00 |
+---------------------+---------------------+
Time Zone Leap Second Support
Leap second values are returned with a time part that ends with ':59:59'. This means that a function such as 'NOW()' can return the same value for two or three consecutive seconds during the leap second. It remains true that literal temporal values having a time part that ends with ':59:60' or ':59:61' are considered invalid.
If it is necessary to search for note 'TIMESTAMP': datetime. values one second before the leap second, anomalous results may be obtained if you use a comparison with ''YYYY-MM-DD HH:MM:SS'' values. The following example demonstrates this. It changes the session time zone to UTC so there is no difference between internal note 'TIMESTAMP': datetime. values (which are in UTC) and displayed values (which have time zone correction applied).
mysql> CREATE TABLE t1 (
a INT,
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ts)
);
Query OK, 0 rows affected (0.01 sec)
mysql> -- change to UTC
mysql> SET time_zone = '+00:00';
Query OK, 0 rows affected (0.00 sec)
mysql> -- Simulate NOW() = '2008-12-31 23:59:59'
mysql> SET timestamp = 1230767999;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO t1 (a) VALUES (1);
Query OK, 1 row affected (0.00 sec)
mysql> -- Simulate NOW() = '2008-12-31 23:59:60'
mysql> SET timestamp = 1230768000;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO t1 (a) VALUES (2);
Query OK, 1 row affected (0.00 sec)
mysql> -- values differ internally but display the same
mysql> SELECT a, ts, UNIX_TIMESTAMP(ts) FROM t1;
+------+---------------------+--------------------+
| a | ts | UNIX_TIMESTAMP(ts) |
+------+---------------------+--------------------+
| 1 | 2008-12-31 23:59:59 | 1230767999 |
| 2 | 2008-12-31 23:59:59 | 1230768000 |
+------+---------------------+--------------------+
2 rows in set (0.00 sec)
mysql> -- only the non-leap value matches
mysql> SELECT * FROM t1 WHERE ts = '2008-12-31 23:59:59';
+------+---------------------+
| a | ts |
+------+---------------------+
| 1 | 2008-12-31 23:59:59 |
+------+---------------------+
1 row in set (0.00 sec)
mysql> -- the leap value with seconds=60 is invalid
mysql> SELECT * FROM t1 WHERE ts = '2008-12-31 23:59:60';
Empty set, 2 warnings (0.00 sec)
To work around this, you can use a comparison based on the UTC value actually stored in the column, which has the leap second correction applied:
mysql> -- selecting using UNIX_TIMESTAMP value return leap value
mysql> SELECT * FROM t1 WHERE UNIX_TIMESTAMP(ts) = 1230768000;
+------+---------------------+
| a | ts |
+------+---------------------+
| 2 | 2008-12-31 23:59:59 |
+------+---------------------+
1 row in set (0.00 sec)
File: manual.info.tmp, Node: server-side-help-support, Next: session-state-tracking, Prev: time-zone-support, Up: mysqld-server
MySQL Server supports a note 'HELP': help. statement that returns information from the MySQL Reference Manual (see note help::). This information is stored in several tables in the 'mysql' database (see note system-schema::). Proper operation of the note 'HELP': help. statement requires that these help tables be initialized.
For a new installation of MySQL using a binary or source distribution on Unix, help-table content initialization occurs when you initialize the data directory (see *note data-directory-initialization::). For an RPM distribution on Linux or binary distribution on Windows, content initialization occurs as part of the MySQL installation process.
For a MySQL upgrade using a binary distribution, help-table content is not upgraded automatically, but you can upgrade it manually. Locate the 'fill_help_tables.sql' file in the 'share' or 'share/mysql' directory. Change location into that directory and process the file with the *note 'mysql': mysql. client as follows:
mysql -u root -p mysql < fill_help_tables.sql
The command shown here assumes that you connect to the server using an account such as 'root' that has privileges for modifying tables in the 'mysql' database. Adjust the connection parameters as required.
If you are working with Git and a MySQL development source tree, the source tree contains only a 'stub' version of 'fill_help_tables.sql'. To obtain a non-stub copy, use one from a source or binary distribution.
Note:
Each MySQL series has its own series-specific reference manual, so help-table content is series specific as well. This has implications for replication because help-table content should match the MySQL series. If you load MySQL 5.7 help content into a MySQL 5.7 source server, it does not make sense to replicate that content to a replica server from a different MySQL series and for which that content is not appropriate. For this reason, as you upgrade individual servers in a replication scenario, you should upgrade each server's help tables, using the instructions given earlier.
File: manual.info.tmp, Node: session-state-tracking, Next: server-shutdown, Prev: server-side-help-support, Up: mysqld-server
The MySQL server implements several session state trackers. A client can enable these trackers to receive notification of changes to its session state.
*note session-state-tracking-uses::
*note session-state-tracking-notifications::
*note session-state-tracking-capi-support::
*note session-state-tracking-test-suite-support::
Uses for Session State Trackers
Session state trackers have uses such as these:
To facilitate session migration.
To facilitate transaction switching.
One use for the tracker mechanism is to provide a means for MySQL connectors and client applications to determine whether any session context is available to permit session migration from one server to another. (To change sessions in a load-balanced environment, it is necessary to detect whether there is session state to take into consideration when deciding whether a switch can be made.)
Another use for the tracker mechanism is to permit applications to know when transactions can be moved from one session to another. Transaction state tracking enables this, which is useful for applications that may wish to move transactions from a busy server to one that is less loaded. For example, a load-balancing connector managing a client connection pool could move transactions between available sessions in the pool.
However, session switching cannot be done at arbitrary times. If a session is in the middle of a transaction for which reads or writes have been done, switching to a different session implies a transaction rollback on the original session. A session switch must be done only when a transaction does not yet have any reads or writes performed within it.
Examples of when transactions might reasonably be switched:
Immediately after *note 'START TRANSACTION': commit.
After *note 'COMMIT AND CHAIN': commit.
In addition to knowing transaction state, it is useful to know transaction characteristics, so as to use the same characteristics if the transaction is moved to a different session. The following characteristics are relevant for this purpose:
READ ONLY
READ WRITE
ISOLATION LEVEL
WITH CONSISTENT SNAPSHOT
Available Session State Trackers
To support the session-tracking activities, notification is available for these types of client session state information:
Changes to these attributes of client session state:
* The default schema (database).
* Session-specific values for system variables.
* User-defined variables.
* Temporary tables.
* Prepared statements.
The 'session_track_state_change' system variable controls this tracker.
Changes to the default schema name. The 'session_track_schema' system variable controls this tracker.
Changes to the session values of system variables. The 'session_track_system_variables' system variable controls this tracker.
Available GTIDs. The 'session_track_gtids' system variable controls this tracker.
Information about transaction state and characteristics. The 'session_track_transaction_info' system variable controls this tracker.
For descriptions of the tracker-related system variables, see *note server-system-variables::. Those system variables permit control over which change notifications occur, but do not provide a way to access notification information. Notification occurs in the MySQL client/server protocol, which includes tracker information in OK packets so that session state changes can be detected.
C API Session State Tracker Support
To enable client applications to extract state-change information from OK packets returned by the server, the MySQL C API provides a pair of functions:
'mysql_session_track_get_first()' (https://dev.mysql.com/doc/c-api/5.7/en/mysql-session-track-get-first.html) fetches the first part of the state-change information received from the server. See mysql_session_track_get_first() (https://dev.mysql.com/doc/c-api/5.7/en/mysql-session-track-get-first.html).
'mysql_session_track_get_next()' (https://dev.mysql.com/doc/c-api/5.7/en/mysql-session-track-get-next.html) fetches any remaining state-change information received from the server. Following a successful call to 'mysql_session_track_get_first()' (https://dev.mysql.com/doc/c-api/5.7/en/mysql-session-track-get-first.html), call this function repeatedly as long as it returns success. See mysql_session_track_get_next() (https://dev.mysql.com/doc/c-api/5.7/en/mysql-session-track-get-next.html).
Test Suite Session State Tracker Support
The 'mysqltest' program has 'disable_session_track_info' and 'enable_session_track_info' commands that control whether session tracker notifications occur. You can use these commands to see from the command line what notifications SQL statements produce. Suppose that a file 'testscript' contains the following 'mysqltest' script:
DROP TABLE IF EXISTS test.t1;
CREATE TABLE test.t1 (i INT, f FLOAT);
--enable_session_track_info
SET @@SESSION.session_track_schema=ON;
SET @@SESSION.session_track_system_variables='*';
SET @@SESSION.session_track_state_change=ON;
USE information_schema;
SET NAMES 'utf8mb4';
SET @@SESSION.session_track_transaction_info='CHARACTERISTICS';
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET TRANSACTION READ WRITE;
START TRANSACTION;
SELECT 1;
INSERT INTO test.t1 () VALUES();
INSERT INTO test.t1 () VALUES(1, RAND());
COMMIT;
Run the script as follows to see the information provided by the enabled trackers. For a description of the 'Tracker:' information displayed by 'mysqltest' for the various trackers, see mysql_session_track_get_first() (https://dev.mysql.com/doc/c-api/5.7/en/mysql-session-track-get-first.html).
$> mysqltest < testscript
DROP TABLE IF EXISTS test.t1;
CREATE TABLE test.t1 (i INT, f FLOAT);
SET @@SESSION.session_track_schema=ON;
SET @@SESSION.session_track_system_variables='*';
-- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
-- session_track_system_variables
-- *
SET @@SESSION.session_track_state_change=ON;
-- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
-- session_track_state_change
-- ON
USE information_schema;
-- Tracker : SESSION_TRACK_SCHEMA
-- information_schema
-- Tracker : SESSION_TRACK_STATE_CHANGE
-- 1
SET NAMES 'utf8mb4';
-- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
-- character_set_client
-- utf8mb4
-- character_set_connection
-- utf8mb4
-- character_set_results
-- utf8mb4
-- Tracker : SESSION_TRACK_STATE_CHANGE
-- 1
SET @@SESSION.session_track_transaction_info='CHARACTERISTICS';
-- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
-- session_track_transaction_info
-- CHARACTERISTICS
-- Tracker : SESSION_TRACK_STATE_CHANGE
-- 1
-- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
--
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- ________
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
-- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET TRANSACTION READ WRITE;
-- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
-- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET TRANSACTION READ WRITE;
START TRANSACTION;
-- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
-- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; START TRANSACTION READ WRITE;
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T_______
SELECT 1;
1
1
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T_____S_
INSERT INTO test.t1 () VALUES();
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T___W_S_
INSERT INTO test.t1 () VALUES(1, RAND());
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T___WsS_
COMMIT;
-- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
--
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- ________
ok
Preceding the note 'START TRANSACTION': commit. statement, two note 'SET TRANSACTION': set-transaction. statements execute that set the isolation level and access mode characteristics for the next transaction. The 'SESSION_TRACK_TRANSACTION_CHARACTERISTICS' value indicates those next-transaction values that have been set.
Following the *note 'COMMIT': commit. statement that ends the transaction, the 'SESSION_TRACK_TRANSACTION_CHARACTERISTICS' value is reported as empty. This indicates that the next-transaction characteristics that were set preceding the start of the transaction have been reset, and that the session defaults apply. To track changes to those session defaults, track the session values of the 'transaction_isolation' and 'transaction_read_only' system variables.
To see information about GTIDs, enable the 'SESSION_TRACK_GTIDS' tracker using the 'session_track_gtids' system system variable.
File: manual.info.tmp, Node: server-shutdown, Prev: session-state-tracking, Up: mysqld-server
The server shutdown process takes place as follows:
The shutdown process is initiated.
This can occur initiated several ways. For example, a user with the 'SHUTDOWN' privilege can execute a note 'mysqladmin shutdown': mysqladmin. command. note 'mysqladmin': mysqladmin. can be used on any platform supported by MySQL. Other operating system-specific shutdown initiation methods are possible as well: The server shuts down on Unix when it receives a 'SIGTERM' signal. A server running as a service on Windows shuts down when the services manager tells it to.
The server creates a shutdown thread if necessary.
Depending on how shutdown was initiated, the server might create a thread to handle the shutdown process. If shutdown was requested by a client, a shutdown thread is created. If shutdown is the result of receiving a 'SIGTERM' signal, the signal thread might handle shutdown itself, or it might create a separate thread to do so. If the server tries to create a shutdown thread and cannot (for example, if memory is exhausted), it issues a diagnostic message that appears in the error log:
Error: Can't create thread to kill server
The server stops accepting new connections.
To prevent new activity from being initiated during shutdown, the server stops accepting new client connections by closing the handlers for the network interfaces to which it normally listens for connections: the TCP/IP port, the Unix socket file, the Windows named pipe, and shared memory on Windows.
The server terminates current activity.
For each thread associated with a client connection, the server breaks the connection to the client and marks the thread as killed. Threads die when they notice that they are so marked. Threads for idle connections die quickly. Threads that currently are processing statements check their state periodically and take longer to die. For additional information about thread termination, see note kill::, in particular for the instructions about killed note 'REPAIR TABLE': repair-table. or *note 'OPTIMIZE TABLE': optimize-table. operations on 'MyISAM' tables.
For threads that have an open transaction, the transaction is rolled back. If a thread is updating a nontransactional table, an operation such as a multiple-row note 'UPDATE': update. or note 'INSERT': insert. may leave the table partially updated because the operation can terminate before completion.
If the server is a source replication server, it treats threads associated with currently connected replicas like other client threads. That is, each one is marked as killed and exits when it next checks its state.
If the server is a replica, it stops the I/O and SQL threads, if they are active, before marking client threads as killed. The SQL thread is permitted to finish its current statement (to avoid causing replication problems), and then stops. If the SQL thread is in the middle of a transaction at this point, the server waits until the current replication event group (if any) has finished executing, or until the user issues a note 'KILL QUERY': kill. or note 'KILL CONNECTION': kill. statement. See also *note stop-slave::. Since nontransactional statements cannot be rolled back, in order to guarantee crash-safe replication, only transactional tables should be used.
Note:
To guarantee crash safety on the replica, you must run the replica with '--relay-log-recovery' enabled.
See also *note replica-logs::).
The server shuts down or closes storage engines.
At this stage, the server flushes the table cache and closes all open tables.
Each storage engine performs any actions necessary for tables that it manages.
'InnoDB' flushes its buffer pool to disk (unless 'innodb_fast_shutdown' is 2), writes the current LSN to the tablespace, and terminates its own internal threads. 'MyISAM' flushes any pending index writes for a table.
The server exits.
To provide information to management processes, the server returns one of the exit codes described in the following list. The phrase in parentheses indicates the action taken by systemd in response to the code, for platforms on which systemd is used to manage the server.
0 = successful termination (no restart done)
1 = unsuccessful termination (no restart done)
2 = unsuccessful termination (restart done)
File: manual.info.tmp, Node: data-directory, Next: system-schema, Prev: mysqld-server, Up: server-administration