Bạn đang tìm kiếm một hướng dẫn chi tiết để cài đặt MariaDB trên hệ điều hành CentOS là gì 7? Dù bạn là một nhà phát triển web, quản trị viên hệ thống, hay chỉ đơn giản là một người yêu công nghệ muốn xây dựng môi trường máy chủ của riêng mình, việc cài đặt và cấu hình một hệ quản trị cơ sở dữ liệu mạnh mẽ là bước không thể thiếu. MariaDB, với hiệu suất cao và tính tương thích tuyệt vời với MySQL, đã trở thành lựa chọn hàng đầu cho nhiều dự án. Bài viết này của AZWEB sẽ đồng hành cùng bạn, cung cấp một lộ trình rõ ràng, từ chuẩn bị môi trường, cài đặt, cấu hình bảo mật đến xử lý các lỗi thường gặp, giúp bạn tự tin làm chủ MariaDB trên CentOS 7.
Giới thiệu về MariaDB và CentOS 7
MariaDB là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, được phát triển bởi các nhà sáng lập ban đầu của MySQL. Nó được thiết kế để trở thành một sự thay thế hoàn hảo cho MySQL với hiệu suất cao hơn, nhiều tính năng hơn và một lộ trình phát triển minh bạch, hướng đến cộng đồng. Trong thế giới máy chủ, MariaDB đóng vai trò là trái tim lưu trữ và truy xuất dữ liệu cho hàng triệu ứng dụng web, từ các trang blog cá nhân đến các hệ thống thương mại điện tử phức tạp.
Linux là gì CentOS 7, một bản phân phối Linux dựa trên Red Hat Enterprise Linux (RHEL), nổi tiếng với sự ổn định, an toàn và đáng tin cậy. Những đặc điểm này khiến nó trở thành nền tảng lý tưởng để triển khai các dịch vụ máy chủ quan trọng, đặc biệt là các dịch vụ cơ sở dữ liệu đòi hỏi hoạt động liên tục. Sự kết hợp giữa CentOS 7 và MariaDB tạo ra một môi trường máy chủ vững chắc, hiệu quả và tiết kiệm chi phí.
Việc cài đặt chính xác MariaDB trên CentOS 7 không chỉ đảm bảo ứng dụng của bạn hoạt động ổn định mà còn là nền tảng cho việc tối ưu hiệu suất và tăng cường bảo mật sau này. Trong bài viết này, AZWEB sẽ hướng dẫn bạn chi tiết từng bước, từ việc chuẩn bị môi trường, thêm repository chính thức, cài đặt các gói cần thiết, cấu hình bảo mật ban đầu và cả cách xử lý những sự cố phổ biến. Hãy cùng bắt đầu hành trình xây dựng nền tảng dữ liệu vững chắc cho dự án của bạn!

Chuẩn bị môi trường và thêm repository cho MariaDB
Trước khi đi vào cài đặt, việc chuẩn bị một môi trường sạch và đúng chuẩn là yếu tố quyết định sự thành công. Giống như xây một ngôi nhà, bạn cần một nền móng vững chắc. Bước đầu tiên trong quy trình này là đảm bảo hệ điều hành là gì của bạn được cập nhật và sẵn sàng để tiếp nhận phần mềm mới.
Yêu cầu hệ thống và cập nhật CentOS 7
Đầu tiên, hãy đảm bảo bạn đang đăng nhập vào máy chủ với quyền root hoặc một người dùng có quyền sudo. Điều này rất quan trọng vì các lệnh cài đặt và cấu hình hệ thống yêu cầu quyền quản trị cao nhất. Bạn có thể kiểm tra phiên bản CentOS của mình bằng lệnh:
cat /etc/centos-release
Lệnh này sẽ hiển thị thông tin phiên bản, giúp bạn xác nhận mình đang làm việc trên CentOS 7.
Tiếp theo, bước quan trọng nhất là cập nhật toàn bộ hệ thống để đảm bảo tất cả các gói phần mềm đều ở phiên bản mới nhất, bao gồm cả các bản vá lỗi và bảo mật. Hãy chạy lệnh sau:
sudo yum update -y

Tùy chọn -y sẽ tự động xác nhận tất cả các câu hỏi, giúp quá trình cập nhật diễn ra liền mạch. Sau khi cập nhật hoàn tất, bạn có thể cần cài đặt một số gói tiện ích cần thiết cho các bước tiếp theo, chẳng hạn như wget hoặc curl để tải về các tệp từ internet.
sudo yum install wget -y
Thêm MariaDB repository chính thức
Mặc dù CentOS 7 có sẵn một phiên bản MariaDB trong kho lưu trữ (repository) mặc định, nhưng đó thường là phiên bản cũ. Để cài đặt phiên bản mới nhất và nhận được các bản cập nhật thường xuyên, chúng ta nên sử dụng repository chính thức từ MariaDB Foundation.
Để thêm repository, bạn cần tạo một tệp tin cấu hình mới trong thư mục /etc/yum.repos.d/. Hãy tạo một tệp có tên MariaDB.repo bằng trình soạn thảo văn bản bạn quen dùng, ví dụ như nano hoặc vi.
sudo nano /etc/yum.repos.d/MariaDB.repo
Bên trong tệp này, hãy dán nội dung sau. Nội dung này sẽ chỉ cho trình quản lý gói yum biết nơi để tìm và tải về các gói cài đặt MariaDB phiên bản 10.5 (một phiên bản ổn định và phổ biến).
# MariaDB 10.5 CentOS repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Sau khi lưu và đóng tệp, hãy làm sạch bộ nhớ cache của yum và cập nhật lại danh sách gói để hệ thống nhận diện repository mới.
sudo yum clean all
sudo yum makecache
Bây giờ, bạn có thể kiểm tra xem repository đã được thêm thành công hay chưa bằng cách liệt kê các repository đang được kích hoạt:
yum repolist
Nếu bạn thấy mariadb trong danh sách, xin chúc mừng! Môi trường của bạn đã sẵn sàng để tiến hành cài đặt MariaDB.

Hướng dẫn cài đặt gói MariaDB trên CentOS 7
Khi môi trường đã được chuẩn bị và repository chính thức đã được thêm, việc cài đặt MariaDB trở nên vô cùng đơn giản. Trình quản lý gói yum sẽ tự động tìm kiếm phiên bản mới nhất từ repository bạn vừa cấu hình và xử lý các gói phụ thuộc cần thiết.
Cài đặt MariaDB server và client
Để cài đặt MariaDB, bạn chỉ cần thực hiện một lệnh duy nhất. Lệnh này sẽ cài đặt cả thành phần máy chủ (mariadb-server) và thành phần máy khách (mariadb-client), cho phép bạn vừa vận hành cơ sở dữ liệu, vừa tương tác với nó thông qua dòng lệnh.
sudo yum install MariaDB-server MariaDB-client -y

Trong quá trình cài đặt, yum sẽ hỏi bạn có chấp nhận khóa GPG của repository MariaDB hay không. Đây là một bước bảo mật để xác minh tính toàn vẹn của các gói phần mềm bạn đang cài đặt. Hãy nhập y và nhấn Enter để tiếp tục. Sau khi lệnh chạy xong, MariaDB đã được cài đặt thành công trên hệ thống của bạn.
Các gói được cài đặt bao gồm:
- MariaDB-server: Đây là gói cốt lõi, chứa daemon (dịch vụ chạy nền) của cơ sở dữ liệu, các tệp cấu hình và công cụ quản trị.
- MariaDB-client: Gói này cung cấp các công cụ để kết nối và tương tác với máy chủ MariaDB, nổi bật nhất là tiện ích dòng lệnh
mysql. - MariaDB-common và MariaDB-compat: Các gói phụ thuộc chứa các tệp và thư viện chung cần thiết cho cả server và client.
Khởi động và kích hoạt MariaDB tự động khởi động cùng hệ thống
Sau khi cài đặt, dịch vụ MariaDB chưa tự động chạy. Bạn cần khởi động nó một cách thủ công. Sử dụng systemctl, công cụ quản lý dịch vụ tiêu chuẩn trên CentOS 7, để bắt đầu dịch vụ:
sudo systemctl start mariadb
Lệnh này sẽ khởi chạy tiến trình MariaDB. Tuy nhiên, nếu máy chủ của bạn khởi động lại, dịch vụ sẽ không tự chạy lại. Để đảm bảo MariaDB luôn sẵn sàng hoạt động, bạn cần kích hoạt nó để tự động khởi động cùng hệ thống.
sudo systemctl enable mariadb
Lệnh enable sẽ tạo các liên kết tượng trưng cần thiết để dịch vụ được nạp vào lúc khởi động hệ thống.
Cuối cùng, hãy kiểm tra trạng thái của dịch vụ để chắc chắn rằng nó đang chạy ổn định và không có lỗi nào xảy ra.
sudo systemctl status mariadb

Nếu bạn thấy dòng Active: active (running) với màu xanh lá, điều đó có nghĩa là máy chủ cơ sở dữ liệu của bạn đã hoạt động thành công. Giờ đây, bạn đã sẵn sàng để chuyển sang bước tiếp theo: cấu hình và bảo mật.
Cấu hình và bảo mật cơ bản dịch vụ MariaDB
Cài đặt thành công chỉ là bước khởi đầu. Để MariaDB hoạt động hiệu quả và an toàn trong môi trường thực tế, bạn cần thực hiện các bước cấu hình và bảo mật ban đầu. Đây là giai đoạn quan trọng để bảo vệ dữ liệu của bạn khỏi các truy cập trái phép và tối ưu hóa hiệu suất cho ứng dụng.
Cấu hình file my.cnf cơ bản để tối ưu hiệu suất
Tệp cấu hình chính của MariaDB là my.cnf, thường nằm trong thư mục /etc/. Bạn có thể tùy chỉnh nhiều thông số tại đây, nhưng đối với một thiết lập ban đầu, có một vài điều chỉnh nhỏ có thể mang lại lợi ích lớn. Ví dụ, việc thiết lập bộ ký tự mặc định là utf8mb4 là rất quan trọng để hỗ trợ đầy đủ các loại ký tự, bao gồm cả biểu tượng cảm xúc (emoji), điều này rất cần thiết cho các ứng dụng web hiện đại.
Mở tệp cấu hình bằng trình soạn thảo:
sudo nano /etc/my.cnf.d/server.cnf
Dưới phần [mysqld], hãy thêm các dòng sau:
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
Những thiết lập này đảm bảo rằng mọi cơ sở dữ liệu và bảng mới được tạo ra sẽ mặc định sử dụng bộ ký tự utf8mb4. Sau khi chỉnh sửa, đừng quên khởi động lại dịch vụ MariaDB để áp dụng thay đổi.
sudo systemctl restart mariadb

Thiết lập bảo mật ban đầu cho MariaDB
Ngay sau khi cài đặt, MariaDB tồn tại ở một trạng thái kém an toàn: người dùng root không có mật khẩu, có các tài khoản ẩn danh và cơ sở dữ liệu thử nghiệm. MariaDB cung cấp một kịch bản (script) tiện lợi để giúp bạn khắc phục những lỗ hổng này một cách nhanh chóng. Hãy chạy lệnh sau:
sudo mysql_secure_installation

Kịch bản này sẽ hỏi bạn một loạt câu hỏi. AZWEB khuyên bạn nên trả lời như sau:
- Enter current password for root (enter for none): Vì đây là lần đầu chạy, chưa có mật khẩu, bạn chỉ cần nhấn Enter.
- Set root password? [Y/n]: Nhập Y và đặt một mật khẩu mạnh cho người dùng
rootcủa cơ sở dữ liệu. - Remove anonymous users? [Y/n]: Nhập Y. Người dùng ẩn danh là một rủi ro bảo mật.
- Disallow root login remotely? [Y/n]: Nhập Y. Đây là một biện pháp bảo mật rất quan trọng, ngăn chặn việc tấn công dò mật khẩu
roottừ xa. - Remove test database and access to it? [Y/n]: Nhập Y. Cơ sở dữ liệu
testkhông cần thiết trong môi trường sản xuất. - Reload privilege tables now? [Y/n]: Nhập Y để áp dụng tất cả các thay đổi ngay lập tức.
Sau khi hoàn tất kịch bản này, hệ thống MariaDB của bạn đã được bảo mật ở mức cơ bản. Bước tiếp theo là tạo một người dùng mới với quyền hạn giới hạn để ứng dụng của bạn sử dụng, thay vì dùng tài khoản root đầy quyền năng.
-- Đăng nhập vào MariaDB với quyền root
sudo mysql -u root -p
-- Tạo người dùng mới và cấp quyền
CREATE USER 'ten_user'@'localhost' IDENTIFIED BY 'mat_khau_manh';
GRANT ALL PRIVILEGES ON ten_database.* TO 'ten_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Việc này đảm bảo rằng ngay cả khi thông tin đăng nhập của ứng dụng bị lộ, kẻ tấn công cũng chỉ có thể truy cập vào một cơ sở dữ liệu duy nhất, giảm thiểu thiệt hại đáng kể.
Những lỗi thường gặp khi cài đặt MariaDB trên CentOS 7
Ngay cả khi đã làm theo hướng dẫn cẩn thận, đôi khi bạn vẫn có thể gặp phải một số lỗi không mong muốn. Đừng lo lắng, hầu hết các vấn đề này đều có nguyên nhân phổ biến và cách khắc phục tương đối đơn giản. AZWEB sẽ chỉ ra hai lỗi thường gặp nhất và cách xử lý chúng.
Lỗi không khởi động được dịch vụ MariaDB
Đây là một trong những sự cố phổ biến nhất. Bạn chạy lệnh sudo systemctl start mariadb nhưng lại nhận được thông báo lỗi, và khi kiểm tra trạng thái bằng sudo systemctl status mariadb, bạn thấy dòng Active: failed.
Nguyên nhân thường gặp:
- Thiếu dung lượng đĩa: MariaDB cần không gian trống để tạo các tệp log và tệp tạm. Nếu ổ cứng đầy, dịch vụ sẽ không thể khởi động.
- Cấu hình sai trong
my.cnf: Một lỗi cú pháp nhỏ hoặc một giá trị không hợp lệ trong tệp cấu hình có thể ngăn cản MariaDB khởi động. - Vấn đề về quyền sở hữu tệp: Thư mục dữ liệu của MariaDB (thường là
/var/lib/mysql) phải thuộc sở hữu của người dùngmysql. Nếu quyền bị thay đổi, dịch vụ sẽ không có quyền ghi và không thể khởi động. - Port đã bị sử dụng: MariaDB mặc định chạy trên port 3306. Nếu một dịch vụ khác đang chiếm dụng port này, MariaDB sẽ thất bại.
Cách khắc phục:
- Kiểm tra log hệ thống: Đây là bước đầu tiên và quan trọng nhất. Lệnh
sudo journalctl -xesẽ cung cấp thông tin chi tiết về nguyên nhân gây ra lỗi. Hãy đọc kỹ các dòng thông báo lỗi màu đỏ. - Kiểm tra dung lượng đĩa: Sử dụng lệnh
df -hđể xem dung lượng trống trên các phân vùng. - Kiểm tra lại tệp cấu hình: Nếu bạn vừa chỉnh sửa tệp
my.cnf, hãy tạm thời khôi phục lại phiên bản cũ hoặc kiểm tra kỹ lưỡng từng dòng đã thay đổi. - Kiểm tra quyền sở hữu: Chạy lệnh
ls -ld /var/lib/mysqlđể xem quyền sở hữu. Nếu không phải làmysql:mysql, hãy sửa lại bằng lệnhsudo chown -R mysql:mysql /var/lib/mysql.

Lỗi kết nối MySQL/MariaDB bị từ chối
Một lỗi phổ biến khác là khi ứng dụng của bạn hoặc bạn cố gắng kết nối đến cơ sở dữ liệu từ một máy khác (hoặc thậm chí từ localhost) và nhận được thông báo lỗi như “Access denied for user” hoặc “Can’t connect to MySQL server”.
Nguyên nhân thường gặp:
- Tường lửa (Firewall) chặn kết nối: CentOS 7 sử dụng
firewalldlàm tường lửa mặc định. Nếu bạn không mở port 3306, mọi kết nối từ bên ngoài sẽ bị chặn. - MariaDB không lắng nghe trên địa chỉ IP công cộng: Theo mặc định, MariaDB có thể chỉ được cấu hình để chấp nhận kết nối từ
localhost(127.0.0.1). - Sai thông tin đăng nhập: Tên người dùng, mật khẩu hoặc host không chính xác.
- Người dùng không có quyền truy cập từ xa: Người dùng bạn đang sử dụng có thể chỉ được phép kết nối từ
localhost(ví dụ:ten_user@'localhost') chứ không phải từ một địa chỉ IP khác (ví dụ:ten_user@'%').
Cách khắc phục:
- Mở port trên tường lửa: Chạy các lệnh sau để cho phép lưu lượng truy cập qua port 3306.
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
- Kiểm tra cấu hình
bind-address: Mở tệp/etc/my.cnf.d/server.cnfvà tìm dòngbind-address. Nếu nó được đặt là127.0.0.1, hãy thay đổi thành0.0.0.0để cho phép kết nối từ mọi địa chỉ IP, hoặc comment dòng đó đi. Sau đó, khởi động lại MariaDB. - Kiểm tra lại thông tin đăng nhập: Đảm bảo bạn đang sử dụng đúng tên người dùng, mật khẩu và địa chỉ máy chủ.
- Kiểm tra quyền của người dùng: Đăng nhập vào MariaDB và chạy lệnh
SELECT user, host FROM mysql.user;để xem người dùng của bạn được phép kết nối từ host nào. Nếu cần, bạn có thể tạo một người dùng mới hoặc cập nhật người dùng hiện tại để cho phép truy cập từ xa.
Mẹo và lưu ý khi quản trị MariaDB trên CentOS 7
Việc quản trị một hệ thống cơ sở dữ liệu là một quá trình liên tục. Để đảm bảo MariaDB của bạn luôn hoạt động ở trạng thái tốt nhất, an toàn và ổn định, hãy ghi nhớ những mẹo và lưu ý quan trọng sau đây.
- Thường xuyên backup là gì dữ liệu và cấu hình MariaDB: Dữ liệu là tài sản quý giá nhất. Hãy thiết lập một lịch trình sao lưu tự động và định kỳ. Sử dụng công cụ
mysqldumpđể tạo các bản sao lưu logic. Đừng quên sao lưu cả các tệp cấu hình trong/etc/my.cnf.d/. Lưu trữ các bản sao lưu ở một vị trí an toàn, tốt nhất là trên một máy chủ khác hoặc dịch vụ lưu trữ đám mây. - Sử dụng công cụ giám sát dịch vụ MariaDB: Đừng đợi đến khi có lỗi mới hành động. Các công cụ giám sát như Zabbix, Nagios, hoặc các script đơn giản có thể giúp bạn theo dõi các chỉ số quan trọng như tải CPU, sử dụng bộ nhớ, số lượng kết nối và các truy vấn chạy chậm. Việc phát hiện sớm các dấu hiệu bất thường sẽ giúp bạn ngăn chặn các sự cố lớn.
- Không dùng
rootđể kết nối MariaDB trong môi trường sản xuất: Tài khoảnrootcủa MariaDB có toàn quyền trên tất cả các cơ sở dữ liệu. Việc sử dụng tài khoản này cho các ứng dụng web là một rủi ro bảo mật cực lớn. Luôn tạo các tài khoản người dùng riêng biệt cho mỗi ứng dụng với quyền hạn được giới hạn ở mức tối thiểu cần thiết (chỉ trên cơ sở dữ liệu mà ứng dụng đó cần). - Cập nhật MariaDB định kỳ để vá lỗi bảo mật: Giống như bất kỳ phần mềm nào khác, MariaDB cũng có thể có các lỗ hổng bảo mật được phát hiện theo thời gian. Hãy theo dõi các bản phát hành mới từ MariaDB Foundation và lên kế hoạch cập nhật hệ thống của bạn một cách định kỳ bằng lệnh
sudo yum update. Việc này giúp bảo vệ hệ thống của bạn khỏi các mối đe dọa đã biết.

Kết luận
Qua bài viết này, AZWEB đã cùng bạn đi qua một hành trình chi tiết để cài đặt và cấu hình MariaDB trên CentOS 7 một cách hiệu quả và an toàn. Chúng ta đã bắt đầu từ việc chuẩn bị môi trường, thêm repository chính thức, tiến hành cài đặt, thực hiện các bước bảo mật ban đầu thiết yếu, cho đến việc xử lý các lỗi thường gặp và các mẹo quản trị quan trọng. Việc nắm vững các bước này không chỉ giúp bạn xây dựng một nền tảng dữ liệu vững chắc cho các dự án của mình mà còn trang bị cho bạn những kỹ năng quản trị hệ thống cần thiết.
Hãy nhớ rằng, bảo mật là một quá trình liên tục chứ không phải là một hành động đơn lẻ. Việc thường xuyên thực hành các bước bảo mật như tạo người dùng với quyền hạn giới hạn, cập nhật phần mềm và sao lưu dữ liệu sẽ giúp hệ thống của bạn luôn an toàn trước các mối đe dọa. Đừng ngần ngại thực hành lại các bước trên một môi trường thử nghiệm để trở nên thành thạo hơn.
Chúng tôi hy vọng bài viết này đã mang lại những giá trị thiết thực cho bạn. Nếu bạn thấy nội dung này hữu ích, hãy chia sẻ nó với đồng nghiệp và bạn bè trong cộng đồng kỹ thuật. Nếu có bất kỳ câu hỏi hay thắc mắc nào, đừng ngần ngại để lại bình luận để cùng nhau thảo luận và học hỏi thêm. Chúc bạn thành công trên con đường chinh phục công nghệ