
- Learn MySQL
- MySQL - Home
- MySQL - Introduction
- MySQL - Installation
- MySQL - Administration
- MySQL - PHP Syntax
- MySQL - Connection
- MySQL - Create Database
- MySQL - Drop Database
- MySQL - Select Database
- MySQL - Data Types
- MySQL - Create Tables
- MySQL - Drop Tables
- MySQL - Insert Query
- MySQL - Select Query
- MySQL - Where Clause
- MySQL - Update Query
- MySQL - Delete Query
- MySQL - Like Clause
- MySQL - Sorting Results
- MySQL - Using Join
- MySQL - NULL Values
- MySQL - Regexps
- MySQL - Transactions
- MySQL - Alter Command
- MySQL - Indexes
- MySQL - Temporary Tables
- MySQL - Clone Tables
- MySQL - Database Info
- MySQL - Using Sequences
- MySQL - Handling Duplicates
- MySQL - SQL Injection
- MySQL - Database Export
- MySQL - Database Import
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.
- Related Articles
- System variables vs Local Variables in MySQL?
- System variables vs User-defined variables in MySQL?
- MySQL command for display current configuration variables?
- Display different variables in MySQL using LIKE?
- How can we display a list of currently existing MySQL databases on the server?
- How to restart MySQL server?
- How to copy tables or databases from one MySQL server to another MySQL server?
- How to find out port of MySQL Server?
- Structure of a Client Server System
- How to use MySQL LIKE to create a search system and display results on the basis of keyword?
- How to upgrade MySQL server from command line?
- How to display the domain of the server that loaded a document in JavaScript?
- MySQL Server and Server-Startup Programs
- How can I start MySQL Server?
- How can I shutdown MySQL Server?
