
最終設法將我的 Debian 虛擬伺服器從 etch 升級到 lenny。 (閱讀全文:debian:從 etch 升級到 lenny 失敗)
我現在丟失了 MySQL 資料庫中的資料(包括所有表)。這些檔案仍然存在於硬碟上,而且 phpMyAdmin(進一步稱為 PMA)仍然顯示所有資料庫名稱,但沒有任何表。 “mysql”和“information_schema”資料庫仍然有它們的表。但是存取例如“mysql.user”會出現以下錯誤:
#1017 - Can't find file: './mysql/user.frm' (errno: 13)
當然(如任何第1337章是)我沒有 mySQL 轉儲檔案。 (多次使用髒話)
有誰知道有一種工具可以從檔案結構中恢復遺失的資料?
預先感謝您對第 8 層問題(即我)的任何幫助
答案1
如果您有文件,您應該能夠查看資料(innodb 表除外)。當您遇到權限問題時,通常會出現此錯誤 - 嘗試將 /var/lib/mysql 檔案變更為 mysql:mysql 並查看是否修復它。
chown -R mysql:mysql /var/lib/mysql
答案2
首先要做的事情是:不要驚慌。很可能一切都沒有丟失,您只需要弄清楚發生了什麼。
升級過程中MySQL資料目錄路徑是否有變化? (我不這麼認為 - 如果我沒記錯的話,Etch 和 Lenny 預設都會從 /var/lib/mysql 提供內容。但是如果您之前手動更改了路徑,那麼可能會發生一些事情)
如果你 cd 到 /var/lib/mysql,你能找到該目錄嗎mysql和文件用戶.frm在它下面?如果不能,是否會
find / -iname 'user.frm'
返回一些東西?下面有什麼值得注意的地方/var/日誌,特別是在/var/日誌/mysql?
如果其他一切都失敗了,請在其他電腦(或虛擬機器)上設定另一個 Debian 安裝,在那裡安裝 Debian Etch,將 MySQL 資料目錄複製到那裡,看看是否有效。然後運行適當的mysql轉儲並將其恢復到你全新的萊尼身上。
編輯:好吧,這只是權限問題。無論如何,我都會在這裡留下我的回复,以防對其他人有所幫助。
答案3
嗯,有幾件事:
首先,備份您目前擁有的文件。某些操作可能會對它們進行修改,因此您不希望情況比現在更糟。
我假設您目前的資料目錄有一個mysql/user.frm
檔案。如果是這樣的話,問題就在於新版本的 MySQL 正在錯誤的位置尋找資料。查看文件關於my.cnf
,特別是關於 的部分DATADIR
。您可以變更預設資料目錄以指向您的舊檔案集。完成此操作後,您將需要執行命令mysql_upgrade
來檢查表並升級任何表結構。 查看文件。
如果您的資料目錄中沒有mysql/user.frm
文件,則表示出現了問題。您需要再次手動完成安裝(不是重新安裝,只是安裝後步驟)。為此,請運行該程式mysql_install_db
。這應該會恢復用戶表。請注意,您將丟失所有身份驗證資訊(因為 user.frm 不存在,因此它已經消失了)。
我暫時就這樣考慮到,在您選擇其中一條路線之前,我無法提供進一步的幫助。讓我知道您選擇哪一個,我將盡力繼續盡我所能提供幫助。
答案4
這是他們可以生成的索引文件mysql修復
備份mysql檔案並在phpmyadmin中輸入查詢:
REPAIR TABLE tbl_name [, tbl_name] USE_FRM;
Mysql會修復它。