在 Mysql 中自动创建视图
Posted
技术标签:
【中文标题】在 Mysql 中自动创建视图【英文标题】:Views getting create automatically in Mysql 【发布时间】:2021-03-26 16:00:03 【问题描述】:今天我注意到突然在我的数据库中创建了许多视图,其中大多数视图都与系统性能有关。我很确定我没有创建这些视图,因为 DEFINER 是
DEFINER=mysql.sys
@localhost
我是否是任何 SQL 注入的受害者,是否有人对我的数据库进行过处理,或者是否有人错误地更改了创建这些视图的任何配置?
如果这是一个配置更改,我该如何撤消配置更改,如果有任何其他问题可以解决这个问题?
以下是创建的视图。
host_summary
host_summary_by_file_io
host_summary_by_file_io_type
host_summary_by_stages
host_summary_by_statement_latency
host_summary_by_statement_type
innodb_buffer_stats_by_schema
innodb_buffer_stats_by_table
innodb_lock_waits
io_by_thread_by_latency
io_global_by_file_by_bytes
io_global_by_file_by_latency
io_global_by_wait_by_bytes
io_global_by_wait_by_latency
latest_file_io
memory_by_host_by_current_bytes
memory_by_thread_by_current_bytes
memory_by_user_by_current_bytes
memory_global_by_current_bytes
memory_global_total
metrics
processlist
ps_check_lost_instrumentation
schema_auto_increment_columns
schema_index_statistics
schema_object_overview
schema_redundant_indexes
schema_table_lock_waits
schema_table_statistics
schema_table_statistics_with_buffer
schema_tables_with_full_table_scans
schema_unused_indexes
session
session_ssl_status
statement_analysis
statements_with_errors_or_warnings
statements_with_full_table_scans
statements_with_runtimes_in_95th_percentile
statements_with_sorting
statements_with_temp_tables
user_summary
user_summary_by_file_io
user_summary_by_file_io_type
user_summary_by_stages
user_summary_by_statement_latency
user_summary_by_statement_type
version
wait_classes_global_by_avg_latency
wait_classes_global_by_latency
waits_by_host_by_latency
waits_by_user_by_latency
waits_global_by_latency
x$host_summary
x$host_summary_by_file_io
x$host_summary_by_file_io_type
x$host_summary_by_stages
x$host_summary_by_statement_latency
x$host_summary_by_statement_type
x$innodb_buffer_stats_by_schema
x$innodb_buffer_stats_by_table
x$innodb_lock_waits
x$io_by_thread_by_latency
x$io_global_by_file_by_bytes
x$io_global_by_file_by_latency
x$io_global_by_wait_by_bytes
x$io_global_by_wait_by_latency
x$latest_file_io
x$memory_by_host_by_current_bytes
x$memory_by_thread_by_current_bytes
x$memory_by_user_by_current_bytes
x$memory_global_by_current_bytes
x$memory_global_total
x$processlist
x$ps_digest_95th_percentile_by_avg_us
x$ps_digest_avg_latency_distribution
x$ps_schema_table_statistics_io
x$schema_flattened_keys
x$schema_index_statistics
x$schema_table_lock_waits
x$schema_table_statistics
x$schema_table_statistics_with_buffer
x$schema_tables_with_full_table_scans
x$session
x$statement_analysis
x$statements_with_errors_or_warnings
x$statements_with_full_table_scans
x$statements_with_runtimes_in_95th_percentile
x$statements_with_sorting
x$statements_with_temp_tables
x$user_summary
x$user_summary_by_file_io
x$user_summary_by_file_io_type
x$user_summary_by_stages
x$user_summary_by_statement_latency
x$user_summary_by_statement_type
x$wait_classes_global_by_avg_latency
x$wait_classes_global_by_latency
x$waits_by_host_by_latency
x$waits_by_user_by_latency
x$waits_global_by_latency
【问题讨论】:
也许你会在 dba.stackexchange.com 上得到更好的答案 【参考方案1】:没问题。注意这些视图在哪些数据库中。它们在系统数据库中(可能是 sys、information_schema、performance_schema 和 MySQL),而不是你的。而且,是的,这些都是故意的视图。
"suddenly" -- 你最近升级到新版本的 MySQL 了吗?过去没有任何系统生成的视图。
【讨论】:
这些视图是在我的应用程序数据库中创建的,而不是在系统数据库中...我最近没有执行任何升级。 @VikasMishra - 你能提供其中一种观点吗?也许我们可以(1)看看它们是否存在于另一台机器上,(2)看看它们做了什么。【参考方案2】:sys
架构中存在视图并不能证明您是 SQL 注入或篡改的受害者。
这些观点是官方的并记录在案:https://dev.mysql.com/doc/refman/8.0/en/sys-schema.html
sys
模式在 MySQL 5.6 中是可选的。这些视图是由 MySQL 的一位工程经理开发的。但在 5.6 中,您必须通过运行从 github 下载的 SQL 脚本手动安装它们(请参阅https://github.com/mysql/mysql-sys)。
在 MySQL 5.7 中,sys
架构成为默认安装的一部分。如果您从 MySQL 5.6 升级到 5.7,将安装 sys
架构,以及更改系统架构中的一些其他表和视图,例如 mysql
、information_schema
和 performance_schema
。
【讨论】:
我对sys
架构中存在的这些视图没有任何问题,但是这些视图是在我的应用程序数据库中创建的……这些视图在一个月前不存在,但突然它们弹出了无处,我什至没有对数据库进行任何升级。
@VikasMishra - 你运行的是什么版本?【参考方案3】:
我们的一位开发人员启用了性能监控,因此创建了这些视图。
【讨论】:
以上是关于在 Mysql 中自动创建视图的主要内容,如果未能解决你的问题,请参考以下文章