Cấu hình Remote Client Access trong MariaDB trên Ubuntu

Trước khi đi đến phần cấu hình chúng ta tìm hiểu một chút về cơ chế kết nối của MariaDB. Mặc định MariaDB gắn với địa chỉ 127.0.0.1 (IP loopback) bằng tùy chọn bind-address trong file cấu hình, điều này giúp hệ thống bảo mật hơn do không thể kết nối trực tiếp đến MariaDB server từ remote host thông qua cổng TCP. Kể cả cùng 1 máy chủ nhưng khác cổng loopback thì cũng không thể nào kết nối được. Một số phiên bản MariaDB cũ còn khóa luôn kết nối TCP/IP bằng tùy chọn skip-networking.

Kiểm tra cấu hình MariaDB bằng câu lệnh

$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Bạn sẽ thấy tùy chọn

bind-address = 127.0.0.1

Cấu hình MariaDB nghe kết nối từ remote host

Quảng cáo

Ủng hộ website

Rất đơn giản bạn chỉ cần chuyển dòng tùy chọn #bind-address = 127.0.0.1 thành comment, ấn Ctrl+O và Ctrl_X để thoát. Khởi động lại máy chủ MariaDB bằng lệnh

$ sudo systemctl restart mariadb

Xem lại cấu hình của MariaDB bằng lệnh

$ mysqld --print-defaults
mysqld would have been started with the following arguments:
--user=mysql --pid-file=/run/mysqld/mysqld.pid --socket=/run/mysqld/mysqld.sock --port=3306 --basedir=/usr --datadir=/var/lib/mysql --tmpdir=/tmp --lc-messages-dir=/usr/share/mysql --query_cache_size=16M --log_error=/var/log/mysql/error.log --expire_logs_days=10 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --lower_case_table_names=1

Cấp quyền cho user kết nối bằng remote host

Đăng nhập vào MariaDB bằng câu lệnh

$ sudo mysql -u root

Sử dụng lệnh sau để xem các user và host được phép kết nối

MariaDB [(none)]> SELECT User, Host FROM mysql.user;
+-------+-------------+
| User  | Host        |
+-------+-------------+
| jess  | 26.52.152.3 |
| jess  | localhost   |
| root  | localhost   |
+-------+-------------+

Như hình trên ta có thể thấy tài khoản jess được phép kết nối trong localhost và từ địa chỉ 26.52.152.3 bây giờ ta muốn thêm địa chỉ để kết nối đến tài khoản jess bằng lệnh

GRANT ALL PRIVILEGES ON dev_test.* TO 'jess'@'192.168.0.%' 
IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Câu lệnh trên giúp tài khoản jess sử dụng cơ sở dữ liệu dev_test được phép truy cập từ mạng LAN có địa chỉ 192.168.0.0/24 với mật khẩu là “my-new-password”

Kiểm tra lại ta sẽ thấy:

MariaDB [(none)]> SELECT User, Host FROM mysql.user;
+-------+-------------+
| User  | Host        |
+-------+-------------+
| jess  | 192.168.0.% |
| jess  | 61.38.140.3 |
| jess  | localhost   |
| root  | localhost   |
+-------+-------------+

Cấu hình tường lửa để cho phép cổng kết nối MariaDB

Nếu bạn đã kích hoạt tường lửa ufw trên Ubuntu thì cần cấu hình để cho phép cổng 3306 của MariaDB, nếu bạn đã đổi cổng khác thì lưu ý nhập vào cổng tương ứng nhé

$ sudo ufw allow 3306/tcp

Bài viết sử dụng Ubuntu 20.04 và MariaDB 10.3. Mong được các bạn đóng góp ý kiến để website ngày càng phát triển.

Add Comment