MariaDB là một hệ thống quản lý cơ sở dữ liệu mã nguồn mở và thường được sử dụng để thay thế cho MySQL để làm phần cơ sở dữ liệu của LAMP stack (Linux, Apache, MySQL, PHP/Python/Perl). Bài viết này của Vietnix sẽ mô tả cách cài đặt MariaDB trên Ubuntu 20.04 và cấu hình các tính năng cơ bản cũng như nâng cao của MariaDB, quản lý người dùng và cơ sở dữ liệu, giúp bạn giải quyết các vấn đề thường gặp liên quan đến MariaDB trên Ubuntu 20.04
Điều kiện để cài đặt MariaDB trên Ubuntu 20.04
Để làm theo bài viết này, bạn sẽ cần một Ubuntu server 20.04 với một tài khoản user non-root có quyền admin và một firewall đã được cấu hình UFW. Trong bài viết lần này sẽ sử dụng phiên bản MariaDB 10.3.
Lưu ý: Để có thể thoải mái thực hiện các thao tác cài đặt cũng như sở hữu không gian lưu trữ rộng lớn, bạn cần một máy chủ linh hoạt với khả năng mở rộng nguồn tài nguyên dễ dàng. Lúc này, VPS sẽ là giải pháp lưu trữ phù hợp nhất dành cho bạn.
Vietnix đang là nhà cung cấp VPS tốc độ cao, ổn định, uy tín, chuyên nghiệp được nhiều khách hàng tin dùng tại thị trường Việt Nam. Với đa dạng gói cấu hình, mức giá cùng khả năng toàn quyền quản trị hệ thống và năng cấp tài nguyên nhanh chóng, VPS Vietnix là lựa chọn tối ưu nếu bạn đang tìm kiếm máy chủ lưu trữ có tốc độ và hiệu năng xử lý cao. Liên hệ với đội ngũ Vietnix để được tư vấn chi tiết nhất.
Bước 1: Cài đặt MariaDB
Trước khi cài đặt MariaDB, hãy cập nhật package index trên máy của bạn bằng apt
:
sudo apt update
Tiếp theo là cài đặt package MariaDB:
sudo apt install mariadb-server
Đảm bảo rằng MariaDB đang chạy với lệnh start systemctl
:
sudo systemctl start mariadb.service
Các lệnh này sẽ cài đặt và khởi động MariaDB, nhưng sẽ không nhắc bạn đặt mật khẩu hoặc thực hiện bất kỳ thay đổi cấu hình nào khác. Vì cấu hình mặc định khiến quá trình cài đặt MariaDB không an toàn, nên bạn sẽ cần sử dụng script mà mariadb-server
cung cấp để hạn chế quyền truy cập vào server và xóa các tài khoản không sử dụng.
Bước 2: Cấu hình MariaDB
Đối với các bản 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 cho một số yếu tố như đăng nhập tài khoản root từ xa và các tài khoản user dùng thử.
Chạy script bảo mật:
sudo mysql_secure_installation
Lệnh này sẽ đưa bạn thực hiện một loạt lời nhắc để bạn có thể thực hiện một số thay đổi đối với các tùy chọn bảo mật của MariaDB. Đầu tiên là bạn nhập mật khẩu root của cơ sở dữ liệu hiện tại. Vì bạn chưa thiết lập, hãy nhấn ENTER
để biểu thị “none”.
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):
Dấu nhắc tiếp theo hỏi bạn có muốn thiết lập mật khẩu gốc cơ sở dữ liệu hay không. Trên Ubuntu, tài khoản root cho MariaDB được liên kết chặt chẽ với hệ thống bảo trì tự động, vì vậy bạn không nên thay đổi các phương thức xác thực đã cấu hình cho tài khoản đó. Điều này sẽ khiến bản cập nhật gói có thể phá vỡ hệ thống cơ sở dữ liệu bằng cách xóa quyền truy cập vào tài khoản quản trị. 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
Phần tiếp theo sẽ giới thiệu cách thiết lập tài khoản quản trị bổ sung để truy cập bằng mật khẩu nếu xác thực socket không phù hợp với trường hợp của bạn.
Sau khi chạy lệnh xong, bạn có thể nhấn Y
rồi ENTER
để chấp nhận các giá trị mặc định cho tất cả các thiết lập tiếp theo. Thao tác này sẽ xóa một số user ẩn danh và cơ sở dữ liệu thử nghiệm, vô hiệu hóa đăng nhập root từ xa và tải các quy tắc mới lên để MariaDB thực hiện ngay những thay đổi bạn đã thực hiện.
Như vậy, bạn đã hoàn thành cấu hình bảo mật ban đầu cho MariaDB. Bước tiếp theo là tùy chọn, tuy nhiên bạn nên làm theo nếu muốn thực hiện xác thực máy chủ MariaDB của mình bằng mật khẩu.
Bước 3: (Không bắt buộc) Tạo user có quyền Admin sử dụng xác thực bằng mật khẩu
Trên các hệ thống Ubuntu chạy MariaDB 10.3, user root của MariaDB được đặt mặc định là xác thực bằng plugin unix_socket
thay vì bằng mật khẩu. Điều này cho phép tăng tính bảo mật và khả năng sử dụng trong nhiều trường hợp, nhưng khá phức tạp khi bạn cần cấp quyền quản trị cho các chương trình bên ngoài (ví dụ: phpMyAdmin).
Vì server sử dụng tài khoản root cho các tác vụ như log rotation, khởi động và dừng server nên tốt nhất là không thay đổi chi tiết xác thực của tài khoản root. Thay đổi thông tin xác thực trong tệp cấu hình /etc/mysql/debian.cnf
ban đầu có thể khả dụng, nhưng các bản cập nhật package có khả năng ghi đè lên những thay đổi đó. Thay vì sửa đổi tài khoản root, bạn nên tạo một tài khoản quản trị riêng để truy cập bằng mật khẩu.
Để đạt được điều này, bạn sẽ tạo một tài khoản mới có tên là admin với các quyền giống như tài khoản root nhưng được cấu hình để xác thực bằng mật khẩu. Mở MariaDB prompt từ terminal:
sudo mariadb
Sau đó, tạo một tài khoản mới với quyền root và quyền truy cập dựa trên mật khẩu. Đảm bảo thay đổi tên người dùng và mật khẩu để phù hợp với tài khoản của bạn:
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Tiến hành flush các đặc quyền để đảm bảo rằng chúng được lưu và có sẵn trong phiên bản hiện tại:
FLUSH PRIVILEGES;
Sau đó, thoát MariaDB shell:
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ừ repository mặc định, MariaDB sẽ bắt đầu chạy tự động. Để kiểm tra điều này, hãy kiểm tra status của MariaDB.
sudo systemctl status mariadb
Bạn sẽ nhận được output 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 không chạy, bạn có thể khởi động 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 bằng công cụ mysqladmin
– ứng dụng client cho phép bạn chạy các lệnh quản trị. Ví dụ: Lệnh này yêu cầu kết nối MariaDB với quyền root bằng Unix socket và trả về số phiên bản:
sudo mysqladmin version
Bạn sẽ nhận được output 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 đã cấu hình một người dùng quản trị riêng bằ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 đang hoạt động và người dùng của bạn có thể xác thực thành công.
Ngoài ra, bạn cũng có thể tìm hiểu thêm về cách quản lý người dùng như thêm hoặc xóa hiệu quả trên Ubuntu 20.04 để đáp ứng nhu cầu sử dụng và đảm bảo tính bảo mật của hệ thống.
Lời kết
Trong hướng dẫn sử dụng và cài đặt MariaDB trên Ubuntu 20.04 này, bạn đã cài đặt hệ thống quản lý cơ sở dữ liệu quan hệ MariaDB và bảo mật bằng tập lệnh mysql_secure_installation
. Bạn cũng có thể tạo người dùng quản trị mới và sử dụng xác thực mật khẩu trước khi kiểm tra chức năng MariaDB. Chúc bạn thao tác thành công và quản trị dữ liệu hiệu quả với hệ thống này và đừng quên theo dõi những bài viết hữu ích tiếp theo của Vietnix về lĩnh vực lập trình nhé.