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
sudohoặc quyềnroottrê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:
- 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.
- Set root password? [Y/n]: Gõ
Yvà nhấn Enter để đặt mật khẩu mạnh cho người dùng root của MariaDB. - Remove anonymous users? [Y/n]: Gõ
Yđể xóa người dùng ẩn danh. - Disallow root login remotely? [Y/n]: Gõ
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. - Remove test database and access to it? [Y/n]: Gõ
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. - Reload privilege tables now? [Y/n]: Gõ
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_moi và mat_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:
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
sudo ss -tunlp | grep 3306/etc/mysql/mariadb.conf.d/50-server.cnfhoặc tương tự).
- Kiểm tra nhật ký dịch vụ để tìm thông tin chi tiế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).
- Đảm bảo bạn nhập đúng mật khẩu root đã đặt trong
-
⚠️ Lỗi:
command not foundkhi chạymysqlhoặcmysql_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-servervàmariadb-client(trên Debian/Ubuntu) hoặcmariadb-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
- Trên Ubuntu/Debian (UFW):
- Đả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òngbind-address = 127.0.0.1thànhbind-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ùngrootđă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.