Có thể bạn đã từng thấy màn hình website trắng toát với dòng chữ “Error establishing a database connection”. Không phải code bị hỏng, không phải hosting tắt server. Chỉ đơn giản là website không kết nối được vào MySQL, tức là phần mềm đang giữ toàn bộ nội dung, bài viết, đơn hàng và tài khoản người dùng của bạn. Bài này giải thích mysql là gì, nó chứa gì trong một website thông thường, và tại sao mất database lại nghiêm trọng hơn mất code nhiều lần.
MySQL là gì
MySQL là một hệ quản trị cơ sở dữ liệu quan hệ (relational database management system, viết tắt là RDBMS). Nói gọn hơn: MySQL là phần mềm chuyên dùng để lưu trữ, sắp xếp và truy xuất dữ liệu có cấu trúc.
Dữ liệu trong MySQL được tổ chức thành bảng (table), giống bảng tính Excel nhưng chạy trên server và có thể xử lý hàng triệu dòng chỉ trong vài mili-giây. Mỗi bảng có các cột xác định cấu trúc và các hàng chứa dữ liệu thực. Ví dụ, bảng lưu thông tin khách hàng sẽ có cột “tên”, “email”, “số điện thoại”, còn mỗi hàng là thông tin của một khách cụ thể.
MySQL được phát triển từ năm 1994 bởi nhóm MySQL AB tại Thụy Điển, sau đó Sun Microsystems mua lại năm 2008 và Oracle tiếp quản năm 2010 khi mua Sun. Hiện MySQL có hai nhánh song song: phiên bản cộng đồng miễn phí (Community Edition) và phiên bản thương mại (Enterprise Edition). Hầu hết hosting và cài đặt WordPress đang chạy bản cộng đồng.
Về vị trí trong hệ sinh thái web, MySQL là thành phần “M” trong bộ “LAMP stack” (Linux, Apache, MySQL, PHP). Gần như mọi web server phổ thông chạy Linux đều có MySQL, và đây là lý do WordPress chọn MySQL làm cơ sở dữ liệu mặc định ngay từ đầu.
Website lưu những gì trong MySQL
Khi bạn đăng một bài viết mới trên WordPress, nội dung bài đó không nằm trong thư mục file trên hosting. Nó được ghi vào bảng wp_posts trong cơ sở dữ liệu MySQL. Tương tự với toàn bộ nội dung và cấu hình của website.
Dưới đây là những gì MySQL đang giữ trong một website WordPress điển hình:
- Bài viết và trang: tiêu đề, slug, nội dung đầy đủ, ngày đăng, trạng thái (nháp hay đã công bố) (bảng
wp_posts) - Tài khoản người dùng: tên đăng nhập, email, mật khẩu đã mã hoá, phân quyền vai trò (bảng
wp_usersvàwp_usermeta) - Cài đặt website: tên web, URL, múi giờ, cài đặt theme, cấu hình plugin (bảng
wp_options) - Bình luận: nội dung, người viết, email, ngày giờ, trạng thái duyệt (bảng
wp_comments) - Đơn hàng WooCommerce: toàn bộ thông tin đơn, sản phẩm, giá, khách hàng, trạng thái thanh toán
- Danh mục và tag: phân loại bài viết và sản phẩm (bảng
wp_termsvàwp_term_taxonomy)
Ảnh và file tải lên là ngoại lệ quan trọng. Những file này nằm trong thư mục /wp-content/uploads/ trên server, còn MySQL chỉ lưu đường dẫn và thông tin metadata như tên file, kích thước, alt text.
Điều này có nghĩa: nếu database MySQL bị xóa hoặc hỏng, website không hiển thị được gì dù file PHP và ảnh vẫn còn nguyên trên hosting. Website trở thành cái vỏ rỗng. Đây là lý do tại sao khi sao lưu website, cần backup cả database riêng, không chỉ backup thư mục file.
MySQL hoạt động như thế nào khi bạn mở một trang web
Từ lúc bạn gõ URL vào trình duyệt đến lúc trang hiện ra đầy đủ, có một chuỗi sự kiện diễn ra rất nhanh. MySQL đứng ở giữa chuỗi đó, và đây cũng là chỗ mọi thứ đổ vỡ khi có sự cố.
Trình duyệt gửi yêu cầu lên server. PHP nhận yêu cầu này, sau đó kết nối vào MySQL bằng thông tin lưu trong file wp-config.php (tên database, tên user, mật khẩu). PHP hỏi MySQL: “Trang có slug ve-chung-toi, lấy nội dung đó ra cho tôi”. MySQL tìm trong bảng wp_posts, trả về dữ liệu. PHP ghép dữ liệu đó với template theme rồi gửi trang hoàn chỉnh về trình duyệt.

Toàn bộ quá trình này thường diễn ra trong vài trăm mili-giây, nhiều khi chỉ 50-100ms nếu có cache tốt. Nhưng nếu kết nối đến MySQL bị đứt (sai mật khẩu, MySQL service bị treo, database bị xóa), PHP không lấy được gì và chỉ có thể báo lỗi.
Đây là nguyên nhân của lỗi “Error establishing a database connection” mà nhiều chủ web từng gặp. Bài hướng dẫn xử lý lỗi kết nối database liệt kê từng nguyên nhân có thể xảy ra và cách kiểm tra từng bước.
So sánh MySQL với PostgreSQL và MariaDB
Người mới làm web hay bối rối khi thấy hosting hỏi “dùng MySQL hay MariaDB?” hoặc khi thấy dự án Next.js chạy PostgreSQL. Ba tên này hay xuất hiện cùng nhau trong thế giới web, nhưng mỗi cái phục vụ tình huống khác nhau và có điểm mạnh riêng.
| MySQL | PostgreSQL | MariaDB | |
|---|---|---|---|
| Năm ra đời | 1994 | 1996 | 2009 (fork từ MySQL) |
| Tổ chức hiện tại | Oracle | Cộng đồng độc lập | MariaDB Foundation |
| Giấy phép | GPL / thương mại | PostgreSQL License (tự do) | GPL hoàn toàn mở |
| Thế mạnh | Dễ dùng, hệ sinh thái lớn | Tính năng phong phú, chuẩn SQL chặt | Tương thích MySQL, mã nguồn mở hơn |
| Phổ biến với | WordPress, Drupal, hầu hết hosting | SaaS, Next.js, dữ liệu phức tạp | Hosting Linux thay thế MySQL |
| Hosting VN hỗ trợ | Gần như tất cả | Ít hơn (cần VPS) | Nhiều (đi kèm MySQL) |
Với website WordPress thông thường, MySQL hoặc MariaDB là lựa chọn đủ dùng. Nếu bạn đang xây dựng ứng dụng web phức tạp hơn cần xử lý dữ liệu đa dạng, đọc thêm bài PostgreSQL là gì để hiểu khi nào cần chuyển sang giải pháp mạnh hơn. Còn nếu hosting đang chạy MariaDB, bài MariaDB là gì giải thích tại sao hai cái này gần như dùng được lẫn nhau với WordPress.
Khi nào chủ web cần biết về MySQL
Bạn không cần học cú pháp SQL hay tự cấu hình server để chạy một website WordPress. Nhưng có vài tình huống mà hiểu MySQL tối thiểu sẽ giúp bạn không bị bẫy, không bị mất dữ liệu, và không mất tiền oan.
Khi chuyển hosting: Mỗi hosting lưu database riêng trên server của họ. Khi chuyển nhà, bạn phải export (xuất) database từ nơi cũ và import (nhập) vào nơi mới. File export thường có đuôi .sql, thực hiện qua phpMyAdmin hoặc công cụ backup của hosting. Bỏ sót bước này, website mới sẽ chạy được nhưng không có một chút nội dung nào. Bài hosting là gì giải thích chi tiết hơn về môi trường đặt MySQL.
Khi sao lưu website: File sao lưu đủ bộ gồm hai phần tách biệt: file PHP và ảnh trên hosting, cộng với file database SQL. Nhiều người chỉ backup thư mục files mà quên database. Khi cần khôi phục, họ mới phát hiện chỉ có vỏ mà không có ruột. Bài khôi phục website từ backup hướng dẫn cách backup đúng cách bao gồm cả database.
Khi website bị chậm: Câu truy vấn MySQL kém tối ưu là một trong những nguyên nhân phổ biến nhất làm website WordPress chạy chậm, đặc biệt với WooCommerce có hàng nghìn sản phẩm. Nhiều plugin cài thêm tạo ra hàng chục câu truy vấn MySQL mỗi lần tải trang, dồn lại thành vấn đề hiệu suất đáng kể.
Khi bị hack hoặc mất dữ liệu: Nhiều cuộc tấn công nhắm thẳng vào database thông qua lỗ hổng SQL injection (nhúng lệnh SQL độc hại vào form nhập liệu). Hacker có thể xóa toàn bộ dữ liệu, chèn nội dung độc hại, hoặc lấy thông tin khách hàng. Backup database định kỳ là lớp bảo vệ cuối cùng khi mọi biện pháp khác thất bại.
Khi nâng cấp WordPress hoặc plugin lớn: Một số cập nhật thay đổi cấu trúc bảng database. Nếu quá trình nâng cấp bị gián đoạn giữa chừng, database có thể ở trạng thái nửa cũ nửa mới và website ngưng hoạt động. Backup database ngay trước mỗi lần nâng cấp lớn là bước không được bỏ qua.
Câu hỏi thường gặp về MySQL
MySQL có phải trả tiền không?
Phiên bản cộng đồng (Community Edition) hoàn toàn miễn phí và là phiên bản mà hầu hết hosting cung cấp. Phiên bản Enterprise có phí dành cho doanh nghiệp cần hỗ trợ chính thức và tính năng quản trị nâng cao. Với website thông thường, bản miễn phí là đủ.
Tôi có cần tự cài MySQL không?
Không. Với hosting thông thường, nhà cung cấp đã cài và cấu hình MySQL sẵn. Bạn chỉ cần tạo database mới qua giao diện hosting (thường trong cPanel), rồi điền tên database, user và password vào file wp-config.php là WordPress kết nối được ngay.
Xóa nhầm database thì có lấy lại được không?
Phụ thuộc vào việc bạn có backup không. Nhiều hosting có tính năng sao lưu tự động hàng ngày, nhưng không phải gói nào cũng bật sẵn và giữ backup đủ lâu. Nếu không có backup, khả năng khôi phục rất thấp, gần như không thể với database quan hệ thông thường. Đây là lý do cần bật sao lưu tự động ngay khi triển khai website.
WordPress có thể dùng database nào ngoài MySQL không?
WordPress hỗ trợ MySQL và MariaDB. Hai hệ quản trị này tương thích gần như hoàn toàn với nhau ở cấp độ WordPress, nghĩa là bạn có thể chạy trên MariaDB mà website vẫn hoạt động bình thường. Một số hosting Linux đã chuyển hẳn sang MariaDB và dùng nó thay MySQL mà không cần người dùng thay đổi gì trong cấu hình.
MySQL là nền tảng dữ liệu của gần như mọi website WordPress đang chạy hiện nay. Bạn không cần học SQL hay hiểu cấu trúc server sâu, nhưng biết MySQL lưu gì và khi nào cần chú ý giúp bạn đưa ra quyết định đúng hơn: backup đúng cách, chuyển hosting không mất dữ liệu, và xử lý sự cố nhanh hơn thay vì hoảng loạn.
