Posts Tagged ‘ Linux

CentOS 如何加入第三方 Yum 套件庫: EPEL

EPEL 的全稱為「Extra Packages for Enterprise Linux」,是由 Fedora 社群打造,為 RHEL 及衍生發行版如 CentOS、Scientific Linux、Rocky Linux、Oracle Linux...等提供高品質套件庫的專案。裝了 EPEL 之後,等於添加了一個資源豐富的第三方套件庫。

Read more

[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

參考網頁

修復 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

Linux 電子郵件防毒: ClamAV + Sendmail

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

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

Read more

如何檢測 logrotate 的錯誤

logrotate 的主要功能是將舊的 log 檔改檔名,並建立一個新的檔案來讓 syslog 存放新的 log。

錯誤狀況

我的 Linux 系統都有持續在寫入 log,但是單一的 log 檔檔案過大,表示已經有幾個月沒有執行 logrotate 了! 因此研判 syslog 的功能是正常的,可能是 logrotate 的運作出了問題。

Read more

CentOS 6.x 安裝 nslookup 的步驟 (與 yum 如何查詢套件)

Linode VPS 佈署的 CentOS 6.x 已經沒有 nslookup 這個工具程式了!!

以下將藉由安裝 nslookup 的同時,順便也復習一下 yum 的查詢套件功能...

Read more

Linux 站長請檢測您的網站是否有 OpenSSL 的 Heartbleed 嚴重漏洞

OpenSSL Heartbleed 漏洞

Linux 站長請檢測您的網站是否有 OpenSSLHeartbleed 嚴重漏洞,此漏洞會造成加密的封包在網路上被截取:

  • OpenSSL 影響版本: 1.0.1 ~ 1.0.1f / 1.0.2-beta ~ 1.0.2-beta1
  • OpenSSL 修復版本: 1.0.1g / 1.0.2-beta2

檢測方法

至「Test your server for Heartbleed」輸入你的網站網址做檢測。

參考網頁

 

Linode VPS 磁碟容量加倍與擴充方法

Linode VPS 自從四月的「記憶體容量加倍」的優惠昇級之後,最近又有新的驚喜了,Linode 乾脆就來個「磁碟容量加倍」免費大放送,每個方案的磁碟容量都加倍,人人都有獎,不過要去領取才行。


Read more

iptables 封鎖的指令與簡單的封鎖程式

安裝了一台新的 Linux Server,有個來自中國的 IP「218.25.253.100」連續好幾天一直在嘗試以 ssh 登入我的 Server,雖然我也裝了 fail2ban,不過只設三個小時的封鎖時間,所以每天會看到 fail2ban 告訴我這個 IP 被封鎖了 n 次!!看了很煩,所以直接用 iptables 把它給封鎖了。
Read more

CentOS 5/6 快速安裝 VPN Server (PPTP)

「VPN」是一種常用於中、大型企業或團體與團體間的私人網路的通訊方法。藉由 VPN 所建立的加密通道,可以讓你從外部存取公司內部的資源,或透過連線到 VPN 的 Server 當跳板,去存取被限制的外部資源 (俗稱「翻牆」)。

在使用 VPN 之前,你得先有一台提供服務的 VPN Server,現在滿多人會去租用國外的 VPS 當 Server,要架站兼翻牆,Linode 是不錯的選擇。

以下把握幾個重點即可快速完成 Linux 的 PPTP 的 VPN Server 架設:

  • PPP - 點對點協定 (Point-to-Point Protocol)
  • PPTP - 點對點通道協定 (Point-to-Point Tunneling Protocol)
  • iptables - 設定封包轉發規則

安裝步驟

1. 判斷 ppp 是否可用:

$ cat /dev/ppp
cat: /dev/ppp: No such device or address

如果出現跟上面一樣的訊息「No such device or address」,那不用擔心,這表示 ppp 是可用的,可以正常架設 pptp。

如果出現的是「Permission denied」,表示 ppp 是關閉的,下面的步驟就可以不用再看了。
Read more

return top