2017-06-29T17:38:11.740837Z 0 [Note] Event Scheduler: Loaded 0 events
2017-06-29T17:38:11.741470Z 0 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.7.18-0ubuntu0.16.04.1' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)
2017-06-29T17:38:11.741496Z 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check.
2017-06-29T17:38:11.741511Z 0 [Note] Beginning of list of non-natively partitioned tables
2017-06-29T17:38:11.882383Z 0 [Note] End of list of non-natively partitioned tables
2017-06-29T17:38:11.889889Z 5 [Note] Access denied for user 'root'@'localhost' (using password: NO)
我使用的是 Ubuntu 16.04 LTS。我不知道是什么在运行 SELECT,也不知道是什么在尝试以 root 用户身份登录。我不怀疑是恶意软件,因为这些是全新安装的机器。每次重启后,这些行都会立即出现。
我如何进一步调试正在运行 SELECT 的内容以及拒绝 root@localhost 访问的内容?我已关闭所有进程。
谢谢!
答案1
您使用的是 MySQL 5.7.18。参考手册中的注释第 22 章 分区:
从 MySQL 5.7.17 开始,MySQL 服务器中的通用分区处理程序已弃用,并在 MySQL 8.0 中删除,当用于给定表的存储引擎需要提供自己的(“本机”)分区处理程序时。目前,只有数据库引擎InnoDB和新开发银行 存储引擎可以。
使用具有非本机分区的表会导致
ER_WARN_DEPRECATED_SYNTAX
警告。此外,服务器在启动时会执行检查以识别使用非本机分区的表;对于发现的任何表,服务器都会将消息写入其错误日志。要禁用此检查,请使用
--disable-partition-engine-check
选项。为了准备迁移到 MySQL 8.0,任何具有非本机分区的表都应更改为使用提供本机分区的引擎,或将其设为非分区。例如,要将表更改为 InnoDB,请执行以下语句:
ALTER TABLE table_name ENGINE = INNODB;
根据接下来的两行,您似乎没有这些表,因此您可能不必担心此问题,除非不成功的 root 登录与该测试有关。如果您想确定,请以 root 身份登录并手动执行测试中的查询,即(具有其他引擎的表):
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE NOT IN ('INNODB', 'NDB');
无论您想使用--disable-partition-engine-check
手动测试之后的选项由您决定。但是,这只是几行日志,如果有人添加此类表,最好随时了解情况,直到升级到 MySQL 8.0。
答案2
这些信息会准确地告诉你发生的情况:
2017-06-29T17:38:11.741496Z 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check.
换句话说,mysql 本身正在执行'SELECT * FROM INFORMATION_SCHEMA.TABLES;'
。它这样做是为了获取使用已弃用的分区引擎的表的列表。
如果您不想这样做,您可以使用启动选项--disable-partition-engine-check
跳过此检查。