Máy chủ MySQL có thể chấp nhận các kết nối đến từ các địa chỉ IP cụ thể. Theo mặc định, mọi máy chủ MySQL lắng nghe địa chỉ IP cục bộ 127. 0. 0. 1, mọi máy chủ MariaDB chấp nhận tất cả các kết nối [tôi. e. nó nghe 0. 0. 0. 0]. Bạn có thể thiết lập truy cập từ xa
Note! This function is not available for PostgreSQL
Điều hướng đến Cài đặt cụm → Nút cụm → chọn máy chủ có vai trò máy chủ MySQL → nhấp vào Chỉnh sửa. Trên biểu mẫu sẽ mở cho phép truy cập từ xa và chọn một địa chỉ IP
Note! For new installations, remote access will be disabled on a cluster node. By default remote access to all cluster nodes with a MySQL database server role, is enabled [IP address will be set to 0.0.0.0].
Tạo người dùng cơ sở dữ liệu
Quy trình tạo và chỉnh sửa người dùng sẽ được thay đổi theo thời gian. Nếu máy chủ hiện được phép truy cập từ xa, nơi người dùng sẽ được đặt, thì hộp kiểm tương ứng sẽ bị ẩn trên biểu mẫu cấu hình người dùng
Cài đặt tập lệnh APS
Trong ISPmanager Business, quy trình thiết lập tập lệnh APS sẽ được sửa đổi. nếu vai trò chính được gán cho các nút cụm có vai trò khác với vai trò MySQL của nó, bạn sẽ gặp lỗi sau khi cố gắng cài đặt APS, trong trường hợp quyền truy cập từ xa hiện được cho phép
Theo mặc định, máy chủ MySQL chỉ lắng nghe các kết nối từ máy chủ cục bộ, điều đó có nghĩa là nó chỉ có thể được truy cập bởi các ứng dụng chạy trên cùng một máy chủ
Tuy nhiên, trong một số trường hợp, cần phải truy cập máy chủ MySQL từ một vị trí từ xa. Ví dụ: bạn có thể cần kết nối với máy chủ MySQL từ xa từ hệ thống cục bộ của mình hoặc triển khai nhiều máy chủ nơi ứng dụng đang chạy trên một máy khác với máy chủ cơ sở dữ liệu. Một tùy chọn sẽ là truy cập máy chủ MySQL thông qua Đường hầm SSH và một tùy chọn khác là định cấu hình máy chủ MySQL để chấp nhận các kết nối từ xa
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, thì máy chủ MySQL chấp nhận các kết nối trên tất cả các giao diện IPv4 của máy chủ. Nếu bạn đã định 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, chẳng hạn 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
________số 8_______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ó 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
sudo systemctl restart mysqld
Cấ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
sudo mysql
Nế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
mysql -uroot -p
Từ bên trong MySQL shell, sử dụng câu lệnh
sudo systemctl restart mysqld
0 để cấp quyền truy cập cho người dùng từ xaGRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
Ở đâu
1 là tên của cơ sở dữ liệu mà người dùng sẽ kết nối vớisudo systemctl restart mysqld
2 là tên của người dùng MySQLsudo systemctl restart mysqld
3 là địa chỉ IP mà người dùng sẽ kết nối từ đó. Sử dụngsudo systemctl restart mysqld
4 để cho phép người dùng kết nối từ bất kỳ địa chỉ IP nàosudo systemctl restart mysqld
5 là mật khẩu người dùngsudo systemctl restart mysqld
Ví dụ: để cấp quyền truy cập vào cơ sở dữ liệu
sudo systemctl restart mysqld
6 cho người dùng có tên sudo systemctl restart mysqld
7 với mật khẩu sudo systemctl restart mysqld
8 từ một máy khách có IP sudo systemctl restart mysqld
9, bạn sẽ chạyGRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';
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
sudo mysql
0 [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 iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
Cho phép truy cập từ một địa chỉ IP cụ thể
sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW
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ú. Hãy tạo một khu vực mới có tên là
sudo mysql
1bind-address = 0.0.0.0
# skip-networking
3Xác minh các 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 đó
sudo systemctl restart mysqld
2 là tên của người dùng mà bạn đã cấp quyền truy cập và sudo mysql
3 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ộ