1. Tổng quan.
Sự chuyển đổi lắng nghe qua lại giữa các địa chỉ IP (như IPv4 và IPv6) đảm bảo khả năng tương thích, hỗ trợ các phiên bản giao thức khác nhau và tuân thủ các yêu cầu hoạt động hoặc quy định. Nó cũng đảm bảo ứng dụng của bạn có thể thích ứng với sự phát triển công nghệ và sẵn sàng cho tương lai.
Chuyển đổi lắng nghe qua lại giữa các địa chỉ IP (ví dụ: IPv4 và IPv6) có thể cần thiết trong một số tình huống sau:
- Hỗ trợ các phiên bản giao thức khác nhau: IPv4 và IPv6 là hai phiên bản giao thức mạng khác nhau. Việc chuyển đổi lắng nghe giữa hai phiên bản này cho phép ứng dụng hoạt động trên các mạng IPv4 và IPv6 mà không cần phải thay đổi mã nguồn hay cấu hình.
- Đảm bảo khả năng tương thích: Một số hệ thống và ứng dụng có thể chỉ hỗ trợ IPv4 hoặc IPv6. Bằng cách chuyển đổi lắng nghe giữa các địa chỉ IP, bạn có thể đảm bảo khả năng tương thích với cả hai loại địa chỉ này.
- Quy định yêu cầu hoạt động: Một số yêu cầu hoạt động hoặc quy định có thể yêu cầu ứng dụng lắng nghe trên cả IPv4 và IPv6. Để tuân thủ các yêu cầu này, bạn cần chuyển đổi lắng nghe giữa các địa chỉ IP tương ứng.
- Thích ứng với sự phát triển công nghệ: IPv6 đang được triển khai rộng rãi và trở thành tiêu chuẩn cho mạng trong tương lai. Việc chuyển đổi lắng nghe từ IPv4 sang IPv6 giúp chuẩn bị cho sự phát triển công nghệ này và đảm bảo ứng dụng của bạn có thể hoạt động trên các mạng IPv6.
Mặc định port 3306 của MySQL sẽ lắng nghe ở IP localhost 127.0.0.1
.
$ netstat -tlnp | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1031/mariadbd
Xác định bind-address
nằm ở file nào và tiến hành điều chỉnh nó, bạn có thể chạy lệnh find /etc/mysql/ -type f -exec grep -l 'bind-address' {} \;
với /etc/mysql/
là đường dẫn làm việc của MYSQL và bind-address
là nội dung tìm kiếm.
Ví dụ trường hợp dưới của mình file chứa nội dung bind-address
sẽ nằm tại file /etc/mysql/mariadb.conf.d/50-server.cnf
.
$ find /etc/mysql/ -type f -exec grep -l 'bind-address' {} \;
/etc/mysql/mariadb.conf.d/50-server.cnf
2. Cho phép tất cả các IP kết nối vào MYSQL.
Chúng ta có thể vào /etc/mysql/mariadb.conf.d/50-server.cnf
tìm bind-address và chỉnh sửa 127.0.0.1 thành 0.0.0.0 để cho phép tất cả các IP ở ngoài kết nối vào MySQL.
bind-address = 0.0.0.0
Khởi động lại dịch vụ MySQL để áp dụng thay đổi:
Trên Ubuntu hoặc Debian:
sudo service mysql restart
Trên CentOS hoặc Fedora:
sudo systemctl restart mysqld
- Trên Windows, sử dụng dịch vụ MySQL để khởi động lại.
Sau khi thực hiện các bước trên, MySQL sẽ chỉ lắng nghe kết nối trên giao thức IPv6 và cổng 3306. Bạn có thể kiểm tra bằng cách chạy lệnh
Tiến hành verify lại cài đặt.
$ netstat -tlnp | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1598/mariadbd
2. Cho phép một số IP cụ thể kết nối vào MYSQL.
Để chỉ cho phép kết nối từ các địa chỉ IP cụ thể như 192.168.1.101
và 192.168.1.102
, bạn có thể thực hiện các bước sau:
Mở file cấu hình MySQL (/etc/mysql/mariadb.conf.d/50-server.cnf
) trong trình soạn thảo văn bản.
Tìm phần bind-address và chỉnh sửa nó thành 0.0.0.0.
bind-address = 0.0.0.0
Điều này sẽ cho phép MySQL lắng nghe kết nối trên tất cả các địa chỉ IP.
Tiếp theo, bạn cần tạo quy tắc truy cập trong MySQL để chỉ cho phép các địa chỉ IP cụ thể kết nối. Để làm điều này, bạn sẽ sử dụng cú pháp GRANT trong MySQL. Chạy các câu lệnh SQL sau để tạo quy tắc truy cập cho các địa chỉ IP:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.1.101' IDENTIFIED BY 'password' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.1.102' IDENTIFIED BY 'password' WITH GRANT OPTION;
Trong câu lệnh trên, ‘username’ là tên người dùng MySQL và ‘password’ là mật khẩu tương ứng của người dùng.Nếu bạn muốn cung cấp quyền truy cập chỉ đọc, bạn có thể thay ALL PRIVILEGES
bằng SELECT
trong câu lệnh GRANT.
Khởi động lại dịch vụ MySQL để áp dụng thay đổi:
Trên Ubuntu hoặc Debian:
sudo service mysql restart
Trên CentOS hoặc Fedora:
sudo systemctl restart mysqld
- Trên Windows, sử dụng dịch vụ MySQL để khởi động lại.
Sau khi thực hiện các bước trên, MySQL sẽ chỉ lắng nghe kết nối trên giao thức IPv6 và cổng 3306. Bạn có thể kiểm tra bằng cách chạy lệnh
3. Cho phép chỉ IPv6 mới được kết nối vào MYSQL.
Để chỉ lắng nghe cổng 3306 trên giao thức TCP6 trong MySQL, bạn cần chỉnh sửa file cấu hình /etc/mysql/mariadb.conf.d/50-server.cnf
của MySQL.
bind-address = ::
Điều này sẽ chỉ định cho MySQL lắng nghe trên tất cả các địa chỉ IPv6.
Lưu file cấu hình và đóng nó.
Khởi động lại dịch vụ MySQL để áp dụng thay đổi:
Trên Ubuntu hoặc Debian:
sudo service mysql restart
Trên CentOS hoặc Fedora:
sudo systemctl restart mysqld
- Trên Windows, sử dụng dịch vụ MySQL để khởi động lại.
Sau khi thực hiện các bước trên, MySQL sẽ chỉ lắng nghe kết nối trên giao thức IPv6 và cổng 3306. Bạn có thể kiểm tra bằng cách chạy lệnh netstat
hoặc các công cụ tương tự để xem cổng 3306 đã được lắng nghe trên giao thức TCP6 hay chưa.
Verify lại cấu hình sau khi thay đổi.
$ netstat -tlnp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 1836/mariadbd