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.
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.
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
- 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).
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.
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:
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
Đang kết nối với MySQL trên Windows
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ủ.
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.