Kết nối với Cloud SQL: IP công khai và mạng được uỷ quyền

1. Giới thiệu

Lần cập nhật gần đây nhất: ngày 4 tháng 5 năm 2020

Cân nhắc đến mối liên kết

Có nhiều loại ứng dụng và khung. Trong lớp học lập trình này, chúng ta sẽ tìm hiểu về cách kết nối với Cloud SQL từ bất cứ đâu. Bạn có thể bật tính năng kết nối bằng cách uỷ quyền cho các IP được phép kết nối một cách rõ ràng. Đây được cho là phương án có mức độ an toàn thấp nhất để kết nối với cơ sở dữ liệu Cloud SQL, nhưng cũng là phương án dễ thiết lập và bắt đầu sử dụng nhất.

Đôi khi, bạn cần phải thực hiện việc này trong phiên bản chính thức, nhưng nếu có thể tránh làm như vậy thì bạn nên chọn một giải pháp thay thế an toàn hơn (ví dụ: sử dụng Proxy Cloud SQL). Chế độ thiết lập này phù hợp nhất cho việc phát triển và kiểm thử.

Sản phẩm bạn sẽ tạo ra

Lớp học lập trình này có thiết kế rất tối giản. Mục đích của việc này là hướng dẫn bạn từng chi tiết nhỏ của mối kết nối mà không phải suy nghĩ quá nhiều về ứng dụng. Trong một thế giới hoàn hảo, việc kết nối với Cloud SQL cũng giống như việc kết nối với mọi thực thể khác của cơ sở dữ liệu SQL. Nhờ vậy, bạn sẽ có thể lấy những gì đã tạo trong lớp học lập trình này và áp dụng cho mọi ứng dụng chính thức.

Nội dung hướng dẫn sẽ bao gồm thông tin hướng dẫn từng bước cách thực hiện trong bảng điều khiển dành cho GCP cũng như các lệnh gcloud tương đương để sử dụng trên CLI hoặc quy trình tự động hoá.

Các bước riêng lẻ bao gồm:

  • Tạo một phiên bản Cloud SQL (hướng dẫn này sử dụng Postgres, nhưng hoạt động tương tự như MySQL hoặc SQL Server) và cho phép các IP cụ thể được phép kết nối với phiên bản đó

Bạn cần có

  • Tài khoản GCP mà bạn có quyền bật các API và tạo dịch vụ trên đó
  • Đã cài đặt ứng dụng Postgres để xác minh khả năng kết nối (hoặc ứng dụng MySQL nếu bạn muốn sử dụng MySQL thay vì Postgres)

2. Tạo thực thể Cloud SQL

Cloud SQL là cơ sở dữ liệu quan hệ được quản lý của chúng tôi. Công cụ này hỗ trợ MySQL, PostgreSQL và SQL Server. Đối với lớp học lập trình này, chúng ta sẽ tạo một cơ sở dữ liệu Postgres, nhưng các hướng dẫn thì tương tự như cho cả 3 cơ sở dữ liệu.

Trên Play Console

Truy cập vào trang Cloud SQL rồi nhấp vào nút 241836b315e11bf5.pngS.

Như tôi đã đề cập, hầu hết lớp học lập trình này đều dùng chung cho mọi phiên bản SQL, nhưng đối với lớp học lập trình này, hãy chọn PostgreSQL.

  1. Cung cấp mã nhận dạng cho thực thể của bạn
  2. Chọn một khu vực gần với bất cứ nơi nào bạn đang ở
  3. Nhập mật khẩu cho người dùng mặc định (tên người dùng sẽ là mặc định cho DB đã chọn, ví dụ: root cho MySQL hoặc postgres cho PostgreSQL)
  4. Di chuyển xuống rồi nhấp vào show configuration options
  5. Mở rộng phần Connectivity
  6. Xác nhận đã chọn Public IP và bỏ đánh dấu Private IP
  7. Nhấp vào nút 883b32ec2734de01.pngS
  8. Lấy địa chỉ IP từ nơi bạn đang kết nối. Dễ nhất là tìm kiếm "IP của tôi là gì" trên Google và kết quả tìm kiếm có chứa IP công khai của bạn.
  1. Nhập thông số kỹ thuật IP vào trường mạng, đặt tên cho trường đó nếu bạn muốn và nhấp vào Xong trong hộp New Network.
  2. Di chuyển xuống rồi nhấp vào Tạo

Thường thì quá trình này mất vài phút để bắt đầu.

Sau khi tạo xong phiên bản, hãy nhấp vào phiên bản đó trong danh sách và trên trang tổng quan, bên dưới tiêu đề Connect to this instance, hãy sao chép public IP address được liệt kê ở đó. Lớp này sẽ không xuất hiện ở đó cho đến khi thực thể được tạo đầy đủ mặc dù bạn có thể nhấp vào phần thông tin chi tiết trước khi thực thể được tạo đầy đủ.

Sử dụng gcloud

Trước tiên, bạn cần lấy địa chỉ IP mà bạn muốn cho phép để kết nối với phiên bản Cloud SQL. Cách dễ nhất để làm việc này là mở một trình duyệt và tìm kiếm "IP của tôi là gì?" và kết quả tìm kiếm sẽ có địa chỉ IP công khai của bạn. Tuy nhiên, nếu không thể mở trình duyệt từ nơi bạn đang thực hiện việc này, bạn có thể sử dụng một tiện ích như dig.

dig @resolver1.opendns.com ANY myip.opendns.com +short -4

Bạn sẽ cần chỉ định một khu vực cho phiên bản Cloud SQL gần nhất với vị trí hiện tại của bạn. Bạn có thể xem danh sách các khu vực bằng cách chạy:

gcloud sql tiers list

Mỗi bậc chỉ có sẵn ở một số khu vực nhất định. Trong phần hướng dẫn về gcloud, chúng ta chỉ tạo một phiên bản vi mô để bạn có thể tìm thấy các khu vực cho cấp này bằng cách chạy cụ thể (miễn là bạn đã cài đặt grep):

gcloud sql tiers list | grep db-f1-micro

Sau đó, lệnh để tạo thực thể đó sẽ có dạng (đừng quên thay thế <AUTHORIZED_IP> bằng IP bạn nhận được từ trình duyệt hoặc đào và <REGION> bằng IP ở gần bạn và mật khẩu cho người dùng gốc 'postgres'):

gcloud sql instances create sql-codelab-00 --database-version=POSTGRES_11 --tier=db-f1-micro --region=<REGION> --authorized-networks=<AUTHORIZED_IP> --root-password=<PASSWORD>

Quá trình này cần vài phút để hoàn tất.

Sau khi hoàn tất, kết quả trên CLI sẽ có PRIMARY_ADDRESS của thực thể được liệt kê. Hãy sao chép dữ liệu đó cho bước tiếp theo.

3. Kiểm tra kết nối và tổng kết

Để xác minh rằng thực thể máy ảo đã được thiết lập đúng cách, bạn có thể chạy trên dòng lệnh trên máy có địa chỉ IP mà bạn đã nhập:

psql "host=<IP đã sao chép từ bước trước> cổng=5432 sslmode=disable user=postgres"

Sau đó, hãy chỉ định mật khẩu của người dùng mặc định mà bạn thiết lập khi tạo phiên bản Cloud SQL.

Xin chúc mừng! Nếu mọi việc đều diễn ra suôn sẻ, bạn sẽ thấy lời nhắc của Postgres và có thể chạy các lệnh dựa trên cơ sở dữ liệu của mình.

Tiếp theo là gì?

Hãy xem một số lớp học lập trình này...

Tài liệu tham khảo