Bài viết này hướng dẫn các bước cần thiết để cho phép kết nối từ xa đến máy chủ MySQL. Các hướng dẫn tương tự áp dụng cho MariaDB
Cấu hình máy chủ MySQL #
Bước đầu tiên là đặt máy chủ MySQL lắng nghe trên một địa chỉ IP cụ thể hoặc tất cả các địa chỉ IP trên máy
Nếu máy chủ MySQL và máy khách có thể giao tiếp qua mạng riêng, thì tùy chọn tốt nhất là đặt máy chủ MySQL chỉ nghe trên IP riêng
Mặt khác, nếu bạn muốn kết nối với máy chủ qua mạng công cộng, hãy đặt máy chủ MySQL lắng nghe trên tất cả các địa chỉ IP trên máy. Để làm như vậy, bạn cần chỉnh sửa tệp cấu hình MySQL và thêm hoặc thay đổi giá trị của tùy chọn
bind-address = 0.0.0.0
# skip-networking
7. Bạn có thể đặt một địa chỉ IP và dải IP. Nếu địa chỉ là bind-address = 0.0.0.0
# skip-networking
8, máy chủ MySQL chấp nhận kết nối trên tất cả các giao diện IPv4 của máy chủ. Nếu bạn đã cấu hình IPv6 trên hệ thống của mình, thì thay vì bind-address = 0.0.0.0
# skip-networking
8, hãy sử dụng sudo systemctl restart mysql
0Vị trí của tệp cấu hình MySQL khác nhau tùy thuộc vào bản phân phối. Trong Ubuntu và Debian, tệp được đặt tại
sudo systemctl restart mysql
1, trong khi ở các bản phân phối dựa trên Red Hat như CentOS, tệp được đặt tại sudo systemctl restart mysql
2Mở tệp bằng trình soạn thảo văn bản của bạn
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Tìm kiếm một dòng bắt đầu bằng
bind-address = 0.0.0.0
# skip-networking
7 và đặt giá trị của nó thành địa chỉ IP mà máy chủ MySQL sẽ lắng ngheTheo mặc định, giá trị được đặt thành
sudo systemctl restart mysql
4 [chỉ nghe trong máy chủ cục bộ]Trong ví dụ này, chúng tôi sẽ đặt máy chủ MySQL lắng nghe trên tất cả các giao diện IPv4 bằng cách thay đổi giá trị thành
bind-address = 0.0.0.0
# skip-networking
8mysqld. cnf
bind-address = 0.0.0.0
# skip-networking
Nếu có một dòng chứa
sudo systemctl restart mysql
6, hãy xóa nó hoặc nhận xét nó bằng cách thêm sudo systemctl restart mysql
7 vào đầu dòngTrong Mysql 8. 0 trở lên, chỉ thị
bind-address = 0.0.0.0
# skip-networking
7 có thể không có mặt. Trong trường hợp này, hãy thêm nó vào dưới phần sudo systemctl restart mysql
9Sau khi hoàn tất, hãy khởi động lại dịch vụ MySQL để thay đổi có hiệu lực. Chỉ root hoặc người dùng có đặc quyền sudo mới có thể khởi động lại dịch vụ
Để khởi động lại dịch vụ MySQL trên Debian hoặc Ubuntu, hãy nhập
sudo systemctl restart mysql
Trên các bản phân phối dựa trên RedHat như CentOS để khởi động lại dịch vụ đang chạy
bind-address = 0.0.0.0
# skip-networking
6Cấp quyền truy cập cho người dùng từ máy từ xa #
Bước tiếp theo là cho phép người dùng từ xa truy cập cơ sở dữ liệu
Đăng nhập vào máy chủ MySQL với tư cách là người dùng root bằng cách nhập
bind-address = 0.0.0.0
# skip-networking
7Nếu bạn đang sử dụng plugin xác thực MySQL gốc, cũ để đăng nhập với quyền root, hãy chạy lệnh bên dưới và nhập mật khẩu khi được nhắc
bind-address = 0.0.0.0
# skip-networking
8Từ bên trong MySQL shell, sử dụng câu lệnh
bind-address = 0.0.0.0
# skip-networking
60 để cấp quyền truy cập cho người dùng từ xabind-address = 0.0.0.0
# skip-networking
0Ở đâu
61 là tên của cơ sở dữ liệu mà người dùng sẽ kết nối vớibind-address = 0.0.0.0 # skip-networking
62 là tên của người dùng MySQLbind-address = 0.0.0.0 # skip-networking
63 là địa chỉ IP mà người dùng sẽ kết nối. Sử dụngbind-address = 0.0.0.0 # skip-networking
64 để cho phép người dùng kết nối từ bất kỳ địa chỉ IP nàobind-address = 0.0.0.0 # skip-networking
65 là mật khẩu người dùngbind-address = 0.0.0.0 # skip-networking
Ví dụ: để cấp quyền truy cập vào cơ sở dữ liệu
bind-address = 0.0.0.0
# skip-networking
66 cho người dùng có tên bind-address = 0.0.0.0
# skip-networking
67 với mật khẩu bind-address = 0.0.0.0
# skip-networking
68 từ máy khách có IP bind-address = 0.0.0.0
# skip-networking
69, bạn sẽ chạysudo systemctl restart mysql
0Định cấu hình Tường lửa #
Bước cuối cùng là định cấu hình tường lửa của bạn để cho phép lưu lượng truy cập trên cổng
bind-address = 0.0.0.0
# skip-networking
70 [cổng mặc định của MySQL] từ các máy từ xaIptables #
Nếu bạn đang sử dụng iptables làm tường lửa của mình, lệnh bên dưới sẽ cho phép truy cập từ bất kỳ địa chỉ IP nào trên Internet vào cổng MySQL. Điều này rất không an toàn
sudo systemctl restart mysql
2Cho phép truy cập từ một địa chỉ IP cụ thể
sudo systemctl restart mysql
3UFW #
UFW là công cụ tường lửa mặc định trong Ubuntu. Để cho phép truy cập từ bất kỳ địa chỉ IP nào trên Internet [rất không an toàn], hãy chạy
bind-address = 0.0.0.0
# skip-networking
0Cho phép truy cập từ một địa chỉ IP cụ thể
bind-address = 0.0.0.0
# skip-networking
1Tường lửaD #
FirewallD là công cụ quản lý tường lửa mặc định trong CentOS. Để cho phép truy cập từ bất kỳ địa chỉ IP nào trên Internet [rất không an toàn], hãy nhập
bind-address = 0.0.0.0
# skip-networking
2Để cho phép truy cập từ một địa chỉ IP cụ thể trên một cổng cụ thể, bạn có thể tạo vùng FirewallD mới hoặc sử dụng quy tắc phong phú. Tạo một khu vực mới có tên là
bind-address = 0.0.0.0
# skip-networking
71bind-address = 0.0.0.0
# skip-networking
3Xác minh Thay đổi #
Để xác minh rằng người dùng từ xa có thể kết nối với máy chủ MySQL, hãy chạy lệnh sau
bind-address = 0.0.0.0
# skip-networking
4Trong đó
bind-address = 0.0.0.0
# skip-networking
62 là tên của người dùng mà bạn đã cấp quyền truy cập và bind-address = 0.0.0.0
# skip-networking
73 là địa chỉ IP của máy chủ nơi máy chủ MySQL chạyNếu mọi thứ được thiết lập chính xác, bạn sẽ có thể đăng nhập vào máy chủ MySQL từ xa
Nếu bạn gặp lỗi như bên dưới, thì cổng 3306 không mở hoặc máy chủ MySQL không nghe địa chỉ IP
bind-address = 0.0.0.0
# skip-networking
5Lỗi bên dưới cho biết người dùng mà bạn đang cố đăng nhập không có quyền truy cập máy chủ MySQL từ xa
bind-address = 0.0.0.0
# skip-networking
6Phần kết luận #
MySQL, máy chủ cơ sở dữ liệu nguồn mở phổ biến nhất theo mặc định, chỉ lắng nghe các kết nối đến trên máy chủ cục bộ