MariaDB trên Linux: Định nghĩa, Cách cài đặt (Ubuntu/CentOS/Debian) và Cấu hình bảo mật

目次

1. MariaDB là gì?

Tổng quan và các tính năng chính của MariaDB

MariaDB là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở. Nó được phát triển dựa trên MySQL và được áp dụng rộng rãi trong nhiều hệ thống và ứng dụng nhờ tính tương thích cao.

Ban đầu, sau khi MySQL bị mua lại bởi Oracle, một số nhà phát triển của nó đã tách ra và khởi động dự án MariaDB. Do đó, MariaDB giữ lại một bộ lệnh và cấu trúc dữ liệu tương tự MySQL đồng thời nhấn mạnh tính mở và minh bạch trong thiết kế.

MariaDB miễn phí sử dụng và hỗ trợ một loạt các mục đích cho cả sử dụng thương mại và phi thương mại. Đặc biệt, nó có thành tích mạnh mẽ trong môi trường máy chủ Linux và được đánh giá cao về độ ổn định, hiệu năng và bảo mật.

Sự khác biệt so với MySQL

MariaDB và MySQL rất giống nhau, và nhiều lệnh cũng như tệp cấu hình có thể được sử dụng nguyên trạng. Tuy nhiên, có một số khác biệt quan trọng.

  • Khác biệt về giấy phép Vì MySQL được phát triển và quản lý bởi Oracle, có thể áp dụng các hạn chế giấy phép trong một số kịch bản sử dụng thương mại. Ngược lại, MariaDB dựa trên GPL (Giấy phép Công cộng GNU), cho phép sử dụng linh hoạt hơn.
  • Tốc độ phát triển và cách tiếp cận cộng đồng MariaDB được phát triển tích cực theo mô hình cộng đồng và thường giới thiệu các tính năng mới nhanh hơn. Nó đặc biệt mạnh trong các tính năng hướng doanh nghiệp (như các tùy chọn engine lưu trữ và tối ưu hoá hiệu năng).
  • Mở rộng và tính tương thích MariaDB duy trì độ tương thích cao với MySQL đồng thời cung cấp các engine lưu trữ riêng (như Aria và ColumnStore), cho phép vận hành linh hoạt tùy theo trường hợp sử dụng. Tuy nhiên, khi các phiên bản tiến triển, có thể xuất hiện các khác biệt về tương thích, vì vậy cần thận trọng khi di chuyển.

Lợi ích khi chọn MariaDB

Khi triển khai cơ sở dữ liệu trong môi trường Linux, MariaDB mang lại các lợi ích sau:

  • Cài đặt dễ dàng với cấu hình đơn giản
  • Hiệu năng nhẹ và nhanh
  • Khả năng mở rộng để xử lý dữ liệu quy mô lớn
  • Hoạt động ổn định trong thời gian dài
  • Kiến thức và tài nguyên hỗ trợ phong phú từ cộng đồng nhà phát triển toàn cầu

Vì những lý do này, MariaDB được lựa chọn cho nhiều môi trường, từ các thiết lập phát triển cá nhân đến các hệ thống sản xuất doanh nghiệp.

2. Chuẩn bị trước khi cài đặt

Trước khi cài đặt MariaDB trong môi trường Linux, có một số điểm cần xác nhận và các bước chuẩn bị cần hoàn thành. Bỏ qua bước này có thể gây ra vấn đề sau này, vì vậy việc chuẩn bị trước rất quan trọng.

Kiểm tra yêu cầu hệ thống

MariaDB là một cơ sở dữ liệu nhẹ và nhanh, nhưng vẫn có các yêu cầu hệ thống tối thiểu. Dưới đây là các yêu cầu hướng dẫn chung (có thể thay đổi tùy phiên bản và cách sử dụng):

  • Hệ điều hành : Các bản phân phối Linux như Ubuntu, Debian, CentOS và RHEL
  • CPU : 1 GHz trở lên (đề nghị đa nhân)
  • Bộ nhớ : 512 MB trở lên (đề nghị 1 GB hoặc hơn)
  • Lưu trữ : 1 GB hoặc hơn không gian trống (tùy vào khối lượng dữ liệu mà điều chỉnh)
  • Mạng : Cần kết nối Internet để tải gói và áp dụng cập nhật

Lưu ý rằng trên các bản phân phối Linux cũ, các phiên bản MariaDB mới nhất có thể không được hỗ trợ. Kiểm tra phiên bản Linux của bạn và nếu cần, thêm các kho lưu trữ hoặc thực hiện các bước khác cho phù hợp.

Xác minh và cập nhật các gói cần thiết

Để cài đặt MariaDB, bạn thường sử dụng trình quản lý gói tiêu chuẩn của hệ điều hành (như APT hoặc YUM). Cập nhật hệ thống trước giúp tránh các vấn đề phụ thuộc.

Dưới đây là ví dụ cho Ubuntu/Debian:

sudo apt update
sudo apt upgrade -y

Trên CentOS/RHEL, chạy lệnh sau:

sudo yum update -y

Ngoài ra, hãy xác minh rằng các gói sau đã được cài đặt (cài đặt chúng nếu còn thiếu):

  • curl : Được sử dụng khi thêm kho MariaDB
  • gnupg : Được sử dụng để xác minh khóa ký
  • software-properties-common (chủ yếu cho Ubuntu): Cần thiết để quản lý PPA. Không phải lúc nào cũng cần trên Debian.

Xem xét việc sử dụng kho MariaDB chính thức

Trong nhiều bản phân phối Linux, MariaDB đã có trong các kho gói mặc định, nhưng phiên bản được cung cấp có thể đã cũ.

Nếu bạn muốn luôn sử dụng phiên bản ổn định mới nhất, bạn có thể thêm kho MariaDB chính thức. Phần tiếp theo sẽ giới thiệu các bước cụ thể cho từng hệ điều hành, nhưng việc quyết định trước phiên bản bạn sẽ dùng sẽ giúp quá trình cài đặt diễn ra suôn sẻ hơn.

3. Các bước cài đặt theo bản phân phối chính

MariaDB có sẵn trên nhiều bản phân phối Linux, nhưng các phương pháp cài đặt có chút khác nhau. Trong phần này, chúng tôi sẽ hướng dẫn chi tiết các bước cài đặt cho ba bản phân phối tiêu biểu: Ubuntu, CentOS và Debian.

Cài đặt MariaDB trên Ubuntu

Trên Ubuntu, bạn cài đặt MariaDB bằng trình quản lý gói APT. Phần này hướng tới Ubuntu 20.04 / 22.04 LTS.

1. Cập nhật danh sách gói

sudo apt update

2. Cài đặt MariaDB

sudo apt install mariadb-server -y

Lệnh này sẽ tự động cài đặt MariaDB và các gói phụ thuộc cần thiết.

3. Khởi động và bật dịch vụ

sudo systemctl start mariadb
sudo systemctl enable mariadb

4. Kiểm tra dịch vụ đang chạy

sudo systemctl status mariadb

Nếu bạn thấy “active (running)”, dịch vụ đã khởi động thành công.

Cài đặt MariaDB trên CentOS

Trên CentOS 7 và CentOS Stream 8, bạn sử dụng YUM hoặc dnf. Vì các kho mặc định thường cung cấp các phiên bản cũ, nên thường sẽ thêm kho chính thức.

1. Thêm kho chính thức (ví dụ: MariaDB 10.6)

sudo vi /etc/yum.repos.d/MariaDB.repo

Dán nội dung sau và lưu lại:

[mariadb]
name = MariaDB
baseurl = https://downloads.mariadb.com/MariaDB/mariadb-10.6/yum/centos7-amd64
gpgkey=https://downloads.mariadb.com/MariaDB/MariaDB-Server-GPG-KEY
gpgcheck=1

Điều chỉnh phiên bản và cài đặt hệ điều hành theo nhu cầu môi trường của bạn.

2. Cài đặt các gói

sudo yum install mariadb-server -y

Hoặc trên CentOS Stream 8 trở lên:

sudo dnf install mariadb-server -y

3. Khởi động và bật dịch vụ

sudo systemctl start mariadb
sudo systemctl enable mariadb

Cài đặt MariaDB trên Debian

Debian cũng sử dụng APT, nhưng bằng cách sử dụng kho MariaDB chính thức thay vì các kho mặc định, bạn có thể cài đặt phiên bản ổn định mới nhất.

1. Cài đặt các gói phụ thuộc

sudo apt install curl software-properties-common gnupg -y

2. Thêm kho MariaDB (ví dụ: Debian 11 “Bullseye”)

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

3. Cài đặt

sudo apt update
sudo apt install mariadb-server -y

4. Khởi động và bật dịch vụ

sudo systemctl start mariadb
sudo systemctl enable mariadb

4. Cấu hình bộ ký tự

Một trong những điểm quan trọng nhất khi sử dụng MariaDB trong môi trường tiếng Nhật là cấu hình bộ ký tự (encoding). Vì tiếng Nhật bao gồm các ký tự đa byte, việc khởi động với các cài đặt không đúng có thể gây ra các vấn đề như văn bản bị rối hoặc hỏng dữ liệu.

Bộ ký tự đề xuất cho môi trường tiếng Nhật: UTF-8

Đối với MariaDB, bộ ký tự được đề xuất là utf8mb4. Nó mạnh hơn so với utf8 truyền thống và hỗ trợ các ký tự 4 byte như emoji, khiến nó phù hợp không chỉ cho tiếng Nhật mà còn cho các môi trường đa ngôn ngữ.

Trong các cài đặt mặc định của họ hàng MySQL, bạn có thể thấy latin1 hoặc utf8, và để nguyên chúng có thể gây ra vấn đề. Do đó, hãy thay đổi cài đặt thành utf8mb4 ngay sau khi cài đặt.

Cách chỉnh sửa tệp cấu hình (my.cnf)

MariaDB’s configuration file is typically located at /etc/mysql/my.cnf or /etc/my.cnf. Add or edit the [client] and [mysqld] sections as shown below.

[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

After changing the settings, restart MariaDB to apply them:

sudo systemctl restart mariadb

Verify the Settings Were Applied

Connect to MariaDB and confirm that the settings have been applied.

sudo mariadb

After connecting, run the following command:

SHOW VARIABLES LIKE 'character\_set%';

Expected example output:

character_set_client    utf8mb4
character_set_connection utf8mb4
character_set_database   utf8mb4
character_set_results    utf8mb4
character_set_server     utf8mb4

If it looks like this, the character set configuration has been applied correctly.

Note: Character Sets for Existing Data

If you already have existing databases or tables, their character sets will not change automatically. If needed, you must change them individually with an ALTER statement like the following:

ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

Similarly, you can change settings at the table or column level.

5. Security Configuration

Right after installing MariaDB, security is not fully hardened. By applying minimum essential security settings before production use, you can reduce the risk of unauthorized access and data leaks. This section introduces basic MariaDB security configuration steps.

Run mysql_secure_installation

MariaDB provides a security hardening script that you should run immediately after installation: mysql_secure_installation.

Run it with the following command:

sudo mysql_secure_installation

When you run it, several questions will be shown in sequence. Here’s what each option means.

  1. Set (or update) the root password → Set a password for the MariaDB administrator user “root”. Use a strong password.
  2. Remove anonymous users → By default, an “anonymous” user may exist. This is unnecessary and risky, so removal is recommended .
  3. Disallow remote root login → Allowing root access directly from external networks is extremely dangerous. In most cases, set this to disallow .
  4. Remove the test database → The “test” database created for testing is also unnecessary in many cases. Removal is recommended .
  5. Reload privilege tables → This applies the above changes immediately. Confirm with “Yes” .

Answering all of these questions significantly strengthens MariaDB’s security in its default initial state.

Firewall Configuration (If Needed)

MariaDB typically communicates over port 3306. Whether you should open this port depends on how you plan to use the system.

  • When using it locally or on a standalone server → You can keep port 3306 closed.
  • When allowing external access (e.g., connecting from an app on another server) → Open access only for required IP addresses.

Example: Limiting access with UFW on Ubuntu

sudo ufw allow from 192.168.0.10 to any port 3306

Create a User Other Than root (Recommended)

In production, it’s best practice to create and use a dedicated user account rather than the administrator user “root”. Here is an example:

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON your_database.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;

Using separate users per application helps minimize impact in case credentials are compromised.

6. Verification

After installing MariaDB, completing initial configuration, and applying security measures, the final step is to verify that everything is working correctly. This section explains how to confirm connectivity and run basic SQL commands.

Connect to MariaDB

Sau khi cài đặt, hãy xác nhận rằng bạn có thể kết nối tới MariaDB bằng lệnh sau:

sudo mariadb

Hoặc, nếu bạn muốn chỉ định người dùng và cung cấp mật khẩu:

mariadb -u root -p

Khi được yêu cầu, nhập mật khẩu bạn đã đặt bằng mysql_secure_installation.

Nếu đăng nhập thành công, bạn sẽ thấy một dấu nhắc giống như sau:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.6.16-MariaDB MariaDB Server

Nếu bạn thấy như vậy, MariaDB đang chạy bình thường và bạn có thể kết nối thành công.

Tạo một Cơ sở dữ liệu

Tiếp theo, như một thử nghiệm đơn giản, hãy tạo một cơ sở dữ liệu.

CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Nếu thực thi thành công, cơ sở dữ liệu đã được tạo mà không có vấn đề nào.

Kiểm tra danh sách các cơ sở dữ liệu bạn có:

SHOW DATABASES;

Nếu testdb xuất hiện, thì nó đã hoạt động.

Tạo Bảng và Chèn Dữ liệu

Tạo một bảng thử nghiệm và chèn một số dữ liệu.

USE testdb;

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50),
  email VARCHAR(100)
);

INSERT INTO users (name, email) VALUES ('田中太郎', 'taro-tanaka@example.com');

※Ví dụ này xác minh rằng văn bản đa byte (tiếng Nhật) được lưu trữ đúng cách bằng utf8mb4.

Lấy Dữ liệu

Để xác nhận dữ liệu đã chèn, chạy truy vấn sau.

SELECT * FROM users;

Nếu đầu ra hiển thị thông tin cho Taro Tanaka, bạn có thể kết luận rằng cơ sở dữ liệu đang hoạt động đúng.

Kiểm tra Thông tin Máy chủ

Nếu bạn muốn kiểm tra thông tin cơ bản như phiên bản MariaDB, chạy lệnh sau:

STATUS;

Lệnh này hiển thị các chi tiết như trạng thái kết nối, phiên bản máy chủ và cấu hình bộ ký tự.

7. Câu Hỏi Thường Gặp (FAQ)

Khi cài đặt và vận hành MariaDB trong môi trường Linux, nhiều người gặp phải các câu hỏi hoặc vấn đề phổ biến. Biết cách xử lý chúng trước sẽ giúp yên tâm hơn. Ở đây, chúng tôi đã tổng hợp các điểm thường được tìm kiếm dưới dạng FAQ cho người mới bắt đầu đến người dùng trung cấp.

Câu hỏi 1. Làm sao tôi có thể kiểm tra phiên bản MariaDB?

Sau khi kết nối tới MariaDB, bạn có thể kiểm tra bằng cách chạy lệnh sau.

SELECT VERSION();

Hoặc, bạn có thể kiểm tra trực tiếp từ dòng lệnh như sau:

mariadb --version

Ví dụ đầu ra:

mariadb  Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64)

Câu hỏi 2. Tôi nên làm gì nếu thấy “Package not found” trong quá trình cài đặt?

Kiểm tra các mục sau:

  • Danh sách gói chưa được cập nhật → Chạy sudo apt update hoặc sudo yum update, sau đó thử lại
  • Kho lưu trữ chính thức của MariaDB chưa được thêm đúng cách → Kiểm tra các tệp cấu hình kho (như /etc/apt/sources.list.d/ hoặc /etc/yum.repos.d/ )
  • Phân phối và phiên bản MariaDB của bạn không tương thích → Kiểm tra lại các phiên bản được hỗ trợ trên trang tải xuống chính thức của MariaDB

Câu hỏi 3. Làm sao để gỡ cài đặt MariaDB?

Đối với Ubuntu/Debian:

sudo apt remove --purge mariadb-server mariadb-client -y
sudo apt autoremove -y

Đối với CentOS/RHEL:

sudo yum remove mariadb-server -y

Sau đó, nếu bạn cũng muốn xóa dữ liệu và các tệp cấu hình, chạy lệnh sau:

sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/my.cnf /etc/mysql

*Nếu bạn có dữ liệu quan trọng, hãy chắc chắn sao lưu trước khi xóa bất kỳ thứ gì.

Câu hỏi 4. Làm sao để sao lưu và khôi phục một cơ sở dữ liệu?

Sao lưu (tạo file dump):

mysqldump -u root -p your_database > backup.sql

Khôi phục:

mysql -u root -p your_database < backup.sql

Phương pháp này đơn giản và phổ biến, và rất hữu ích cho việc di chuyển MariaDB và khôi phục sau thảm họa.

Câu hỏi 5. Tại sao tôi không thể kết nối tới MariaDB từ bên ngoài máy chủ?

Các nguyên nhân có thể bao gồm:

  • bind-address được đặt thành 127.0.0.1 → Trong /etc/mysql/my.cnf hoặc /etc/my.cnf, thay đổi thành bind-address = 0.0.0.0 (cẩn thận với bảo mật)
  • Cổng 3306 bị tường lửa chặn → Mở cổng bằng lệnh như sudo ufw allow 3306
  • Người dùng không được phép kết nối từ xa → Bạn cần tạo một người dùng dạng user@'%'