MySQL 如何显示服务器的系统变量
使用SHOW VARIABLES显示MySQL系统变量值。这条语句不需要任何权限。只有连接到服务器的能力是必要的。
语法
SHOW [GLOBAL | SESSION] VARIABLES
[LIKE 'pattern' | WHERE expr]
如果存在LIKE子句,则告诉SHOW VARIABLES要匹配哪些变量名称。要根据更广泛的标准选择行,使用WHERE子句。
SHOW VARIABLES接受一个可选的全局或会话变量范围的修改:
- 当GLOBAL被用作修改器时,该语句显示全局系统变量的值。对于与MySQL的新连接,这些是用于初始化相关会话变量的值。如果一个变量没有全局值,则不显示该变量的值。
-
当使用SESSION修饰符时,该语句显示对当前连接有效的系统变量值。如果一个变量没有会话值,就会显示它的全局值。SESSION是LOCAL的另一种说法。
-
如果没有指定修改器,则默认为SESSION。
SHOW VARIABLES有一个与版本有关的显示宽度的限制。使用SELECT作为变数的变通办法,因为变数的值非常长,不能完全显示。例如 –
SELECT @@GLOBAL.innodb_data_file_path;
虽然像version_comment这样的只读变量是个例外,但大多数系统变量都可以在服务器启动时进行配置。通过SET语句,很多东西可以在运行时被改变。
这里是输出的一部分。你的服务器的名称和值的列表可能不同。
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 |
+--------------------------------------------+------------------------------+
当包含LIKE子句时,语句中只显示名称与模式相匹配的变量的行。Use a LIKE clause as demonstrated to get the row for a certain variable −
%是一个通配符,可以在LIKE子句中使用,以获得名称符合模式的变量列表。
SHOW VARIABLES LIKE '%auto%';
SHOW GLOBAL VARIABLES LIKE '%auto%';
输出
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_attach | ON |
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| auto_replicate | OFF |
| autocommit | ON |
+--------------------------+-------+
SHOW GLOBAL VARIABLES LIKE 'version%';
输出
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| version | 5.1.16-beta |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | i686 |
| version_compile_os | pc-linux-gnu |
+-------------------------+------------------------------+
要匹配的模式在任何位置都接受通配符。要从字面上匹配它,你应该转义,因为它是一个可以匹配任何字符的通配符。在实际中,这很少需要。
使用这些命令,你可以使用MySQL来显示其所有的系统变量。如前所述,使用这些命令不需要任何权限;所需要的只是与数据库服务器的连接。