Chuyển tới nội dung chính

Cài Đặt MariaDB Server trên Linux

Giới Thiệu

MariaDB Server là một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở (RDBMS) rất phổ biến, được phát triển bởi những người tạo ra MySQL. Nó là một nhánh (fork) tương thích nhị phân của MySQL, cung cấp hiệu suất cao, độ tin cậy và nhiều tính năng tiên tiến. MariaDB được sử dụng rưng rãi trong các ứng dụng web, đặc biệt là một phần của kiến trúc LAMP (Linux, Apache, MySQL/MariaDB, PHP) hoặc LEMP (Linux, Nginx, MySQL/MariaDB, PHP).

Bài hướng dẫn này sẽ giúp bạn cài đặt và cấu hình MariaDB Server trên các hệ điều hành Linux phổ biến như Ubuntu, Debian và CentOS/RHEL, đảm bảo bạn có một môi trường cơ sở dữ liệu sẵn sàng để sử dụng.

📋 Thời gian: 15-20 phút | Độ khó: Cơ bản

Yêu Cầu

Để thực hiện bài hướng dẫn này, bạn cần:

  • Một máy chủ Linux đang chạy (Ubuntu, Debian, CentOS, RHEL, Fedora).
  • Quyền truy cập sudo hoặc quyền root trên máy chủ.
  • Kết nối Internet ổn định để tải các gói cài đặt.

Các Bước Thực Hiện

Bước 1: Cập nhật Hệ thống

Trước khi cài đặt bất kỳ phần mềm nào, việc cập nhật danh sách gói và nâng cấp các gói hiện có trên hệ thống là một thực hành tốt. Điều này giúp đảm bảo bạn đang làm việc với các phiên bản phần mềm mới nhất và tránh các xung đột tiềm ẩn.

Trên Debian/Ubuntu:

sudo apt update          # Cập nhật danh sách gói khả dụng
sudo apt upgrade -y # Nâng cấp tất cả các gói đã cài đặt lên phiên bản mới nhất

Trên CentOS/RHEL/Fedora:

sudo yum update -y       # Cập nhật tất cả các gói đã cài đặt lên phiên bản mới nhất (CentOS/RHEL 7 trở xuống)
# Hoặc
sudo dnf update -y # Cập nhật tất cả các gói đã cài đặt lên phiên bản mới nhất (CentOS/RHEL 8+, Fedora)

Bước 2: Cài đặt MariaDB Server

Sau khi hệ thống đã được cập nhật, chúng ta sẽ tiến hành cài đặt MariaDB Server từ kho lưu trữ mặc định của hệ điều hành.

Trên Debian/Ubuntu:

sudo apt install mariadb-server mariadb-client -y # Cài đặt gói máy chủ và máy khách MariaDB

Trên CentOS/RHEL/Fedora:

sudo yum install mariadb-server -y # Cài đặt gói máy chủ MariaDB (CentOS/RHEL 7 trở xuống)
# Hoặc
sudo dnf install mariadb-server -y # Cài đặt gói máy chủ MariaDB (CentOS/RHEL 8+, Fedora)

💡 Mẹo: Nếu bạn muốn cài đặt phiên bản MariaDB mới nhất không có trong kho lưu trữ mặc định, bạn có thể thêm kho lưu trữ MariaDB chính thức. Truy cập mariadb.org/download để tìm hướng dẫn chi tiết cho hệ điều hành của bạn.

Bước 3: Khởi động và Kích hoạt MariaDB

Sau khi cài đặt, dịch vụ MariaDB cần được khởi động và cấu hình để tự động chạy khi hệ thống khởi động.

sudo systemctl start mariadb     # Khởi động dịch vụ MariaDB
sudo systemctl enable mariadb # Kích hoạt MariaDB để tự động khởi động cùng hệ thống
sudo systemctl status mariadb # Kiểm tra trạng thái của dịch vụ MariaDB

✅ Nếu dịch vụ đang chạy thành công, bạn sẽ thấy trạng thái là active (running).

Bước 4: Cấu hình Bảo mật MariaDB

Đây là bước cực kỳ quan trọng để bảo vệ máy chủ cơ sở dữ liệu của bạn. MariaDB cung cấp một tập lệnh bảo mật tương tác có tên mysql_secure_installation.

sudo mysql_secure_installation

Tập lệnh sẽ hỏi bạn một số câu hỏi:

  1. Enter current password for root (enter for none): Nhấn Enter nếu đây là lần đầu tiên bạn cấu hình và chưa đặt mật khẩu root.
  2. Set root password? [Y/n]:Y và nhấn Enter để đặt mật khẩu mạnh cho người dùng root của MariaDB.
  3. Remove anonymous users? [Y/n]:Y để xóa người dùng ẩn danh.
  4. Disallow root login remotely? [Y/n]:Y để cấm người dùng root đăng nhập từ xa. Điều này tăng cường bảo mật.
  5. Remove test database and access to it? [Y/n]:Y để xóa cơ sở dữ liệu "test" mặc định, thường không cần thiết và có thể là một lỗ hổng bảo mật.
  6. Reload privilege tables now? [Y/n]:Y để áp dụng các thay đổi quyền ngay lập tức.

Bước 5: Kiểm tra MariaDB

Bạn có thể đăng nhập vào MariaDB shell để kiểm tra xem mọi thứ đã hoạt động đúng cách chưa.

mysql -u root -p

Bạn sẽ được yêu cầu nhập mật khẩu root mà bạn đã đặt ở Bước 4. Sau khi đăng nhập thành công, bạn sẽ thấy dấu nhắc MariaDB [(none)]>.

Hãy thử một vài lệnh SQL cơ bản:

SHOW DATABASES;

Lệnh này sẽ hiển thị danh sách các cơ sở dữ liệu hiện có trên máy chủ của bạn. Bạn sẽ thấy các cơ sở dữ liệu hệ thống như mysql, information_schema, performance_schema.

Để thoát khỏi MariaDB shell:

exit;

Bước 6 (Tùy chọn): Tạo Người dùng và Cơ sở dữ liệu mới

Trong môi trường sản xuất, bạn không nên sử dụng người dùng root cho các ứng dụng của mình. Thay vào đó, hãy tạo người dùng và cơ sở dữ liệu riêng biệt với các quyền cụ thể.

Đăng nhập lại vào MariaDB shell với người dùng root:

mysql -u root -p

Sau đó, chạy các lệnh SQL sau để tạo một cơ sở dữ liệu, một người dùng và cấp quyền cho người dùng đó:

CREATE DATABASE ten_co_so_du_lieu_cua_ban;
CREATE USER 'ten_nguoi_dung_moi'@'localhost' IDENTIFIED BY 'mat_khau_manh_cua_ban';
GRANT ALL PRIVILEGES ON ten_co_so_du_lieu_cua_ban.* TO 'ten_nguoi_dung_moi'@'localhost';
FLUSH PRIVILEGES;
EXIT;

⚠️ Lưu ý: Thay thế ten_co_so_du_lieu_cua_ban, ten_nguoi_dung_moimat_khau_manh_cua_ban bằng các giá trị thực tế của bạn.

Bây giờ bạn có thể đăng nhập bằng người dùng mới:

mysql -u ten_nguoi_dung_moi -p

Troubleshooting

  • ⚠️ Lỗi: Không thể khởi động MariaDB hoặc trạng thái là failed

    • Nguyên nhân: Có thể có lỗi cấu hình, cổng 3306 bị chiếm dụng, hoặc vấn đề về quyền.
    • Cách xử lý:
      • Kiểm tra nhật ký dịch vụ để tìm thông tin chi tiết:
        sudo journalctl -xe | grep mariadb
      • Kiểm tra xem có tiến trình nào khác đang sử dụng cổng 3306 không:
        sudo ss -tunlp | grep 3306
        Nếu có, hãy dừng tiến trình đó hoặc thay đổi cổng của MariaDB (yêu cầu chỉnh sửa file cấu hình /etc/mysql/mariadb.conf.d/50-server.cnf hoặc tương tự).
  • ⚠️ Lỗi: Access denied for user 'root'@'localhost' khi đăng nhập

    • Nguyên nhân: Sai mật khẩu hoặc quyền truy cập không đúng.
    • Cách xử lý:
      • Đảm bảo bạn nhập đúng mật khẩu root đã đặt trong mysql_secure_installation.
      • Nếu bạn quên mật khẩu root, bạn cần đặt lại nó. Quy trình này liên quan đến việc dừng dịch vụ MariaDB, khởi động nó ở chế độ an toàn (skip-grant-tables), sau đó cập nhật mật khẩu và khởi động lại dịch vụ bình thường. (Tìm kiếm "reset MariaDB root password" để biết hướng dẫn chi tiết).
  • ⚠️ Lỗi: command not found khi chạy mysql hoặc mysql_secure_installation

    • Nguyên nhân: Các gói client hoặc server có thể chưa được cài đặt đúng cách, hoặc biến môi trường PATH không bao gồm đường dẫn tới các tệp thực thi của MariaDB.
    • Cách xử lý: Đảm bảo bạn đã cài đặt cả mariadb-servermariadb-client (trên Debian/Ubuntu) hoặc mariadb-server (trên CentOS/RHEL thường bao gồm cả client).
  • ⚠️ Lỗi: Không thể kết nối từ xa (nếu bạn đã cho phép)

    • Nguyên nhân: Tường lửa của hệ thống đang chặn kết nối đến cổng 3306.
    • Cách xử lý: Mở cổng 3306 trên tường lửa.
      • Trên Ubuntu/Debian (UFW):
        sudo ufw allow 3306/tcp
        sudo ufw reload
      • Trên CentOS/RHEL/Fedora (firewalld):
        sudo firewall-cmd --permanent --add-port=3306/tcp
        sudo firewall-cmd --reload
    • Đảm bảo MariaDB được cấu hình để lắng nghe trên tất cả các địa chỉ IP (không chỉ localhost). Bạn có thể cần chỉnh sửa tệp cấu hình /etc/mysql/mariadb.conf.d/50-server.cnf (hoặc tương tự) và comment hoặc thay đổi dòng bind-address = 127.0.0.1 thành bind-address = 0.0.0.0 (chỉ làm điều này nếu bạn hiểu rõ rủi ro bảo mật và đã cấu hình tường lửa chặt chẽ). Sau đó khởi động lại MariaDB.

Kết Luận

Chúc mừng! Bạn đã hoàn tất việc cài đặt và cấu hình MariaDB Server trên hệ thống Linux của mình. Giờ đây, bạn đã có một hệ thống cơ sở dữ liệu mạnh mẽ, sẵn sàng để phục vụ các ứng dụng web hoặc dự án cá nhân.

Best practices:

  • Bảo mật: Luôn sử dụng mật khẩu mạnh cho người dùng cơ sở dữ liệu, đặc biệt là người dùng root. Không cho phép người dùng root đăng nhập từ xa trừ khi thực sự cần thiết và có các biện pháp bảo mật bổ sung.
  • Người dùng và quyền hạn: Tạo người dùng và cơ sở dữ liệu riêng biệt cho mỗi ứng dụng, cấp quyền hạn tối thiểu cần thiết cho từng người dùng.
  • Sao lưu định kỳ: Thiết lập các quy trình sao lưu cơ sở dữ liệu tự động và định kỳ để bảo vệ dữ liệu của bạn khỏi mất mát.
  • Cập nhật thường xuyên: Đảm bảo MariaDB Server và hệ điều hành của bạn luôn được cập nhật lên các phiên bản mới nhất để nhận các bản vá bảo mật và cải tiến hiệu suất.
  • Giám sát: Theo dõi hiệu suất và nhật ký lỗi của MariaDB để phát hiện sớm các vấn đề tiềm ẩn.