Cách cho phép kết nối từ xa với MySQL


Nếu bạn đang làm việc với Cơ sở dữ liệu MySQL, thì bạn đã nhận thức được những thách thức bạn phải đối mặt trong việc giữ an toàn cho cơ sở dữ liệu của mình. Từ những nỗ lực hack cơ sở dữ liệu bằng cách sử dụng SQL injection đến các cuộc tấn công brute force, thật khó để giữ an toàn cho dữ liệu của bạn, đặc biệt nếu bạn đang làm việc với cơ sở dữ liệu từ xa.

Có nhiều cách để định cấu hình máy chủ SQL để cho phép kết nối từ xa , nhưng bạn cần phải cẩn thận, vì việc cho phép kết nối từ xa trên máy chủ MySQL có thể khiến cơ sở dữ liệu của bạn trở thành mục tiêu dễ dàng cho tin tặc. Nếu bạn muốn cho phép các kết nối từ xa, an toàn với cơ sở dữ liệu MySQL, đây là những điều bạn cần biết.

Mục lục

    Trước bạn Bắt đầu

    Trước khi bạn thực hiện bất kỳ thay đổi nào đối với cơ sở dữ liệu MySQL của mình, điều quan trọng là bạn phải sao lưu cơ sở dữ liệu của mình, đặc biệt nếu bạn đang làm việc trên máy chủ sản xuất (máy chủ đang sử dụng tích cực). Bất kỳ thay đổi nào bạn thực hiện đối với cơ sở dữ liệu của mình hoặc máy chủ lưu trữ nó, đều có thể dẫn đến mất dữ liệu nghiêm trọng nếu xảy ra sự cố.

    Bạn cũng có thể nhận thấy rằng những thay đổi đối với kết nối của máy chủ có thể khiến bạn không thể truy cập sau đó. Nếu điều này xảy ra, bạn có thể cần tham khảo ý kiến ​​của quản trị viên máy chủ để được hỗ trợ thêm. Một ý tưởng hay là thử bất kỳ thay đổi nào trên máy chủ MySQL chạy cục bộ để kiểm tra xem các thay đổi của bạn có hoạt động hay không trước khi thử từ xa.

    Có khả năng là nếu bạn đang thực hiện các thay đổi đối với một máy chủ từ xa, bạn ' Sẽ cần một cách an toàn để kết nối và thực hiện các thay đổi. SSH (Secure Shell)thường là cách tốt nhất để thực hiện việc này, vì nó cho phép bạn kết nối với máy chủ từ xa của mình. Bạn cũng có thể sử dụng SSH để kết nối với các máy chủ trên mạng cục bộ của mình, chẳng hạn như được lưu trữ trên Raspberry Pi.

    Hướng dẫn này sẽ hướng dẫn bạn qua các bước để định cấu hình MySQL để cho phép kết nối từ xa, nhưng trước tiên bạn cần đảm bảo bạn có quyền truy cập trực tiếp hoặc từ xa vào máy chủ lưu trữ máy chủ MySQL của bạn.

    Giả sử bạn không có quyền truy cập từ xa vào máy chủ của mình thông qua SSH (ví dụ). Trong trường hợp đó, bạn sẽ không thể định cấu hình cơ sở dữ liệu MySQL của mình để cho phép các kết nối từ xa trực tiếp trừ khi tài khoản mySQL gốc của bạn đã cho phép các kết nối từ xa. Vì vậy, bạn sẽ cần thiết lập kết nối này trước khi có thể tiếp tục.

    Chỉnh sửa tệp cấu hình MySQL của bạn

    Bước đầu tiên trong việc định cấu hình MySQL để cho phép điều khiển từ xa kết nối là để chỉnh sửa tệp cấu hình MySQL của bạn. Đến giai đoạn này, hướng dẫn này sẽ giả sử bạn đã kết nối với máy chủ, PC hoặc Mac đang lưu trữ cơ sở dữ liệu mySQL của bạn từ xa và có quyền truy cập bảng điều khiển.

    Ngoài ra, bạn có thể định cấu hình máy chủ MySQL cục bộ bằng cách sử dụng thiết bị đầu cuối mở trên Mac hoặc Linux hoặc trình soạn thảo văn bản trên Windows.

    1. Để bắt đầu, hãy sử dụng trình chỉnh sửa văn bản trên bảng điều khiển ưa thích của bạn để chỉnh sửa tệp cơ sở dữ liệu MySQL của bạn. Trên Linux, nhập sudo nano /etc/mysql/mysql.conf.d/mysqld.cnfvào cửa sổ đầu cuối hoặc SSH để chỉnh sửa tệp này bằng trình chỉnh sửa nano(giả sử cơ sở dữ liệu MySQL của bạn ở vị trí mặc định) .
      1. Nếu bạn đang chạy Windows, hãy mở File Explorer và truy cập thư mục chứa cài đặt MySQL của bạn (ví dụ: C: / Program Files / MySQL / MySQL Server 8.0). Mở tệp my.inibằng trình chỉnh sửa văn bản mặc định của bạn (ví dụ: Notepad) bằng cách nhấp đúp vào mục nhập. Nếu nó không có ở đó, tạo tệp trước.
        1. Trên Mac, hãy mở một cửa sổ dòng lệnh và nhập sudo nano /usr/local/etc/my.cnf. Đây là tệp cấu hình mặc định cho MySQL nếu bạn đã cài đặt MySQL sử dụng homebrew.
        2. Các vị trí được đề cập ở trên là các vị trí mặc định cho các tệp cấu hình MySQL. Nếu các lệnh này không hoạt động, bạn sẽ cần tìm kiếm các tệp có liên quan (my.cnf, mysqld.cnfhoặc my.ini) theo cách thủ công để định vị đường dẫn tệp có liên quan.

          Đặt Dải IP Địa chỉ Liên kết An toàn

          1. Khi bạn 'đã mở tệp cấu hình MySQL cho máy chủ của bạn, hãy sử dụng phím mũi tên trên bàn phím của bạn để truy cập phần địa chỉ ràng buộccủa tệp. Dải IP này giới hạn các kết nối đến cơ sở dữ liệu của bạn, thường được đặt thành chỉ cho phép các kết nối từ máy cục bộ hoặc máy chủ sử dụng 127.0.0.1
          2. 18
            1. Nếu bạn muốn định cấu hình cơ sở dữ liệu MySQL của mình để cho phép kết nối từ các thiết bị sử dụng kết nối internet hiện tại của bạn, tìm địa chỉ IP công cộng của bạn trước tiên, sau đó thay thế 127.0.0.1với địa chỉ IP đó. Ngoài ra, hãy thay thế nó bằng một địa chỉ IP cho thiết bị hoặc máy chủ mà bạn muốn cho phép kết nối.
              1. Trong một số trường hợp , bạn có thể muốn cho phép tất cảkết nối từ xa đến cơ sở dữ liệu MySQL. Điều này mang lại rủi ro cao nhấtvà không được sử dụng trên máy chủ sản xuất. Tuy nhiên, nếu bạn muốn cho phép điều này, hãy thay thế 127.0.0.1bằng 0.0.0.0
              2. 20
                1. Ghi lại giá trị cổngtrong phần Cài đặt cơ bản. Điều này sẽ được yêu cầu trong phần tiếp theo. Nếu nó không hiển thị, giá trị mặc định sẽ được sử dụng, đó là cổng 3306. Bạn có thể thêm cổng của riêng mình bằng cách nhập port = xxxxtrên một dòng mới, thay thế xxxxbằng một giá trị cổng phù hợp.
                  1. Khi bạn đã định cấu hình địa chỉ ràng buộctrong tệp cấu hình MySQL của mình, hãy lưu tệp. Nếu bạn đang sử dụng Linux, hãy chọn Ctrl + OCtrl + Xđể thực hiện việc này. Trên Mac, chọn Command + OCommand + X. Người dùng Windows có thể lưu bằng cách chọn Tệp>Lưu.
                    1. Tiếp theo, người dùng Linux và Mac có thể khởi động lại MySQL bằng cách nhập mysql.server stop && mysql.server starthoặc mysql.server restart. Bạn có thể cần nâng cấp lệnh sử dụng sudo (ví dụ: sudo mysql.server khởi động lại) và sử dụng đường dẫn thích hợp đến tệp mysql.server (ví dụ: / usr /local/bin/mysql.server).
                    1. Nếu lệnh trên không hoạt động, hãy thử khởi động lại dịch vụ sudo mysqlinstead.
                      1. Để khởi động lại MySQL trên Windows, hãy mở cửa sổ PowerShell mới bằng cách nhấp chuột phải vào trình đơn Bắt đầu và chọn Windows PowerShell (Quản trị). Trong cửa sổ PowerShell, nhập net stop mysql80theo sau là net start mysql80, thay thế mysql80bằng tên dịch vụ chính xác trên PC của bạn.
                      2. Nếu bạn không chắc tên dịch vụ chính xác trên Windows, hãy nhập net startđể tìm. Nếu bạn không thể tải lại cấu hình của mình, hãy khởi động lại máy chủ và tải lại MySQL theo cách thủ công (nếu cần).

                        Định cấu hình tường lửa của bạn

                        Ở giai đoạn này, cơ sở dữ liệu MySQL của bạn sẽ cho phép các kết nối từ xa từ các thiết bị sử dụng địa chỉ IP bạn đặt làm giá trị địa chỉ liên kếttrong tệp cấu hình MySQL của bạn (hoặc từ tất cả các thiết bị nếu bạn đặt giá trị này thành 0.0.0.0thay vào đó). Tuy nhiên, các kết nối vẫn sẽ bị thiết bị hoặc tường lửa mạngcủa bạn chặn.

                        Hầu hết các máy chủ và PC sử dụng tường lửa để chặn kết nối trừ khi được cấp quyền truy cập vào một cổng cụ thể. Các bước để định cấu hình điều này sẽ khác nhau, tùy thuộc vào việc bạn đang chạy MySQL trên Windows hay Linux. Tường lửa của Mac bị tắt theo mặc định, vì vậy bạn không cần phải hoàn thành bất kỳ bước bổ sung nào tại đây.

                        Định cấu hình tường lửa Linux

                        Nhiều máy chủ Linux sử dụng iptableslàm tiện ích tường lửa mặc định. Bạn có thể định cấu hình nó bằng cách làm theo các bước bên dưới.

                        1. Mở một thiết bị đầu cuối hoặc kết nối SSH và nhập sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT. Thay thế XXXXbằng địa chỉ IP cho thiết bị bạn muốn cho phép kết nối MySQL từvà thay thế YYYYbằng giá trị cổng phù hợp từ cấu hình MySQL của bạn tệp (ví dụ: 3306).
                          1. Thao tác này sẽ tạm thời định cấu hình tường lửa. Nếu bạn đang sử dụng máy chủ Linux dựa trên Debian hoặc Ubuntu, hãy thực hiện thay đổi này vĩnh viễn bằng cách nhập sudo netfilter-lưu liên tụcsudo netfilter-tải lại liên tụcvào thiết bị đầu cuối hoặc SSH window.
                          2. Nếu iptables không phải là công cụ tường lửa mặc định cho bản phân phối Linux của bạn, bạn sẽ cần tham khảo hướng dẫn sử dụng bản phân phối của mình để biết thêm thông tin. Nếu một số gói nhất định (chẳng hạn như netfilter-dai dẳng) không khả dụng, hãy sử dụng công cụ lưu trữ phần mềm của nhà phân phối của bạn để cài đặt nó (ví dụ: sudo apt install netfilter-dai dẳng).

                            Định cấu hình Tường lửa của Windows

                            Nếu bạn đang sử dụng PC hoặc máy chủ Windows để lưu trữ cơ sở dữ liệu của mình, bạn có thể định cấu hình tường lửa của mình bằng các bước sau:

                            1. Nhấp chuột phải vào trình đơn Bắt đầu và chọn Chạy.
                              1. Trong hộp Run, nhập wf.mscvà chọn OK.
                                1. Trong cửa sổ Bộ bảo vệ Windows, chọn Quy tắc gửi đến >Quy tắc mới.
                                  1. Trong Trình hướng dẫn quy tắc đến mới
                                  2. Tại trình đơn tiếp theo, chọn TCPtừ các tùy chọn, nhập 3306(hoặc bất kỳ giá trị cổng nào được liệt kê trong tệp cấu hình MySQL của bạn), sau đó chọn Tiếp theo
                                    • at the menu Action, hãy để tùy chọn mặc định thành Cho phép kết nốiđược bật, sau đó chọn Tiếp theo.
                                        1. Xác nhận rằng bạn muốn quy tắc áp dụng cho tất cả các loại mạng, sau đó chọn Tiếp theo.
                                          1. Nhập tên mô tả cho quy tắc (ví dụ: MySQL) vào cổng được cung cấp , sau đó chọn Hoàn tấtđể thêm nó vào danh sách các quy tắc tường lửa của bạn.
                                          2. Nếu bạn gặp sự cố khi kết nối, hãy lặp lại các bước ở trên , đảm bảo tạo quy tắc gửi đimới trong cài đặt tường lửa của bạn bằng cách sử dụng các chi tiết tương tự (cổng 3306, v.v.). Bạn cũng có thể cần phải định cấu hình bộ định tuyến mạng cục bộ của mình thành mở các cổng bị chặn cần thiết để cho phép các kết nối đến và đi đến cơ sở dữ liệu của bạn.

                                            Kết nối với máy chủ từ xa bằng MySQL

                                            Sau khi định cấu hình cơ sở dữ liệu MySQL của bạn để cho phép kết nối từ xa, bạn cần thực sự thiết lập kết nối với nó. Bạn có thể thực hiện việc này bằng cách sử dụng lệnh mysql(mysql.exetrên Windows) từ một thiết bị đầu cuối hoặc cửa sổ PowerShell.

                                            Nếu bạn đang chạy Windows, bạn sẽ cần đảm bảo rằng MySQL được cài đặt cục bộ trước khi bắt đầu. Người dùng Mac có thể cài đặt MySQL sử dụng homebrew từ terminal (brew install mysql), trong khi người dùng Linux có thể sử dụng kho ứng dụng cục bộ của họ (ví dụ: sudo apt install mysql) để cài đặt các gói cần thiết.

                                            Kết nối với MySQL trên Linux hoặc Mac

                                            1. Để kết nối với máy chủ MySQL từ xa của bạn trên Mac hoặc Linux, mở một cửa sổ đầu cuối mới và nhập tên người dùng mysql -u -h XXXX: XXXX -p. Thay thế XXXX: XXXXbằng địa chỉ IP máy chủ từ xa và số cổng (ví dụ: 100.200.100.200:3306) và tên người dùngbằng tên người dùng MySQL của bạn.
                                              1. Khi được nhắc, hãy xác nhận mật khẩu của bạn. Nếu kết nối thành công, thông báo thành công sẽ xuất hiện trong thiết bị đầu cuối.
                                              2. Đang kết nối với MySQL trên Windows

                                                1. Để kết nối vào máy chủ MySQL từ xa trên Windows, mở cửa sổ PowerShell mới bằng cách nhấp chuột phải vào menu Bắt đầu và chọn Windows PowerShell (Quản trị).
                                                2. 37
                                                3. Trong cửa sổ PowerShell mới, nhập cd “C: \ Program Files \ MySQL \ MySQL Workbench 8.0 \” để vào đúng thư mục, thay thế thư mục này với thư mục cài đặt chính xác trên PC của bạn. Ví dụ: nếu phiên bản MySQL của bạn là 8.0.1, hãy sử dụng thư mục MySQL Workbench 8.0.1để thay thế.
                                                  1. Từ đó, nhập . \ mysql.exe -u tên người dùng -h X.X.X.X: XXXX -p. Thay thế XXXX: XXXXbằng địa chỉ IP máy chủ từ xa và số cổng (ví dụ: 100.200.100.200:3306) và tên người dùngbằng tên người dùng MySQL đó cho phép truy cập từ xa (chẳng hạn như root). Làm theo bất kỳ hướng dẫn bổ sung nào trên màn hình.
                                                  2. Cung cấp mật khẩu của bạn, khi được nhắc, để hoàn tất quá trình đăng nhập và truy cập cơ sở dữ liệu MySQL của bạn từ xa.
                                                  3. Nếu cách này không hiệu quả, hãy kết nối với máy chủ hoặc PC lưu trữ máy chủ MySQL của bạn bằng SSH (hoặc truy cập trực tiếp) bằng các bước sau và sử dụng đối số -h localhost. Sau đó, bạn có thể tạo tài khoản người dùng phù hợp bằng cách làm theo các bước bên dưới.

                                                    Cho phép người dùng từ xa truy cập vào cơ sở dữ liệu MySQL

                                                    Đến thời điểm này, bạn nên có thể kết nối từ xa với máy chủ MySQL của bạn bằng tài khoản người dùng gốc của máy chủ hoặc tài khoản người dùng khác có đặc quyền nâng cao. Vì cấp độ truy cập này không an toàn, bạn có thể muốn tạo một tài khoản hạn chế hơn để truy cập cơ sở dữ liệu MySQL của mình.

                                                    Tài khoản này sẽ có quyền truy cập hạn chế vào máy chủ MySQL của bạn, chỉ cho phép nó tương tác với các cơ sở dữ liệu đã chọn. Nó sẽ không thể thực hiện các thay đổi nghiêm trọng hơn, chẳng hạn như truy cập dữ liệu cơ sở dữ liệu khác, tạo tài khoản người dùng mới, v.v.

                                                    Bạn cần có khả năng đăng nhập vào máy chủ MySQL của mình từ xa. Nếu bạn không thể sử dụng tài khoản gốc của mình từ xa, bạn sẽ cần truy cập trình bao của máy chủ bằng lệnh mysqlthông qua kết nối SSH từ xa hoặc bằng cách truy cập trực tiếp vào PC hoặc máy chủ lưu trữ máy chủ.

                                                    1. Trong trình bao MySQL từ xa của bạn (sử dụng công cụ mysql), nhập TẠO NGƯỜI DÙNG “tên người dùng” @ ”xxxx” ĐƯỢC XÁC NHẬN BẰNG “mật khẩu”;và chọn Enter. Thay thế tên người dùngbằng tên người dùng bạn muốn tạo, xxxxbằng địa chỉ IP bạn muốn kết nối và mật khẩubằng mật khẩu phù hợp.
                                                      1. Bạn sẽ cần cấp cho tài khoản mới của mình các quyền cần thiết. Để thực hiện việc này, hãy nhập CẤP TẤT CẢ TRÊN tên cơ sở dữ liệu. * ĐẾN tên người dùng @ ”x.x.x.x”;và thay thế tên cơ sở dữ liệu, tên người dùngx.x.x.xbằng các chi tiết chính xác. Nếu bạn muốn, hãy thay thế tên cơ sở dữ liệubằng *để cấp cho nó quyền truy cập vào tất cả các cơ sở dữ liệu.
                                                      2. Khi được cấp quyền truy cập, hãy sử dụng các bước trong phần trên để kết nối từ xa với máy chủ của bạn bằng tài khoản mới của bạn (ví dụ: tên người dùng mysql -u -h XXXX: XXXX -p).

                                                        Bảo mật dữ liệu cơ sở dữ liệu của bạn

                                                        Cho dù bạn đang làm việc với MySQL hay kiểu SQL khác cơ sở dữ liệu, điều quan trọng là phải giữ an toàn cho các kết nối của bạn để duy trì bảo mật dữ liệu của bạn. Một cách tốt để làm điều này là tạo khóa SSH để truy cập từ xa đến máy chủ của bạn, thay vì dựa vào mật khẩu lỗi thời (và dễ đoán).

                                                        Nếu lo lắng về việc mất dữ liệu, bạn có thể dễ dàng sao lưu cơ sở dữ liệu của bạn trực tuyến. Hầu hết các cơ sở dữ liệu được chạy bằng máy chủ Linux — bạn có thể tự động hóa sao lưu tệp Linux một cách dễ dàng. Nếu đang chạy MySQL trên Windows, bạn có thể thiết lập một hệ thống sao lưu tự động cho Windows tương tự, cho phép bạn khôi phục dữ liệu của mình trong trường hợp khẩn cấp.

                                                        bài viết liên quan:


                                                        9.08.2021