BLOG
網站專欄 Q & A
網域與主機

資料庫伺服器是什麼?功能、運作方式、MySQL 等常見軟體與安全備份

資料庫伺服器示意:中央的伺服器負責儲存網站資料,四周標示它的四項主要工作,存放資料、查詢資料、上鎖避免同時修改錯亂,以及備份與安全防護。

網站上的每一筆會員資料、每一張訂單、每一篇文章,都存在資料庫伺服器裡;網頁只是把它們撈出來排好而已。資料庫伺服器是網站最有價值也最不能出錯的一層,網站被入侵、資料外洩、改版後資料遺失,問題幾乎都發生在這裡。這篇文章說明資料庫伺服器是什麼、怎麼運作、MySQL 等常見軟體怎麼選,以及網站主一定要確認的備份與安全事項。本文屬於《伺服器系列》,總覽見〈伺服器是什麼〉。

一、資料庫伺服器是什麼?

資料庫伺服器(Database Server)是專門儲存、管理與提供資料的伺服器軟體,應用程式透過查詢語言向它要資料或寫入資料,由它負責正確、快速且安全地完成。它把「資料怎麼存在磁碟上」這個複雜問題包起來,程式只要用 SQL 說「給我這位會員的所有訂單」,其餘由資料庫處理。

常見的資料庫軟體是 MySQL、MariaDB、PostgreSQL、Microsoft SQL Server 與 Oracle,它們都屬於關聯式資料庫:資料放在有欄位的表格裡,表格之間用鍵值互相關聯。另一類是 NoSQL 資料庫,例如以文件為單位的 MongoDB、以鍵值為單位的 Redis,適合結構多變或需要極快讀取的資料。

二、資料庫伺服器怎麼運作?

資料庫採客戶端與伺服器架構:應用程式(客戶端)連線到資料庫伺服器,送出 SQL 敘述,伺服器解析、執行、回傳結果。一次查詢的內部流程大致如下:

  • 連線與驗證應用程式用帳號密碼連上資料庫,通常透過連線池重用連線,避免每次請求都重新建立。
  • 解析與最佳化資料庫把 SQL 轉成執行計畫,決定用哪個索引、先查哪張表;有沒有建對索引,是查詢快慢差距懸殊的關鍵。
  • 執行與鎖定讀取或修改資料時上鎖,避免兩個人同時改同一筆造成錯亂;多步驟操作包在交易(transaction)裡,全部成功才生效。
  • 回傳與記錄把結果集傳回應用程式,並把變更寫進日誌,以便故障後復原或同步到備援機器。
資料庫一次查詢的流程示意:應用程式先連線並驗證帳號,資料庫解析 SQL 並決定執行計畫,執行時上鎖避免同時修改,最後回傳結果並寫入日誌。

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、RedisNoSQLMongoDB 存結構多變的文件;Redis 當快取與會話儲存,常和關聯式資料庫搭配使用

選擇原則很簡單:主機已經提供什麼就用什麼。中小企業網站用 MySQL 或 MariaDB 綽綽有餘;新的自建系統可以考慮 PostgreSQL;已在微軟生態就用 SQL Server。真正影響效能的不是品牌,而是索引有沒有建對、查詢有沒有寫好。

五、在網站架構中的位置

資料庫伺服器是三層架構的最後一層,只和應用程式伺服器對話,永遠不該直接對網際網路開放。訪客送出搜尋,網頁伺服器轉給應用程式伺服器,應用程式伺服器才向資料庫查詢,資料原路返回。

資料庫在網站架構中的位置示意:訪客的請求經過網頁伺服器、應用程式伺服器,才由應用程式向資料庫查詢;資料庫只和應用程式對話,不直接對外開放。

小型網站的三層通常裝在同一台主機,資料庫只聽本機連線;規模變大後把資料庫搬到獨立機器,並加上唯讀複本分擔查詢。不論哪種配置,資料庫的連接埠(MySQL 預設 3306)都不應該從外部網路連得到,這是資料庫資安的第一條規則。

六、備份與安全:網站主必須確認的五件事

  • 備份頻率與保留期:問清楚每天備份幾次、保留幾天、放在哪裡;只放在同一台主機的備份,主機壞了就一起消失。
  • 有沒有實際還原過:沒測試過還原的備份不算備份。改版或搬家前,先在測試環境用備份還原一次。
  • 參數化查詢:把使用者輸入直接串進 SQL 是 SQL 注入的來源,這類漏洞一旦被利用,可能整批外洩資料庫內容;正確寫法在各語言專文都有,例如〈PHP 是什麼〉第五節。
  • 最小權限:網站用的資料庫帳號只給必要的權限,不要用 root;後台管理與網站前台用不同帳號。
  • 版本與加密:資料庫軟體要在支援期內、定期更新;密碼欄位必須以雜湊儲存,個資欄位視需求加密。
網站主確認資料庫備份與安全的五件事示意:備份要放在不同地方、實際做過還原測試、用參數化查詢防止 SQL 注入、帳號只給最小權限,以及軟體更新與密碼加密。

七、本站使用 MySQL 的經驗

本站(newscan.com.tw)的文章系統、詢價表單與後台都存在 MySQL,多年維運中有三個做法一直沿用:

  • 每次批次修改前先匯出:我們調整文章內容或網址設定時,一律先匯出相關資料表,再執行 SQL,並在本機環境先跑一次確認影響的筆數與內容都正確。
  • SQL 帶條件防呆:批次更新的每一條敘述都加上「只在符合特徵時才更新」的條件,重複執行也不會重複套用,這讓更新可以安全地重跑。
  • 字元集用 utf8mb4:舊的 utf8 存不了部分罕見漢字與表情符號,統一用 utf8mb4 後,中文內容再沒出現過亂碼或寫入失敗。

八、結論

資料庫伺服器負責存、查、鎖、護四件事,是網站資產真正所在的地方。軟體選擇跟著主機與生態走即可,網站主真正該盯的是備份能不能還原、程式有沒有用參數化查詢、帳號權限有沒有收緊。整體架構中它和其他伺服器的關係,見〈伺服器是什麼〉。

九、常見問答 FAQ

資料庫伺服器是什麼?
資料庫伺服器(Database Server)是專門儲存、管理與提供資料的伺服器軟體,應用程式透過 SQL 等查詢語言向它要資料或寫入資料,由它負責正確、快速且安全地完成。它把資料在磁碟上的存放方式包起來,程式只要說「給我這位會員的所有訂單」,索引、鎖定、交易與備份都由資料庫處理。常見軟體有 MySQL、MariaDB、PostgreSQL、Microsoft SQL Server 與 Oracle,都屬於以表格存放資料的關聯式資料庫;MongoDB、Redis 等 NoSQL 資料庫則適合結構多變或需要極快讀取的資料。
MySQL、MariaDB、PostgreSQL 該選哪個?
原則是主機提供什麼就用什麼,三者對中小企業網站都綽綽有餘。MySQL 是網站最普及的資料庫,幾乎所有虛擬主機內建,WordPress 與多數 PHP 系統預設使用;MariaDB 由 MySQL 分支而來、高度相容,許多主機商與 Linux 發行版已改以它取代 MySQL,程式通常不用修改;PostgreSQL 功能最完整、標準遵循度高,近年開發者調查中最受歡迎,適合複雜查詢、地理資料與新建的自有系統。已在微軟生態則用 SQL Server。真正影響效能的不是品牌,而是索引有沒有建對、查詢有沒有寫好。
資料庫伺服器和網頁伺服器有什麼關係?
資料庫伺服器是三層架構的最後一層,只和應用程式伺服器對話,永遠不該直接對網際網路開放。訪客送出搜尋,網頁伺服器轉給應用程式伺服器,應用程式伺服器才向資料庫查詢,資料原路返回組成網頁。小型網站的三層通常裝在同一台主機,資料庫只接受本機連線;規模變大後把資料庫搬到獨立機器,並加上唯讀複本分擔查詢。不論哪種配置,資料庫的連接埠(MySQL 預設 3306)都不應該從外部網路連得到,這是資料庫資安的第一條規則。
網站資料庫要怎麼備份?
遵守三個原則。一、頻率與保留期:至少每天一次,重要交易系統更頻繁,保留數週以上,並確認主機商的備份不是只放在同一台主機,否則主機故障備份也一起消失。二、實際還原過:沒有測試過還原的備份不算備份,改版或搬家前先在測試環境用備份還原一次。三、異地保存:定期把資料庫匯出檔連同網站檔案下載一份,存到公司的檔案伺服器或雲端硬碟,符合 3-2-1 備份原則。另外,任何批次修改資料前先匯出相關資料表,是最便宜的保險。
SQL 注入是什麼?怎麼防止?
SQL 注入是攻擊者在表單或網址參數裡輸入特殊字串,讓程式把它當成 SQL 指令的一部分執行,藉此讀取、修改或刪除資料庫內容,OWASP 將它歸為發生頻率較低、但影響很大的漏洞,一旦被利用可能整批外洩會員資料。根本原因是程式把使用者輸入直接串進 SQL 字串。防止方法只有一個標準答案:使用參數化查詢(預備語句),讓 SQL 與參數分開送到資料庫,使用者輸入永遠不會被當成指令;PHP 的 PDO、Java 的 PreparedStatement、.NET 的 SqlParameter 都是這個做法。再搭配最小權限的資料庫帳號與輸入驗證,就能擋住絕大多數攻擊。

參考來源

  1. Oracle,〈MySQL 8.4 Reference Manual〉,MySQL 官方文件。
  2. MariaDB Foundation,〈MariaDB Server Documentation〉,MariaDB 官方文件。
  3. PostgreSQL Global Development Group,〈PostgreSQL Documentation〉,PostgreSQL 官方文件。
  4. OWASP,〈SQL Injection Prevention Cheat Sheet〉,OWASP Cheat Sheet Series。
  5. OWASP,〈A05:2025 Injection〉,OWASP Top 10,2025。
  6. Stack Overflow,〈2025 Developer Survey:Technology〉,Stack Overflow 年度開發者調查,2025。
  7. 新視野網頁設計,〈伺服器是什麼?硬體與軟體的差別、9 種常見類型與企業該如何選擇〉,本站自有內容。

各資料庫的定位依撰寫時查閱的官方文件與開發者調查整理;第七節為本站自身網站的 MySQL 維運經驗,不涉及客戶資料。

關於作者

內容揭露:本文由新視野網頁設計 SEO 團隊撰寫。文中連結的站內指南與延伸閱讀均為本站自有內容;新視野提供網頁設計與 SEO/AI SEO 服務,讀者在採用本文建議前請自行評估是否符合自身情況。文中引用的第三方研究與官方文件皆附可點擊出處,歡迎查證。

新視野網頁設計 SEO 團隊

新視野網頁設計自 2005 年起投入企業網站建置與搜尋行銷,服務範圍涵蓋 RWD 網站設計、技術 SEO、結構化資料佈署,以及 AI 搜尋時代的 AEO/GEO 內容優化。本文由新視野 SEO 團隊撰寫、審閱並持續維護更新。

服務據點:
台中(總公司)台中市南區忠明南路 758 號 21 樓 B4台北高雄
聯絡電話:
04-2260-1329
公司資訊:
關於我們公司位置線上詢價
對外平台:
FacebookLinkedIn
本站同主題內容:
伺服器是什麼應用程式伺服器是什麼PHP 是什麼虛擬主機是什麼

歡迎推廣本文,請務必連結(LINK)本文出處:新視野網頁設計公司