最近在运行自己的网站时,遇到了一个很奇怪的问题,数据库莫名其妙被启用了,导致我无法正常使用。
首先,我检查了我的应用程序,确保没有任何代码在启用数据库。接着,我开始检查数据库本身。
mysql>show processlist; +----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+-------+------------------+ | 1 | root | localhost | NULL | Sleep | 5 | | NULL | | 2 | root | localhost | NULL | Sleep | 5 | | NULL | | 3 | root | localhost | mydb | Query | 0 | | show processlist; | +----+------+-----------+------+---------+------+-------+------------------+
我发现一个名为“mydb”的数据库正在被查询。我想知道是谁在查询它,于是执行以下查询:
mysql>SELECT * FROM information_schema.processlist WHERE db = 'mydb';
结果显示,存在一个名为“mystery_user”的用户在查询这个数据库。但是,我从未创建过这样一个用户。
这是其中一条结果:
+----+---------------+-----------+------+---------+------+--------------+------------------------+ | ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO | +----+---------------+-----------+------+---------+------+--------------+------------------------+ | 14 | mystery_user | localhost | mydb | Query | 0 | Sorting | SHOW FULL TABLES WHERE | +----+---------------+-----------+------+---------+------+--------------+------------------------+
我执行命令来杀掉这个进程,然后删除这个用户。
mysql>KILL 14; mysql>DROP USER 'mystery_user'@'localhost';
问题解决了!数据库不再被激活,我可以继续使用我的应用程序。