iT邦幫忙

1

MySQL .frm and ibdata1 複製到新的 Server上

最近公司電力瞬間斷電又重開,造成 Server (Ubuntu 13.10) 無法承受突然的事情發生,造成系統開機時會出現 /tmp/ 無法讀寫的錯誤訊息,而 Server 有做 Raid1 的機制,想說試看看拔一顆起來會如何,當我關機後將一顆硬碟拔起來後開機,發現已經無法進去 Ubuntu 的畫面了,就算把第二顆拔起來或是兩顆在放回去,都已經來不急了,畫面都告訴我找不到系統了,進 BIOS 也看不到硬體裝置,現在後續工作就是要救裡面的資料,使用 R-Studio 軟體花了一天的時間掃描找到了原本裡面的資料,想請問各位大大,我總共備份了 MySQL 內重要的資料夾:

  1. /etc/mysql/
  2. /var/lib/mysql/ibdata1
    /ib_logfile0
    /ib_logfile1
    /mysql_upgrade_info
    /table_name
    |db.opt
    |*.frm

現在想要在另一台同樣裝 mysql ,然後把救回的資料倒到新的 Server 內,所以我將 ibdata1, ib_logfile0, ib_logfile1, table_name (含底下資料夾) 複製一份到新 Server /var/lib/mysql 內,重啟 mysql 後,輸入指令後卻出現錯誤訊息:
$mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

請問我該如何解決?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

2
bestlong
iT邦研究生 4 級 ‧ 2016-07-09 17:42:52

若單純只是卡在 root@localhost 的密碼驗證問題

可以採取忘記 root 密碼進行重設的流程

本人筆記可參考 http://www.bestlong.idv.tw/thread-62-1-1.html

官方文件 http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Cherry iT邦新手 5 級 ‧ 2016-07-09 19:32:35 檢舉

我使用 docker image "tutum/lamp"

執行$service mysql stop

  • Stopping MySQL database server mysqld
    ...fail!

執行 $kill all -TERM mysql

  • bash: kill: all: arguments must be process or job IDs

  • bash: kill: -TERM: arguments must be process or job IDs

  • bash: kill: mysql: arguments must be process or job IDs

似乎沒辦法關閉 mysql.

1
隨風奶爸
iT邦好手 1 級 ‧ 2016-07-11 00:25:11

修改你的my.cnf 配置文件,

在里面的 [mysqld]中某 加入下面的一行

skip-grant-tables

然后保存,重啟mysqld 服務,你可以使用任何用戶名以root管理員的身份登錄 MySQL 了。

然后到mysql 中修改user表:

update user set password=PASSword('這裡是你要使用的新密碼') where user='root';
flush privileges;

一定要用password函數

最后刪除上面my.cnf所添加的內容,重啟服務。

Cherry iT邦新手 5 級 ‧ 2016-07-25 23:31:15 檢舉

感謝指導,後來利用 docker 13.10 設定與 SERVER 一樣的環境,MySQL 使用 5.5,就有成功把資料庫救回來囉! 以下寫了我的心得感想:
http://www.yaru.news/index.php/mysql

恭喜你!做出來的東西就是你的~一輩子跟著跑不掉嚕~

我要發表回答

立即登入回答