MySQL

MySQL 是目前網頁使用上最流行的資料庫系統。支援使用 WordPress、Drupal 或是 Magento 等等的應用程式。是許多網頁開發人員的首選。

目前在 Simple Hosting 主機上可以選擇 MySQL 5.7 (Percona) 搭配任何一種程式語言使用。

您可以在 Simple Hosting 上建立無限多的資料庫與使用者,唯一的限制只有硬碟大小,您可以隨時增加硬碟,最大容量為 1TB。

您可以從網頁介面或是終端機上管理 MySQL 資料庫。本教學將會介紹如何存取、建立與管理 Simple Hosting 上的 MySQL 資料庫。

連結資料庫

MySQL 資料庫可透過 localhost 介面連結,無法從主機外部連上。

最好的連接方法是夠過 Unix socket 的方式連接資料庫,路徑如下所示。預設帳號 (root) 與資料庫 (default_db) 已預先建立好,您可以用來快速測試連線是否能正常運作。

預設連線設定資訊:

Host: localhost
Socket: /srv/run/mysqld/mysqld.sock
User: root
Password: <none>
Database: default_db

建議您為您的應用程式或是網站 建立新的獨立帳號與密碼來加強安全 。請參照下方下方說明。

使用 phpMyAdmin 來管理您的資料庫

透過您帳號的主機管理介面登入主機資料庫後,請在管理介面中點選 「資料庫」 選單。

點下 「資料庫管理」 中的 「前往 phpMyAdmin」 按鈕,並且輸入主機的使用者帳號/密碼。

登入主機後,您就會看到 phpMyAdmin 的登入頁面。

預設的帳號是 root ,沒有密碼。請在使用者名稱欄位輸入 root ,密碼保持空白,按下 「執行」 後就可以完成登入並看到 phpMyAdmin 資料庫管理介面。

建立 MySQL 資料庫

要建立資料庫,需先從 Simple Hosting 的管理介面中點選 「資料庫」 選單,並且登入 phpMyAdmin 。

接者,點選左方選單中的 「新增」,輸入資料庫名稱與編碼後點選 「建立」。

接下來,您需要建立使用者權限。

點選左側選單中新建立的資料庫,再選擇上方的 「權限」,點選 「新增使用者帳號」 並填入表單內的資訊來建立使用者。

匯入既有資料庫

要匯入資料庫到 Simple Hosting 中,請前往 phpMyAdmin 管理頁面,並且按下上方選單的 「匯入」 。

備註

phpMyAdmin 可支援壓縮檔。檔案命名格式需符合:‘name.(format).(compression)’

如果您的資料庫檔案很大,您需要透過 sFTP 將 .sql 檔上傳到 Simple Hosting 內的 /lamp0/tmp 目錄中。您就可以透過 phpMyAdmin 匯入很大的檔案。

使用命令列管理您的資料庫

要使用命令列來管理資料庫,您需要透過緊急終端機登入主機。

注意,終端機會在閒置數分鐘後就自動斷線。此情況下,您不需要重新啟動緊急終端機,只 需要重新建立一個新的 SSH 連線即可。

連接資料庫

在您登入 SSH 終端機之後,您就可以使用 MySQL 用戶端指令連接 MySQL 資料庫 (如果沒有設定 root 密碼):

mysql -u root

若您有設定 root 密碼,請使用下列指令並輸入密碼登入:

mysql -u root -p

匯出資料庫

匯出資料庫能協助您備份資料庫。您可以使用 mysqldump 指令 (如果您要匯出全部的資料庫):

mysqldump -u root -p --all-databases > /srv/data/tmp/backup_mysql.sql

或是您只想要匯出單一資料庫 (將範例中的 my_database 替換成您實際要匯出的資料庫):

mysqldump -u root -p --database my_database > /srv/data/tmp/backup_mysql.sql

您也可以使用 anacron 來執行定期匯出。請參閱 anacron 的說明文件。

備註

注意!除了虛擬站台的目錄外,只有 /srv/data/tmp/srv/data/home 目錄可以寫入。因此,我們建議您建立一個獨立的存取目錄來存放所有 MySQL 匯出的檔案。

重設 MySQL 的 『root』 使用者密碼

您可以直接從 Gandi 的 Simple Hosting 介面重設 root 的密碼,點擊 「重設資料庫密碼」 即可。

完成後您的 root 帳號的密碼就會被重設為空白。重設密碼的動作並不會影響資料庫內的資料。

備註

在您變更密碼後,請記得同時要修改其他會連線到資料庫的程式碼設定。

日誌檔

您可以從 Simple Hosting 的控制台、sFTP 或是 SSH 終端機中查閱日誌檔。

  • error.log:MySQL 伺服器相關的日誌。您可查閱資料表是否有損毀與修復的狀況。
  • show-queries.log:您可以查看是否有執行過久的查詢。可以了解是否有資料表被鎖住。

日誌檔範例

以下範例為 MySQL 重新啟動的日誌檔:

120614 16:09:59 [Note] Plugin 'FEDERATED' is disabled.
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Compressed tables use zlib 1.2.6
120614 16:09:59  InnoDB: Initializing buffer pool, size = 8.0M
120614 16:09:59  InnoDB: Completed initialization of buffer pool
120614 16:09:59  InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
120614 16:09:59  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
120614 16:10:00 InnoDB Plugin 1.0.17 started; log sequence number 2657932
120614 16:10:00 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.1.61-2'  socket: '/srv/run/mysqld/mysqld.sock'  port: 0  (Debian)

下方的日誌範例中,顯示了資料表曾被檢視,並且發現資料表錯誤,MySQL 嘗試自動修復的紀錄:

120614 16:04:45 [ERROR] /usr/sbin/mysqld: Table './wp/wp_comments' is marked as crashed and should be repaired
120614 16:04:45 [Warning] Checking table:   './wp/wp_comments'
120614 16:04:45 [ERROR] /usr/sbin/mysqld: Table './wp/wp_links' is marked as crashed and should be repaired
120614 16:04:45 [Warning] Checking table:   './wp/wp_links'
120614 16:04:45 [ERROR] /usr/sbin/mysqld: Table './wp/wp_options' is marked as crashed and should be repaired
120614 16:04:45 [Warning] Checking table:   './wp/wp_options'