最终pipe理将我的debian虚拟服务器从etch升级到lenny后。 (阅读全文: debian:从etch升级到lenny失败 )
我现在从我的MySQL DB中丢失了数据(包括所有表)。 这些文件仍然存在于硬盘上,phpMyAdmin(进一步引用为PMA)仍然显示所有的数据库名称,但没有任何表格。 'mysql'和''information_schema'数据库仍然有他们的表。 但访问例如'mysql.user'给我以下错误:
#1017 - Can't find file: './mysql/user.frm' (errno: 13)
当然(和任何1337 PEBKAC一样)我没有mySQL转储文件。 ( 多次使用F字 )
有谁知道一个工具,可以从文件结构恢复丢失的数据?
在此先感谢任何帮助八层问题的帮助
如果你有文件,你应该能够查看数据(innodb表除外)。 当你有权限问题时,通常会给出这个错误 – 尝试将/ var / lib / mysql文件更改为mysql:mysql并查看它是否修复它。
chown -R mysql:mysql /var/lib/mysql
首先要做的事:不要惊慌。 很可能一切都没有丢失,你只需要弄清楚发生了什么。
升级过程中MySQL数据目录path是否改变? (我不这么认为 – 如果我的记忆服务于我,Etch和Lenny默认都是从/ var / lib / mysql中提取出来的东西,但是如果你以前用手改变了path,那么可能发生了一些事情)
如果你cd到你的/ var / lib / mysql,你能find它的目录mysql和文件user.frm吗? 如果你不能, find / -iname 'user.frm'返回一些东西?
在/ var / log下是否值得注意,特别是在/ var / log / mysql下 ?
如果一切都失败了,可以将Debian安装到另外一台计算机(或者一台虚拟机)上,在那里安装一个Debian Etch,把你的MySQL数据目录复制到那里,看看是否可行。 然后运行一个合适的mysqldump,并将其恢复到您的全新Lenny。
编辑:好吧,这只是一个权限问题。 无论如何,我会留下我的回复,以防别人帮忙。
那么,几件事情:
首先,备份您当前拥有的文件。 有些操作可能会对它们进行修改,所以你不希望比现在更糟。
我假设你的当前数据目录有一个mysql/user.frm文件。 如果是这样的话,问题是新版本的MySQL在错误的地方查找数据。 查看my.cnf上的文档 ,特别是关于DATADIR的部分。 您可以更改默认的datadir以指向您的旧文件集。 一旦你这样做,你会想运行命令mysql_upgrade来检查你的表,并升级任何表结构。 请参阅文档 。
如果你的数据目录中没有mysql/user.frm文件,那么出错了。 您将需要再次手动完成安装(不重新安装,只是安装后的步骤)。 为此,请运行程序mysql_install_db 。 这应该恢复用户表。 请注意,您将失去所有身份validation信息(因为user.frm不存在,因此已经消失)。
现在我要考虑的是,除非你select其中一条路线,否则我无法进一步提供帮助。 让我知道你select哪一个,我会尽力继续尽我所能。
这是索引文件,他们可以生成mysql修复
备份mysql文件并在phpmyadmin中input查询:
REPAIR TABLE tbl_name [, tbl_name] USE_FRM;
Mysql会修复它。