如何按创建时间排序列出MySQL中的所有数据库
MySQL按创建时间查询数据库的实现方案
核心前提:MySQL 5.7及更早版本没有在系统表中直接存储数据库(schema)的创建时间,需要通过间接方式获取,8.0及以上版本可直接查询系统表获取精准结果。
方案1:MySQL 8.0+ 直接查询系统表
直接执行以下语句即可返回精准的数据库创建时间:
SELECT schema_name, create_time FROM information_schema.schemata ORDER BY create_time DESC;
方案2:低版本MySQL通过表创建时间推断
你之前使用的查询调用了MAX(create_time),获取的是库内最新表的创建时间,自然不符合数据库初始创建时间的需求。将聚合函数改为MIN(create_time)即可得到库内最早创建的表的时间,只要该库最早的表没有被删除,该时间就和数据库实际创建时间一致:
SELECT table_schema, MIN(create_time) db_create_time, MAX(update_time) db_last_update_time FROM information_schema.tables GROUP BY table_schema ORDER BY db_create_time DESC;
注意:如果数据库创建后删除过所有初始表,该方法返回的时间会晚于实际创建时间。
方案3:通过数据库目录创建时间查询(最精准的间接方案)
MySQL每个数据库都会在数据存储目录下对应一个同名文件夹,该文件夹的创建时间就是数据库的实际创建时间,只要你有权限访问数据库所在服务器的文件系统,就可以直接查看:
- Linux默认数据目录为
/var/lib/mysql/,执行以下命令即可按创建时间排序输出数据库:
ls -lt /var/lib/mysql/ | grep ^d
- Windows系统可打开MySQL的data目录,右键查看对应数据库文件夹的「创建时间」属性即可。
方案4:通过Binlog查询
如果你的MySQL开启了binlog日志,且日志保存完整未被清理,可以解析binlog找到对应CREATE DATABASE/CREATE SCHEMA语句的执行时间,即为数据库的创建时间。
内容的提问来源于stack exchange,提问作者Mick8695
相关产品推荐
相关产品推荐

