MySQL đi kèm với một cấu hình mặc định hoàn hảo và đủ cho người dùng đang lưu trữ trang web và máy chủ MySQL của họ trên hệ thống Linux. Điều gì sẽ xảy ra nếu bạn muốn kết nối các hệ thống và người dùng khác với máy chủ MySQL của mình? Bài viết này sẽ giúp bạn tìm hiểu cách cho phép kết nối từ xa với MySQL trong Linux.
Điều kiện tiên quyết để cho phép kết nối từ xa với MySQL trong Linux
Khi bạn mua VPS Linux, bạn đã sẵn sàng cài đặt một máy chủ MySQL trên đó. Máy chủ này chỉ chấp nhận các kết nối đến từ chính nó vì nó chỉ lắng nghe các kết nối từ máy chủ cục bộ. Nhưng nếu bạn quyết định không chỉ đọc và ghi thông tin từ cơ sở dữ liệu trên cùng một máy chủ, bạn cần cho phép các kết nối từ xa đến máy chủ MySQL của mình. Để thực hiện việc này, hãy gán cho dịch vụ MySQL một địa chỉ IP công khai trên máy chủ của bạn và định cấu hình tường lửa hệ thống để chấp nhận các kết nối MySQL gửi đến.
Để cho phép kết nối từ xa đến máy chủ MySQL, bạn cần thực hiện một số cấu hình bổ sung. Nhưng trước đó, hãy xem xét các tùy chọn bên dưới để hướng dẫn này hoạt động chính xác.
- Một máy chủ chạy Linux.
- Người dùng không phải root có đặc quyền sudo.
- Đã cài đặt phần mềm MySQL.
Hướng dẫn cho phép kết nối từ xa với MySQL
Sau khi cài đặt máy chủ MySQL trên hệ thống Linux, bạn có thể đưa ra tình huống để kết nối với máy chủ MySQL từ xa từ hệ thống cục bộ của mình và liên lạc với tất cả các ứng dụng đang chạy trên các máy tính khác nhau từ máy chủ cơ sở dữ liệu. Sau khi bạn mua VPS mong muốn để lưu trữ trang web của mình, điều quan trọng là phải quản lý thông tin của bạn trong cơ sở dữ liệu để bảo vệ chúng. Cho phép kết nối từ xa với máy chủ MySQL nhằm cho phép tất cả người dùng và máy tính được coi là của bạn truy cập dữ liệu của chính mình. Có 3 bước cần thiết để hoàn tất quy trình cho phép kết nối từ xa với MySQL.
=>> Đọc thêm: Cách cài đặt và thiết lập tường lửa UFW trên Debian 11
Bước 1: Định cấu hình máy chủ MySQL để có thể truy cập từ xa
Để thiết lập máy chủ MySQL, hãy kiểm tra trạng thái giao tiếp của MySQL. Nếu máy chủ MySQL và máy khách có thể giao tiếp qua mạng riêng, thì nó chỉ nên nghe trên IP riêng. Nhưng bạn phải đặt máy chủ MySQL có thể lắng nghe tất cả các địa chỉ IP trên máy nếu bạn muốn kết nối với máy chủ qua mạng công cộng.
Máy chủ MySQL của bạn phải được thiết lập để có thể truy cập được từ các hệ thống từ xa. Để thực hiện việc này, bạn cần định cấu hình địa chỉ liên kết công khai (Thay đổi tùy chọn giá trị của nó) trong tệp cấu hình MySQL. Vì vậy, hãy sử dụng trình soạn thảo văn bản yêu thích của bạn để mở tệp /etc/mysql/mysql.cnf
.
$ sudo nano /etc/mysql/mysql.cnf
Giá trị được đặt thành 127.0.0.1
theo mặc định. Vì vậy, hãy tìm những dòng có bind-address
để thay đổi giá trị của nó thành địa chỉ IP mà máy chủ MySQL sẽ lắng nghe. Đặt địa chỉ IP công cộng của máy chủ của bạn thay vì địa chỉ mặc định.
[mysqld]
bind-address = Your IP
Ngoài ra, việc sử dụng ký tự đại diện 0.0.0.0
làm địa chỉ liên kết sẽ giúp bạn khắc phục khi gặp sự cố, nhưng điều này không được khuyến nghị.
[mysqld]
bind-address = 0.0.0.0
Lưu các thay đổi bạn đã thực hiện khi hoàn tất và thoát khỏi tệp. Chạy lệnh sau để khởi động lại dịch vụ MySQL và để các thay đổi có hiệu lực.
- Trên Debian và Ubuntu:
$ sudo systemctl restart mysql
- Trên các bản phân phối dựa trên RedHat như CentOS:
$ sudo systemctl restart mysqld
Bước 2: Cấu hình Firewall để cho phép truy cập từ xa
MySQL chạy trên cổng 3306 theo mặc định. Trong bước này, bạn sẽ biết cách cho phép truy cập từ xa thông qua tường lửa hệ thống của mình để giúp bạn tiến gần hơn đến việc cho phép kết nối từ xa với MySQL. Tùy theo bản phân phối bạn đang sử dụng thì lệnh sẽ khác.
- Trên Ubuntu:
$ sudo ufw allow mysql
Bất kỳ hệ thống nào khác sử dụng tường lửa UFW có thể chạy lệnh trên để cho phép truy cập từ xa thông qua tường lửa.
- Trên Red Hat, CentOS và Fedora:
$ sudo firewall-cmd --zone=public --add-service=mysql --permanent
$ sudo firewall-cmd --reload
Tất cả các hệ thống sử dụng tường lửa có thể chạy lệnh trên để cho phép truy cập từ xa thông qua tường lửa.
Nếu bạn cân nhắc cho phép truy cập từ một địa chỉ IP cụ thể trên một cổng cụ thể, hãy tạo một vùng mới có tên “mysqlzone” như bạn thấy bên dưới:
sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=Your IP
sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
sudo firewall-cmd --reload
iptables
hoạt động trên hầu hết mọi hệ thống. Để cho phép truy cập từ bất kỳ địa chỉ IP nào trên internet vào cổng MySQL, bạn có thể sử dụng lệnh sau khi sử dụng iptables làm tường lửa của mình.
$ sudo iptables -A INPUT -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Cuối cùng, bạn nên kiểm tra xem người dùng từ xa có thể kết nối với máy chủ MySQL hay không. Để xác minh, hãy chạy:
mysql -u user_name -h mysql_server_ip -p
Vì vậy, nếu bạn có thể đăng nhập vào máy chủ MySQL từ xa một cách trơn tru, bạn có thể đảm bảo rằng tất cả đã được thiết lập hoàn chỉnh.
Lưu ý: Lệnh dưới đây có nghĩa là:
user_name
: Tên của người dùng mà bạn đã cấp quyền truy cập.mysql_server_ip
: Địa chỉ IP của máy chủ nơi máy chủ MySQL chạy.
=>> Đọc thêm: Cách liệt kê người dùng Linux thông qua dòng lệnh
Bước 3: Định cấu hình người dùng của bạn để chấp nhận kết nối từ xa
Cuối cùng, bước thứ 3 để cho phép kết nối từ xa với MySQL trong Linux là cấp quyền truy cập cho một người dùng cụ thể từ một máy từ xa. Sau khi cho phép dịch vụ MySQL chấp nhận các kết nối đến và sau đó tường lửa của bạn cho phép chúng đi qua, đã đến lúc cho phép người dùng từ xa truy cập vào cơ sở dữ liệu.
Đầu tiên, hãy chạy lệnh sau để đăng nhập vào máy chủ MySQL bằng tài khoản root của bạn:
$ sudo mysql
Trên một số cấu hình như plugin xác thực MySQL cũ và gốc, hãy sử dụng lệnh bên dưới và nhập mật khẩu gốc của bạn.
$ mysql -u root -p
Tại đây, bạn cần định cấu hình người dùng mà bạn đã tạo để có thể truy cập được từ địa chỉ IP. Một lần nữa, điều chỉnh lệnh bên dưới với cấu hình của riêng bạn.
Ở đây, chúng tôi sử dụng lệnh RENAME USER
:
mysql> RENAME USER 'ZingServer'@'localhost' TO 'ZingServer@'Your IP';
Nhưng nếu bạn chưa tạo người dùng và đây là lần đầu tiên bạn tạo một người dùng, hãy sử dụng lệnh CREATE USER
và lưu ý thay thế tên người dùng, địa chỉ IP và mật khẩu của riêng bạn.
mysql> CREATE USER 'ZingServer'@'Yourr IP' IDENTIFIED BY 'password_here';
Để cho phép người dùng của bạn có thể truy cập được từ bất kỳ địa chỉ IP nào, hãy sử dụng %
trong lệnh của bạn thay vì một địa chỉ IP cụ thể. Cách bạn có thể chỉnh sửa người dùng hiện tại thành người dùng có thể truy cập từ bất kỳ IP nào với lệnh bên dưới.
mysql> RENAME USER 'ZingServer'@'localhost' TO 'ZingServer'@'%';
Ngoài ra, bạn có thể sử dụng lệnh sau để tạo người dùng mới có thể được truy cập từ bất kỳ địa chỉ IP nào.
mysql> CREATE USER 'ZingServer'@'%' IDENTIFIED BY 'password_here';
Bạn đã cấp cho người dùng mong muốn quyền truy cập vào một hoặc nhiều cơ sở dữ liệu để sử dụng thông tin xác thực tài khoản nhằm truy cập cơ sở dữ liệu từ xa. Sau khi bạn thực hiện tất cả các bước của hướng dẫn này, việc cho phép kết nối từ xa với MySQL trong Linux sẽ được hoàn thành chính xác.
Mặc dù MySQL là máy chủ cơ sở dữ liệu mã nguồn mở phổ biến nhất chỉ lắng nghe các kết nối đến trên máy chủ cục bộ, nhưng bạn cần thực hiện các bước được giải thích để có thể cho phép các kết nối từ xa đến máy chủ MySQL của mình. Định cấu hình máy chủ MySQL để nghe trên tất cả hoặc một giao diện cụ thể. Sau khi mở cổng MySQL trong tường lửa của bạn, bạn đã hoàn tất quy trình bằng cách cấp quyền truy cập cho người dùng từ xa đến MySQL trong Linux. Truy cập zingserver.com để biết thêm nhiều thông tin về các gói VPS Linux/Windows và những kiến thức công nghệ bổ ích.