How to Display System Variables of MySQL Server?


The MySQL system variable values are displayed using SHOW VARIABLES. There is no privilege required for this statement. Only the ability to connect to the server is necessary.

Syntax

SHOW [GLOBAL | SESSION] VARIABLES
   [LIKE 'pattern' | WHERE expr]

A LIKE clause, if present, tells SHOW VARIABLES which variable names to match. To choose rows based on broader criteria, use a WHERE clause.

An optional global or session variable scope modification is accepted by SHOW VARIABLES −

  • The statement displays values for global system variables when GLOBAL is used as a modifier. For new connections to MySQL, these are the values used to initialize the associated session variables. A variable's value is not shown if it has no global value.

  • The statement displays the system variable values that are in effect for the current connection when a SESSION modifier is used. A variable's global value is shown if it has no session value. SESSION is another word for LOCAL.

  • The default is SESSION if no modifier is specified.

There is a version-dependent display-width restriction for SHOW VARIABLES. Use SELECT as a workaround for variables with extremely long values that aren't fully displayed. For instance −

SELECT @@GLOBAL.innodb_data_file_path;

While read-only variables like version_comment are an exception, the majority of system variables can be configured at server startup. With the SET statement, a lot can be altered while running.

Here is a portion of the output. Your server's list of names and values can be different.

mysql> SHOW VARIABLES;
+--------------------------------------------+------------------------------+
| Variable_name                              | Value                        |
+--------------------------------------------+------------------------------+
| activate_all_roles_on_login                | OFF                          |
| auto_generate_certs                        | ON                           |
| auto_increment_increment                   | 1                            |
| auto_increment_offset                      | 1                            |
| autocommit                                 | ON                           |
| automatic_sp_privileges                    | ON                           |
| avoid_temporal_upgrade                     | OFF                          |
| back_log                                   | 151                          |
| basedir                                    | /usr/                        |
| big_tables                                 | OFF                          |
| bind_address                               | *                            |
| binlog_cache_size                          | 32768                        |
| binlog_checksum                            | CRC32                        |
| binlog_direct_non_transactional_updates    | OFF                          |
| binlog_error_action                        | ABORT_SERVER                 |
| binlog_expire_logs_seconds                 | 2592000                      |
| binlog_format                              | ROW                          |
| binlog_group_commit_sync_delay             | 0                            |
| binlog_group_commit_sync_no_delay_count    | 0                            |
| binlog_gtid_simple_recovery                | ON                           |
| binlog_max_flush_queue_time                | 0                            |
| binlog_order_commits                       | ON                           |
| binlog_row_image                           | FULL                         |
| binlog_row_metadata                        | MINIMAL                      |
| binlog_row_value_options                   |                              |
| binlog_rows_query_log_events               | OFF                          |
| binlog_stmt_cache_size                     | 32768                        |
| binlog_transaction_dependency_history_size | 25000                        |
| binlog_transaction_dependency_tracking     | COMMIT_ORDER                 |
| block_encryption_mode                      | aes-128-ecb                  |
| bulk_insert_buffer_size                    | 8388608                      |
| max_allowed_packet                         | 67108864                     |
| max_binlog_cache_size                      | 18446744073709547520         |
| max_binlog_size                            | 1073741824                   |
| max_binlog_stmt_cache_size                 | 18446744073709547520         |
| max_connect_errors                         | 100                          |
| max_connections                            | 151                          |
| max_delayed_threads                        | 20                           |
| max_digest_length                          | 1024                         |
| max_error_count                            | 1024                         |
| max_execution_time                         | 0                            |
| max_heap_table_size                        | 16777216                     |
| max_insert_delayed_threads                 | 20                           |
| max_join_size                              | 18446744073709551615         |
| thread_handling                            | one-thread-per-connection    |
| thread_stack                               | 286720                       |
| time_zone                                  | SYSTEM                       |
| timestamp                                  | 1530906638.765316            |
| tls_version                                | TLSv1.2,TLSv1.3              |
| tmp_table_size                             | 16777216                     |
| tmpdir                                     | /tmp                         |
| transaction_alloc_block_size               | 8192                         |
| transaction_allow_batching                 | OFF                          |
| transaction_isolation                      | REPEATABLE-READ              |
| transaction_prealloc_size                  | 4096                         |
| transaction_read_only                      | OFF                          |
| transaction_write_set_extraction           | XXHASH64                     |
| unique_checks                              | ON                           |
| updatable_views_with_limit                 | YES                          |
| version                                    | 8.0.12                       |
| version_comment                            | MySQL Community Server - GPL |
| version_compile_machine                    | x86_64                       |
| version_compile_os                         | Linux                        |
| version_compile_zlib                       | 1.2.11                       |
| wait_timeout                               | 28800                        |
| warning_count                              | 0                            |
| windowing_use_high_precision               | ON                           |
+--------------------------------------------+------------------------------+

When a LIKE clause is included, the statement only shows rows for variables whose names match the pattern. Use a LIKE clause as demonstrated to get the row for a certain variable −

% is a wildcard character that can be used in a LIKE clause to get a list of variables whose names match a pattern:

SHOW VARIABLES LIKE '%auto%';
SHOW GLOBAL VARIABLES LIKE '%auto%';

Output

+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_attach              | ON    |
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
| auto_replicate           | OFF   |
| autocommit               | ON    |
+--------------------------+-------+
SHOW GLOBAL VARIABLES LIKE 'version%';

Output

+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| version                 | 5.1.16-beta                  | 
| version_comment         | MySQL Community Server (GPL) | 
| version_compile_machine | i686                         | 
| version_compile_os      | pc-linux-gnu                 | 
+-------------------------+------------------------------+

The pattern to be matched accepts wildcard characters in any position. To match it literally, you should escape since it is a wildcard that matches any character. In actuality, this is rarely required.

Using these commands, you can use MySQL to display all of its system variables. No privilege is necessary to use them, as was previously stated; all that is needed is a connection to the database server.

Updated on: 22-Feb-2023

749 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements