[MySQL]資料庫的備份與還原

資料庫匯出/備份

1. 備份單一資料庫:

$ mysqldump -u Username -p --opt DatabaseName > Backup.sql

2. 僅備份特定資料庫下的資料表:

$ mysqldump -u Username -p --opt DatabaseName Table1 Table2... > Backup.sql

3. 僅匯出資料表結構:

$ mysqldump -u Username -p --opt --no-data DatabaseName > Backup.sql

4. 備份全部的資料庫:

$ mysqldump -u Username -p -A --opt > AllBackup.sql

mysql/mysqldump/mysqladmin 與「登入」有關的參數說明:

  • -u Username: 用來存取 mysql 資料表的用戶名稱。此參數可省略,若省略,則表示為目前登入 linux 的用戶名稱。
  • -p: 於執行時再詢問密碼。
  • -pPassword: 用來存取 mysql 資料表的密碼,-p 與 Password 的中間不可有空格。

資料庫匯入/還原

1. 建立資料庫,再從備份檔匯入單一資料庫:

$ mysqladmin -u Username -p create DatabaseName
$ mysql -u Username -p DatabaseName < Backup.sql

2. 從備份檔匯入全部的資料庫 (不需先建立資料庫):

$ mysql -u Username -p < AllBackup.sql

狀況處理:

狀況 1.

匯入資料庫時出現錯誤訊息: Unknown collation: 'utf8mb4_unicode_ci' Unknown collation: 'utf8mb4_unicode_520_ci'

說明:

MySQL 於 v5.5.3 版之後才有「utf8mb4」的編碼格式。原本 utf8 的最大編碼長度為 3bytes,而 utf8mb4 的最大編碼長度為 4bytes,因此它比 utf8 可以儲存更多的字元。但是以常用的文字來講,utf8 已經完全足夠使用了。若不昇級 MySQL Server,則只須將匯入的字元編碼格式改為原本的 utf8。

解決方法:

先將備份檔中的 utf8mb4 字串替換成 utf8: (以下的三行指令需依照順序執行)

$ sed -i 's/utf8mb4_unicode_ci/utf8_general_ci/g' Backup.sql
$ sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/g' Backup.sql
$ sed -i 's/utf8mb4/utf8/g' Backup.sql

全部替換完再進行匯入:

$ mysql -u Username -p DatabaseName < Backup.sql

狀況 2.

以 mysqldump 匯出資料庫時出現錯誤訊息: Got error: 1044: Access denied for user 'backup'@'localhost' to database 'test' when using LOCK TABLES

說明:

這錯誤訊息已說明了用來執行 mysqldump 的帳號沒有「LOCK TABLES」權限! 通常用 root 帳號匯出資料庫不會發生這個問題,因為我們會給 root 所有的權限。然而我們在設定其它帳號時可能會忘了給它設定「LOCK TABLES」權限,而執行 mysqldump 至少需要「SELECT」與「LOCK TABLES」權限才行,最好再加上「SHOW VIEW」、「EVENT」與「TRIGGER」。

解決方法:

重新授予用戶權限:

grant SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER on *.* to 'backup'@'localhost' identified by '{Password}';
flush privileges;

狀況 3.

從 cpanel 下載的 MySQL 檔案格式為 *.gz,可以用 gunzip 解壓縮:

$ gunzip Backup.sql.gz

注意: 使用 gunzip 解壓縮後,原本的 *.gz 會被刪除!!若要保留舊檔,須改用下列指令:

 $ gunzip -c Backup.sql.gz > Backup.sql

資料庫離線備份/還原

MySQL 的資料庫放在 /var/lib/mysql 下,以資料庫的名稱做為目錄的名稱。直接將 /var/lib/mysql 下的資料庫目錄用 tar 指令個別壓縮起來即可做為備份。要還原再把檔案解壓縮回去。

要以這種方式執行備份與還原都必須先停止 MySQL 的服務:

$ service mysqld stop

參考網頁

處理 DNS 的 CNAME 造成收件者錯誤的問題

第一次遇到客戶因為自己 Server 的 DNS 問題,造成我方要寄信給客戶時,收件者的 EMail Address 會於 SMTP Server 端被自動變更 (寄給 [email protected] 會變成寄給 [email protected]),以致於客戶收不到 EMail 的問題!! (客戶可能以為是我方的問題)

我自己測試的結果是與 DNS 的 CNAME 有關:

C:\>nslookup -type=cname example.com
  Server:  dns.hinet.net
  Address: 168.95.1.1
  example.com canonical name = other.example.com

同時我在網路上找到一篇微軟的 KB 文件,已經寫得很清楚了,我就直接把內容放上來。

Read more

免跑銀行,直接線上領取 Google AdSense 廣告收入 (西聯匯款)

2020/12/30 更新:

Google 通知,將於 2021 年初停止透過西聯匯款支付款項,所以本網頁的教學大概也沒什麼用了。
如要繼續收到 Google 支付的款項,你必須登入自己的帳戶,然後新增或選取其他收款方式 (匯款或支票)。

之前的內容:

Google AdSense

約莫等了半年,終於又收到了一筆 Google AdSense 的廣告收入了,算是農曆過年前的一個小小小紅包。

在台灣,AdSense 的用戶可以使用「西聯匯款」來進行收款,目前台灣有支援西聯匯款的銀行有京城銀行大眾銀行元大銀行

我是使用「京城銀行」,這個有點陌生的銀行。它的「網路西聯匯款」服務可以直接將我的 AdSense 廣告收益從美金轉為台幣存入我的銀行帳戶,並且不收取任何手續費、不用等待,但是會有匯損的問題

不過我今天要操作收款時,發現做為「匯款人」的 Google 的身份又改變了! 原本的身份「Google Ireland Ltd. (愛爾蘭)」,更早之前是「Google Inc. (美國)」,現在的匯款人身份則為「Google Asia Pacific Pte. Ltd. (新加坡)」!

這個付款人的資訊會影響我們能否正常收款,不過沒關係,下面會教你如何識別付款者的身份。

Read more

[JavaScript]簡易網頁下拉選單,可支援 MouseOver 與 Click 事件

在網頁界已經有很多的「下拉選單」程式了,不過似乎都搞得太過複雜或太華麗了。

其實下拉選單的原理很簡單,一開始只是先讓「子選單」隱藏,當滑鼠移至「主選單」時再讓子選單顯示。因此,只要能控制網頁元件的 display 樣式屬性就已經成功一半了。

因為本人喜歡重新發明輪子,所以也寫了一個簡易的網頁下拉選單的程式,可以做為初學者入門的參考。

在範例的原始碼中,我儘量讓程式碼看起來淺顯易懂,並且只用 JavaScript,不使用 jQuery 或其它 Framework。我也儘量多寫一些註解,希望 JavaScript 的初學者能看得懂。

Read more

[jQuery]中文的 jQuery 教學資源

如果想學 jQuery 的話,可以從下列的教學資源開始,讀者應具有 HTML、JavaScript、CSS 的基礎。

網站

上官林傑 - ericsk (2007)

  1. jQuery 學習心得筆記 (1) – 前言
  2. jQuery 學習心得筆記 (2) – 怎麼使用 jQuery 來寫 JavaScript
  3. jQuery 學習心得筆記 (3) – jQuery 的事件(Event)處理
  4. jQuery 學習心得筆記 (4) – Ajax (上)
  5. jQuery 學習心得筆記 (5) – Ajax (下)
  6. jQuery 學習筆記 (6) - 操作 DOM 物件
  7. jQuery 學習筆記 (7) - 擴充 jQuery

以上這幾篇是我的 jQuery 啟蒙文章。
Read more

修復 Linux 開機出現檔案系統有不一致性 (UNEXPECTED INCONSISTENCY) 的錯誤問題

Linux 無法正常開機,出現錯誤訊息:

Checking filesystems

/dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
         (i.e., without -a or -p options)
                                                  [FAILED]

*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
Give root password for maintenance
(or type Control-D to continue):

錯誤訊息指出 /dev/sda1 分割區有不一致性的問題!!

Read more

[轉載]你們華人根本不愛家,你們只愛金錢

轉載自: 網路郵件


我們總以為自己是世界上最有家庭觀念、最講究親情的種族之一,並且深深地為之自豪,但在老外的眼中卻未必如此。

有一位澳洲的朋友談起了華人和澳洲人對家庭的重視。

沒想到,那幾位澳洲朋友說: 「你別生氣,其實我們覺得你們華人並不愛家,並不像你們自己說的這麽注重家庭。你們更愛金錢!」

我愕然,於是我記下了這些真誠的對話...

無論在澳洲還是在華人國家,你們華人的確很勤奮,華人在海外也能比當地人積蓄更多的錢財,但我不認為這是你們華人有經商的天賦,而是你們比我們更節儉,更能省,是通過降低生活標準來完成的金錢積累。你們平時很少上酒吧,周末也很少度假,甚至周末或假期都不休息。衣服都是從自己國家買了帶過去,因為自己國家這邊更便宜,我甚至看到有學生帶了很多碗過去。

你們會沒日沒夜的工作,把孩子都交給老人照管,除了關心孩子的學習成績外,你們忙得很少和孩子一起玩。聖誕節你們甚至都不休息。

所以,你們華人的孩子儘管學業上很優秀,但他們總是覺得自己很另類,覺得和當地人比起來,父母更關心的是家庭的金錢收入、關心的是他們的學習分數,而不是他們的快樂。

Read more

勒索病毒 (RansomWare) - 一種全新的商業模式

勒索病毒 (RansomWare)

近兩年來出現一種新型態的電腦病毒:「勒索病毒」。(關鍵字: RansomWare、Crypt0L0ocker、CryptoLocker、CryptWall)

這種病毒會將受害人電腦裡的文件類型的檔案加密 (包含連結到 NAS 的檔案),而受害人必須交付贖款才能取得解密程式。

由於病毒是使用很高階的加密技術,受害人即使能刪除病毒也救不回被加密的檔案。防毒軟體頂多能移除病毒,但仍無法解密檔案! 因此只能選擇交付贖款或放棄所有檔案。

而台灣的受害人甚至必須到「全家便利商店」購買 BitCoin 來付贖款,就算請店員打 165 也沒用!

唯有異地的檔案備份才能解除危機。

這種「勒索病毒」嚴然成為了一種新的「商業模式」,並且已經做出了口碑,未來只會衍生出更多的變種病毒。

Read more

談電腦防毒、網路安全與帳戶安全

本文是綜合我的經驗,以及身為一個 MIS 的血淚所交織出來的資安重點,寫的不算專業,但還是希望對於看到的人能有一點幫助。

防毒觀念

  1. 病毒也是一種「軟體」,必須有人去執行。散播病毒的人會設法引誘你去執行它。
  2. 防毒軟體只能防「已知病毒」,新的病毒必需在有人中毒並且回報病毒樣本之後才能研發出病毒碼。直到防毒軟體能全面防止新病毒通常是病毒已經肆虐了好幾天之後的事情了。
  3. 寫病毒的人如果覺得有利可圖,病毒會更新的比防毒軟體還勤快!!
  4. 個人的安全意識比防毒軟體更為重要,人的因素,永遠是資安最大的漏洞。

Read more

Linux 電子郵件防毒: ClamAV + Sendmail

本文要介紹的 Linux 的 E-Mail 防毒主要由兩個套件組成: clamav 與 clamav-milter。

其中「clamav」是防毒軟體、「clamav-milter」是 clamav 用來與 sendmail 整合的掃毒程式。

Read more

return top