MariaDB là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở, thường được sử dụng như một giải pháp thay thế cho MySQL trong bộ công cụ LAMP (Linux, Apache, MySQL, PHP/Python/Perl). Nó được thiết kế để có thể thay thế trực tiếp MySQL.
Phiên bản rút gọn của hướng dẫn cài đặt này gồm ba bước sau:
● Cập nhật chỉ mục gói của bạn sử dụng apt
● Cài đặt gói mariadb-server
sử dụng apt
. Gói này cũng cài đặt thêm các công cụ liên quan để tương tác với MariaDB
● Chạy script bảo mật mysql_secure_installation
kèm theo để hạn chế quyền truy cập vào máy chủ
sudo apt update sudo apt install mariadb-server sudo mysql_secure_installation
DataOnine sẽ giải thích cách cài đặt MariaDB trên một máy chủ Ubuntu 20.04 và kiểm tra xem nó có đang chạy không cũng như đảm bảo rằng cấu hình ban đầu đã an toàn.
Yêu Cầu
Để theo dõi hướng dẫn này, bạn cần một máy chủ chạy Ubuntu 20.04. Máy chủ này nên có một người dùng quản trị không phải root và một Firewall được cấu hình với UFW. Bạn có thể thiết lập theo hướng dẫn thiết lập máy chủ ban đầu cho Ubuntu 20.04.
Bước 1 – Cài đặt MariaDB
Tính đến thời điểm viết bài này, các kho lưu trữ APT mặc định của Ubuntu 20.04 bao gồm MariaDB phiên bản 10.3.
Để cài đặt, trước tiên hãy cập nhật chỉ mục gói trên máy chủ của bạn với apt:
sudo apt update
Sau đó, cài đặt gói:
sudo apt install mariadb-server
Kiểm tra xem MariaDB đã chạy chưa bằng lệnh systemctl start:
sudo systemctl start mariadb.service
Những lệnh này sẽ cài đặt và khởi chạy MariaDB, nhưng sẽ không yêu cầu bạn đặt mật khẩu hay thực hiện các thay đổi cấu hình khác. Vì cấu hình mặc định để lại MariaDB của bạn không an toàn, chúng ta sẽ sử dụng một script mà gói mariadb-server cung cấp để hạn chế quyền truy cập vào máy chủ và loại bỏ các tài khoản không cần thiết.
Bước 2 – Cấu hình MariaDB
Đối với các cài đặt MariaDB mới, bước tiếp theo là chạy script bảo mật đi kèm. Script này thay đổi một số tùy chọn mặc định kém an toàn như đăng nhập root từ xa và các người dùng mẫu.
Chạy script bảo mật:
sudo mysql_secure_installation
Script sẽ dẫn bạn qua một loạt các lời nhắc cho phép bạn thay đổi một số tùy chọn bảo mật cho cài đặt MariaDB. Lời nhắc đầu tiên yêu cầu bạn nhập mật khẩu hiện tại của người dùng root trong cơ sở dữ liệu. Vì bạn chưa đặt mật khẩu, hãy nhấn ENTER để xác nhận “không có”.
Output NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none):
Khi được hỏi tiếp theo liệu bạn có muốn đặt mật khẩu cho tài khoản root không, trên Ubuntu, tài khoản root của MariaDB gắn liền với việc bảo trì tự động của hệ thống, do đó chúng ta không nên thay đổi phương thức xác thực đã cấu hình cho tài khoản này. Việc thay đổi sẽ có thể khiến các bản cập nhật gói làm mất quyền truy cập tài khoản quản trị. Hãy nhập N rồi nhấn ENTER.
Output . . . OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] N
Việc đặt mật khẩu cho root đảm bảo rằng không ai có thể đăng nhập vào tài khoản root của MariaDB nếu không có sự cho phép.
Sau đó, bạn nhấn Y
và ENTER
để chấp nhận các giá trị mặc định cho các câu hỏi tiếp theo. Điều này sẽ loại bỏ một số người dùng ẩn danh và cơ sở dữ liệu test, vô hiệu hóa đăng nhập root từ xa và áp dụng các quy tắc mới để MariaDB ngay lập tức thực thi các thay đổi mà bạn đã thực hiện.
Với bước này, bạn đã hoàn tất cấu hình bảo mật ban đầu cho MariaDB. Bước tiếp theo là tùy chọn, nhưng bạn nên thực hiện nếu muốn xác thực vào máy chủ MariaDB bằng mật khẩu.
Bước 3 – Tạo tài khoản quản trị sử dụng xác thực mật khẩu
Trên hệ thống Ubuntu chạy MariaDB 10.3, tài khoản root của MariaDB được thiết lập mặc định để xác thực bằng plugin unix_socket thay vì mật khẩu. Điều này cho phép tăng cường bảo mật và thuận tiện trong nhiều trường hợp, nhưng cũng có thể gây khó khăn khi bạn cần cho phép một chương trình bên ngoài (ví dụ như phpMyAdmin) quyền quản trị.
Vì máy chủ sử dụng tài khoản root cho các tác vụ như quay vòng log và khởi động/dừng máy chủ, tốt nhất là không thay đổi thông tin xác thực của tài khoản root. Việc thay đổi thông tin trong tệp cấu hình /etc/mysql/debian.cnf có thể hoạt động ban đầu, nhưng các bản cập nhật gói có thể ghi đè các thay đổi đó. Thay vì sửa đổi tài khoản root, người quản lý gói khuyên bạn nên tạo một tài khoản quản trị riêng biệt cho việc truy cập bằng mật khẩu.
Vì vậy, chúng ta sẽ tạo một tài khoản mới có tên admin với các quyền tương đương tài khoản root, nhưng được cấu hình để sử dụng xác thực mật khẩu. Mở prompt của MariaDB từ terminal:
sudo mariadb
Sau đó tạo người dùng mới với quyền root và xác thực bằng mật khẩu. Hãy thay đổi tên người dùng và mật khẩu theo sở thích của bạn:
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Lưu lại các quyền để đảm bảo rằng chúng được lưu và áp dụng trong phiên làm việc hiện tại:
FLUSH PRIVILEGES;
Sau đó, thoát khỏi shell MariaDB:
exit
Cuối cùng, hãy kiểm tra cài đặt MariaDB.
Bước 4 – Kiểm tra MariaDB
Khi được cài đặt từ các kho lưu trữ mặc định, MariaDB sẽ tự động chạy. Để kiểm tra, hãy kiểm tra trạng thái của nó:
sudo systemctl status mariadb
Bạn sẽ nhận được đầu ra tương tự như sau:
Output ● mariadb.service - MariaDB 10.3.22 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-05-12 13:38:18 UTC; 3min 55s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 25914 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 2345) Memory: 65.6M CGroup: /system.slice/mariadb.service └─25914 /usr/sbin/mysqld . . .
Nếu MariaDB chưa chạy, bạn có thể khởi động nó bằng lệnh:sudo systemctl start mariadb
Để kiểm tra thêm, bạn có thể thử kết nối với cơ sở dữ liệu sử dụng công cụ mysqladmin, một client cho phép bạn chạy các lệnh quản trị. Ví dụ, lệnh sau sẽ kết nối đến MariaDB với tư cách là root qua Unix socket và trả về phiên bản:
sudo mysqladmin version
Bạn sẽ nhận được đầu ra tương tự như sau:
Output mysqladmin Ver 9.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.3.22-MariaDB-1ubuntu1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 4 min 49 sec Threads: 7 Questions: 467 Slow queries: 0 Opens: 177 Flush tables: 1 Open tables: 31 Queries per second avg: 1.615
Nếu bạn đã cấu hình tài khoản quản trị riêng biệt sử dụng xác thực mật khẩu, bạn có thể thực hiện thao tác tương tự bằng cách nhập:
mysqladmin -u admin -p version
Điều này có nghĩa là MariaDB đã hoạt động và bạn có thể xác thực truy cập thành công.
Kết Luận
Trong hướng dẫn này, bạn đã hoàn tất quá trình cài đặt MariaDB trên hệ thống Ubuntu và thiết lập các biện pháp bảo mật cần thiết bằng script mysql_secure_installation
. Ngoài ra, bạn cũng đã có tùy chọn tạo một tài khoản quản trị mới với cơ chế xác thực mật khẩu an toàn. Với những bước này, máy chủ MariaDB của bạn đã được bảo vệ tốt hơn, giúp đảm bảo tính bảo mật và hiệu suất cho hệ thống cơ sở dữ liệu.