網站上的每一筆會員資料、每一張訂單、每一篇文章,都存在資料庫伺服器裡;網頁只是把它們撈出來排好而已。資料庫伺服器是網站最有價值也最不能出錯的一層,網站被入侵、資料外洩、改版後資料遺失,問題幾乎都發生在這裡。這篇文章說明資料庫伺服器是什麼、怎麼運作、MySQL 等常見軟體怎麼選,以及網站主一定要確認的備份與安全事項。本文屬於《伺服器系列》,總覽見〈伺服器是什麼〉。
一、資料庫伺服器是什麼?
資料庫伺服器(Database Server)是專門儲存、管理與提供資料的伺服器軟體,應用程式透過查詢語言向它要資料或寫入資料,由它負責正確、快速且安全地完成。它把「資料怎麼存在磁碟上」這個複雜問題包起來,程式只要用 SQL 說「給我這位會員的所有訂單」,其餘由資料庫處理。
常見的資料庫軟體是 MySQL、MariaDB、PostgreSQL、Microsoft SQL Server 與 Oracle,它們都屬於關聯式資料庫:資料放在有欄位的表格裡,表格之間用鍵值互相關聯。另一類是 NoSQL 資料庫,例如以文件為單位的 MongoDB、以鍵值為單位的 Redis,適合結構多變或需要極快讀取的資料。
二、資料庫伺服器怎麼運作?
資料庫採客戶端與伺服器架構:應用程式(客戶端)連線到資料庫伺服器,送出 SQL 敘述,伺服器解析、執行、回傳結果。一次查詢的內部流程大致如下:
- 連線與驗證應用程式用帳號密碼連上資料庫,通常透過連線池重用連線,避免每次請求都重新建立。
- 解析與最佳化資料庫把 SQL 轉成執行計畫,決定用哪個索引、先查哪張表;有沒有建對索引,是查詢快慢差距懸殊的關鍵。
- 執行與鎖定讀取或修改資料時上鎖,避免兩個人同時改同一筆造成錯亂;多步驟操作包在交易(transaction)裡,全部成功才生效。
- 回傳與記錄把結果集傳回應用程式,並把變更寫進日誌,以便故障後復原或同步到備援機器。

SQL(Structured Query Language)是所有關聯式資料庫的共同語言:SELECT 查詢、INSERT 新增、UPDATE 修改、DELETE 刪除,各家在細節上略有差異,但基本語法通用。
三、主要功能:存、查、鎖、護
- 儲存與索引:有效率地把大量資料放在磁碟,並用索引讓查詢不必逐筆掃描。
- 查詢與彙整:篩選、排序、分頁、跨表關聯、統計加總,都在資料庫內完成,比抓回程式再算快得多。
- 交易與一致性:確保「扣庫存並建立訂單」這類多步驟操作不會只做一半,多人同時操作也不會互相覆蓋。
- 權限與安全:不同帳號只能碰自己該碰的資料表,連線可加密,敏感欄位可加密儲存。
- 備份、複寫與復原:定期備份、即時複寫到另一台機器,故障時能切換或還原到某個時間點。
四、常見的資料庫伺服器軟體與怎麼選
| 軟體 | 類型與授權 | 特點與常見情境 |
|---|---|---|
| MySQL | 關聯式,開放原始碼(Oracle 維護) | 網站最普及的資料庫,幾乎所有虛擬主機內建,WordPress 與多數 PHP 系統的預設選擇 |
| MariaDB | 關聯式,開放原始碼 | 由 MySQL 分支而來、高度相容,許多主機商與 Linux 發行版改以它取代 MySQL |
| PostgreSQL | 關聯式,開放原始碼 | 功能最完整、標準遵循度高,近年開發者調查中最受歡迎,適合複雜查詢、地理資料與新專案 |
| Microsoft SQL Server | 關聯式,商業授權(有免費 Express 版) | 微軟生態的企業系統、ASP.NET 專案、需要與 Windows 網域整合 |
| Oracle Database | 關聯式,商業授權 | 大型企業與金融核心系統,授權成本高 |
| SQLite | 關聯式,公有領域 | 單一檔案、不需伺服器程序,適合 App、嵌入式與小工具,不適合多人同時寫入的網站 |
| MongoDB、Redis | NoSQL | MongoDB 存結構多變的文件;Redis 當快取與會話儲存,常和關聯式資料庫搭配使用 |
選擇原則很簡單:主機已經提供什麼就用什麼。中小企業網站用 MySQL 或 MariaDB 綽綽有餘;新的自建系統可以考慮 PostgreSQL;已在微軟生態就用 SQL Server。真正影響效能的不是品牌,而是索引有沒有建對、查詢有沒有寫好。
五、在網站架構中的位置
資料庫伺服器是三層架構的最後一層,只和應用程式伺服器對話,永遠不該直接對網際網路開放。訪客送出搜尋,網頁伺服器轉給應用程式伺服器,應用程式伺服器才向資料庫查詢,資料原路返回。

小型網站的三層通常裝在同一台主機,資料庫只聽本機連線;規模變大後把資料庫搬到獨立機器,並加上唯讀複本分擔查詢。不論哪種配置,資料庫的連接埠(MySQL 預設 3306)都不應該從外部網路連得到,這是資料庫資安的第一條規則。
六、備份與安全:網站主必須確認的五件事
- 備份頻率與保留期:問清楚每天備份幾次、保留幾天、放在哪裡;只放在同一台主機的備份,主機壞了就一起消失。
- 有沒有實際還原過:沒測試過還原的備份不算備份。改版或搬家前,先在測試環境用備份還原一次。
- 參數化查詢:把使用者輸入直接串進 SQL 是 SQL 注入的來源,這類漏洞一旦被利用,可能整批外洩資料庫內容;正確寫法在各語言專文都有,例如〈PHP 是什麼〉第五節。
- 最小權限:網站用的資料庫帳號只給必要的權限,不要用 root;後台管理與網站前台用不同帳號。
- 版本與加密:資料庫軟體要在支援期內、定期更新;密碼欄位必須以雜湊儲存,個資欄位視需求加密。

七、本站使用 MySQL 的經驗
本站(newscan.com.tw)的文章系統、詢價表單與後台都存在 MySQL,多年維運中有三個做法一直沿用:
- 每次批次修改前先匯出:我們調整文章內容或網址設定時,一律先匯出相關資料表,再執行 SQL,並在本機環境先跑一次確認影響的筆數與內容都正確。
- SQL 帶條件防呆:批次更新的每一條敘述都加上「只在符合特徵時才更新」的條件,重複執行也不會重複套用,這讓更新可以安全地重跑。
- 字元集用 utf8mb4:舊的 utf8 存不了部分罕見漢字與表情符號,統一用 utf8mb4 後,中文內容再沒出現過亂碼或寫入失敗。
八、結論
資料庫伺服器負責存、查、鎖、護四件事,是網站資產真正所在的地方。軟體選擇跟著主機與生態走即可,網站主真正該盯的是備份能不能還原、程式有沒有用參數化查詢、帳號權限有沒有收緊。整體架構中它和其他伺服器的關係,見〈伺服器是什麼〉。
九、常見問答 FAQ
資料庫伺服器是什麼?
MySQL、MariaDB、PostgreSQL 該選哪個?
資料庫伺服器和網頁伺服器有什麼關係?
網站資料庫要怎麼備份?
SQL 注入是什麼?怎麼防止?
參考來源
- Oracle,〈MySQL 8.4 Reference Manual〉,MySQL 官方文件。
- MariaDB Foundation,〈MariaDB Server Documentation〉,MariaDB 官方文件。
- PostgreSQL Global Development Group,〈PostgreSQL Documentation〉,PostgreSQL 官方文件。
- OWASP,〈SQL Injection Prevention Cheat Sheet〉,OWASP Cheat Sheet Series。
- OWASP,〈A05:2025 Injection〉,OWASP Top 10,2025。
- Stack Overflow,〈2025 Developer Survey:Technology〉,Stack Overflow 年度開發者調查,2025。
- 新視野網頁設計,〈伺服器是什麼?硬體與軟體的差別、9 種常見類型與企業該如何選擇〉,本站自有內容。
各資料庫的定位依撰寫時查閱的官方文件與開發者調查整理;第七節為本站自身網站的 MySQL 維運經驗,不涉及客戶資料。