Thứ Tư, 25 tháng 2, 2026

MODULE 5: CẤU HÌNH MẠNG VÀ KẾT NỐI CSDL

1. Tổng quan

Trong Oracle, Listener là một tiến trình chạy tách biệt (tnslsnr). Nếu Listener sập, các kết nối hiện tại vẫn sống nhưng kết nối mới sẽ thất bại.

Trái lại, ở SQL Server, PostgreSQL, MySQL và MongoDB, cơ chế "lắng nghe" (Bind/Listen) được tích hợp thẳng vào tiến trình lõi (Engine/Daemon). Nếu tiến trình lõi sập, toàn bộ kết nối mạng cũng ngắt ngay lập tức.

Bài học này giúp anh ánh xạ cách cấu hình IP, Port và cơ chế cho phép Client truy cập.

2. Chi tiết các nội dung

A. Cơ chế Lắng nghe (Listening) & Cổng (Port)

CSDLCổng mặc địnhCách cấu hình IP Lắng nghe (Bind Address)Đặc điểm nổi bật
Oracle1521File listener.ora (Tham số HOST).Chạy tiến trình riêng. Hỗ trợ Load Balancing/Failover qua SCAN IP (RAC).
SQL Server1433Bật qua GUI: SQL Server Configuration Manager $\rightarrow$ Network Configuration $\rightarrow$ Enable TCP/IP.SQL Server Browser (UDP 1434) để client tự động dò tìm các Named Instance.
PostgreSQL5432File postgresql.conf $\rightarrow$ listen_addresses = '*'.Mặc định chỉ nghe localhost. Phải sửa thành '*' hoặc IP cụ thể.
MySQL3306File my.cnf $\rightarrow$ bind-address = 0.0.0.0.Mặc định thường bind vào 127.0.0.1. Rất dễ cấu hình.
MongoDB27017File mongod.conf $\rightarrow$ net.bindIp: 0.0.0.0.Hỗ trợ cấu hình nhiều IP dạng mảng (Array).

B. Cơ chế Phân giải và Xác thực Client (Client Authentication)

Đây là điểm khác biệt lớn nhất giữa các hệ thống:

  • Oracle: Dùng sqlnet.ora để chặn/cho phép IP (TCP.VALIDNODE_CHECKING).

  • PostgreSQL: Sở hữu cơ chế cực kỳ chặt chẽ qua file pg_hba.conf (Host-Based Authentication). Giống như Firewall nội bộ của DB. Anh phải khai báo rõ: IP nào, dùng User nào, vào Database nào, bằng phương thức mã hóa gì (md5/scram-sha-256) thì mới được vào.

  • MySQL / MariaDB: Không có file riêng như Postgres. Quy tắc mạng được gắn thẳng vào tài khoản User. Ví dụ: User binh@'192.168.1.%' chỉ được phép login từ dải mạng nội bộ.

  • SQL Server: Sử dụng Windows Firewall để chặn IP. Xác thực dựa vào Windows Authentication (tích hợp Active Directory) hoặc SQL Server Authentication (Mixed Mode).

C. Câu lệnh và Công cụ quản trị mạng

1. Oracle: ```bash

lsnrctl status

-- Kết quả: Liệt kê các service đang được listener phục vụ (Ready/Blocked/Unknown).


**2. SQL Server:** Kiểm tra các session đang kết nối qua giao thức nào (TCP, Named Pipes hay Shared Memory).
```sql
SELECT session_id, net_transport, client_net_address, client_tcp_port 
FROM sys.dm_exec_connections;
-- Kết quả: 54 | TCP | 192.168.1.100 | 50123

3. PostgreSQL: Tải lại rules mạng mà không rớt connection đang có.

SQL
-- Sau khi anh sửa pg_hba.conf để cấp quyền cho 1 IP mới:
SELECT pg_reload_conf();
-- Kết quả: t (True - Đã nạp lại cấu hình thành công).

4. MySQL / MariaDB: Xem danh sách client đang kết nối.

SQL
SHOW PROCESSLIST;
-- Kết quả: Liệt kê Id, User, Host (kèm IP và Port của client), DB, Command.

3. Tóm tắt lại nội dung của bài học

  • Để cấu hình mạng cho SQL Server, anh không can thiệp bằng lệnh mà bắt buộc phải dùng công cụ SQL Server Configuration Manager (nằm trên server) để bật giao thức TCP/IP, sau đó restart service.

  • Với PostgreSQL, cấu hình mạng gồm 2 bước bắt buộc: (1) Mở port lắng nghe trong postgresql.conf và (2) Cho phép IP truy cập trong pg_hba.conf.

  • Với MySQL, quyền truy cập mạng được định nghĩa ngay lúc anh gõ lệnh CREATE USER.


4. Câu hỏi ôn tập

  1. Hỏi: Nếu client báo lỗi không kết nối được đến một Named Instance của SQL Server (ví dụ: Server1\DEV), dịch vụ mạng nào của SQL Server có thể đang bị tắt?

    • Đáp: Dịch vụ SQL Server Browser (chạy trên port UDP 1434, giúp phân giải tên Instance ra port động của TCP).

  2. Hỏi: File cấu hình nào trong PostgreSQL đóng vai trò kiểm soát luồng truy cập tương tự như tính năng TCP.VALIDNODE_CHECKING (trong sqlnet.ora) của Oracle?

    • Đáp: File pg_hba.conf (Host-based Authentication).

  3. Hỏi: Để MySQL lắng nghe trên tất cả các card mạng (Interfaces) của Server thay vì chỉ localhost, anh cấu hình tham số nào trong my.cnf?

    • Đáp: Tham số bind-address = 0.0.0.0.

  4. Hỏi: Trong SQL Server, giao thức nào thường được dùng khi Ứng dụng và Database nằm trên cùng một máy chủ vật lý để đạt tốc độ cao nhất (bỏ qua tầng TCP/IP)?

    • Đáp: Giao thức Shared Memory.

  5. Hỏi: Khi anh thêm một dòng mới vào pg_hba.conf của PostgreSQL, anh có cần khởi động lại toàn bộ Instance không?

    • Đáp: Không. Chỉ cần chạy lệnh reload (SELECT pg_reload_conf(); hoặc pg_ctl reload), các kết nối cũ không bị ảnh hưởng.


5. Bài tập thực hành (Cấu hình và kiểm tra kết nối mạng)

Đề bài: Hãy viết cấu hình hoặc câu lệnh để cho phép các máy khách từ dải mạng nội bộ 192.168.1.0/24 có thể kết nối vào hệ thống cơ sở dữ liệu.

Đáp án:

1. Oracle: Thêm vào sqlnet.ora để giới hạn (nếu cần bảo mật khắt khe):

Plaintext
tcp.validnode_checking = yes
tcp.invited_nodes = (192.168.1.*)

2. SQL Server:

Trong SQL Server, việc chặn/mở dải IP không làm ở mức Database Engine. Anh cấu hình thông qua Windows Defender Firewall with Advanced Security:

  • Tạo Inbound Rule -> Port 1433 -> Scope -> Remote IP address: Add 192.168.1.0/24.

3. PostgreSQL:

Mở file pg_hba.conf và thêm dòng sau xuống cuối file (sau đó chạy lệnh reload):

Plaintext
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             192.168.1.0/24          scram-sha-256

4. MySQL / MariaDB:

Anh phải tạo user hoặc cấp quyền truy cập gắn chặt với dải mạng này:

SQL
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'192.168.1.%';
FLUSH PRIVILEGES;

5. MongoDB:

Trong file /etc/mongod.conf, sửa lại cấu hình bindIp để lắng nghe kết nối bên ngoài:

YAML
net:
  port: 27017
  bindIp: 127.0.0.1,192.168.1.10  # Lắng nghe localhost và IP của máy chủ trên dải nội bộ

(Tiếp theo cấu hình Firewall OS mở port 27017 cho dải 192.168.1.0/24).

=============================
TƯ VẤN: Click Here hoặc Hotline/Zalo 090.29.12.888
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master