如何使用带有安全bash命令的InnoDB表删除未映射的MYSQL数据库?

如何使用带有安全bash命令的InnoDB表删除未映射的MYSQL数据库?,mysql,bash,Mysql,Bash,这就是我想到的,但我的导师给了我以下反馈: 以这种方式删除MySQL数据库可能会导致MySQL服务器出现灾难性问题,从而导致MySQL服务器丢失。以这种方式删除使用InnoDB表的数据库,并尝试从备份中还原该数据库以了解更多信息 删除未映射数据库的最安全命令是什么?您的指导老师是对的,InnoDB使使用shell工具操作表和数据库变得更加困难。原因是InnoDB在IBMData1文件中管理一个数据字典,该字典对数据库和表以及它们所属的表空间文件进行编目。如果移动、重命名或删除shell中的文件,

这就是我想到的,但我的导师给了我以下反馈:

以这种方式删除MySQL数据库可能会导致MySQL服务器出现灾难性问题,从而导致MySQL服务器丢失。以这种方式删除使用InnoDB表的数据库,并尝试从备份中还原该数据库以了解更多信息


删除未映射数据库的最安全命令是什么?

您的指导老师是对的,InnoDB使使用shell工具操作表和数据库变得更加困难。原因是InnoDB在IBMData1文件中管理一个数据字典,该字典对数据库和表以及它们所属的表空间文件进行编目。如果移动、重命名或删除shell中的文件,InnoDB的数据字典现在会引用过期的信息,并且随后尝试使用这些表名或数据库名会发生冲突

有点像当你买了一部新手机,你不断接到前手机号码所有者朋友的电话

如果您使用SQL或其他MySQL命令删除数据库,InnoDB将确保更新其数据字典并使其与现实保持同步

$ user=jocular; cat ~/list|while read db; do echo rm -vi /var/lib/mysql/$user_$db; done

Mysqladmin会在删除数据库之前提示您,因为无法撤消该更改。但是,您也可以使用-f选项在没有提示的情况下强制删除。小心别掉错数据库

您可以使用whileread-rdb;做读取数据库时,完成<~/list而不是cat~/list |;做完成。。。这种回路不需要使用cat@IdrissNeumann,没错,这个解决方案可以被称为its,但我想让替代方案尽可能类似OP的例子。该格式也可能仅将cat用作占位符,其中数据库列表的真正来源是另一个命令,这将证明使用管道是合理的。
user=jocular; cat ~/list | while read db; do mysqladmin drop "${user}_${db}" ; done