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

Suy nghĩ về mối liên kết

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

Đôi khi, bạn cần thực hiện việc này trong quá trình sản xuất, nhưng nếu có thể tránh, bạn nên chọn một giải pháp thay thế an toàn hơn (ví dụ: sử dụng Cloud SQL Proxy). 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 rất tối giản. Ý tưởng là hướng dẫn bạn các bước cơ bản của phần kết nối mà không cần suy nghĩ quá nhiều về chính ứng dụng. Trong một thế giới lý tưởng, việc kết nối với Cloud SQL cũng giống như kết nối với bất kỳ phiên bản nào khác của cơ sở dữ liệu SQL. Vì vậy, bạn có thể lấy những gì mình tạo trong lớp học lập trình này và áp dụng cho mọi ứng dụng sản xuất.

Hướng dẫn này sẽ bao gồm cả hướng dẫn từng bước về cách thực hiện các thao tác trong bảng điều khiển GCP, cũng như các lệnh gcloud tương đương để sử dụng trên CLI hoặc tự động hoá.

Các bước riêng lẻ như sau:

  • 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ự đối với MySQL hoặc SQL Server) và uỷ quyền cho các IP cụ thể được phép kết nối với phiên bản đó

Bạn cần có

  • Một tài khoản GCP mà bạn có quyền bật API và tạo dịch vụ
  • Ứng dụng Postgres được cài đặt để 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 phiên bản Cloud SQL

Cloud SQL là dịch vụ cơ sở dữ liệu quan hệ được quản lý của chúng tôi. Dịch vụ này hỗ trợ MySQL, PostgreSQL và SQL Server. Trong 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 hướng dẫn cho cả 3 cơ sở dữ liệu này đều tương tự nhau.

Trên bảng điều khiển

Chuyển đến trang Cloud SQL rồi nhấp vào nút 241836b315e11bf5.png.

Như tôi đã đề cập, hầu hết nội dung trong lớp học lập trình này đều áp dụng cho mọi loại SQL, nhưng trong lớp học lập trình này, hãy chọn PostgreSQL.

  1. Đặt mã nhận dạng cho phiên bản
  2. Chọn một khu vực gần nơi 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 cơ sở dữ liệu đã chọn, ví dụ: root cho MySQL hoặc postgres cho PostgreSQL)
  4. Di chuyển xuống rồi nhấp vào biểu tượng show configuration options
  5. Mở rộng phần Connectivity
  6. Xác nhận rằng bạn đã đánh dấu vào Public IP và chưa đánh dấu vào Private IP
  7. Nhấp vào nút 883b32ec2734de01.png
  8. Lấy địa chỉ IP của thiết bị mà bạn đang kết nối. Cách dễ nhất là tìm kiếm "Địa chỉ IP của tôi là gì" trên Google. Kết quả tìm kiếm sẽ cho biết địa chỉ IP công khai của bạn.
  1. Nhập thông số IP vào trường mạng, đặt tên cho thông số đó nếu bạn muốn, rồi 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ường, phiên bản này mất vài phút để khởi động.

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

Sử dụng gcloud

Trước tiên, bạn cần lấy địa chỉ IP mà bạn muốn uỷ quyền kết nối với phiên bản Cloud SQL. Cách dễ nhất để thực hiện việc này là mở trình duyệt rồi tìm kiếm cụm từ "Địa chỉ IP của tôi là gì". Kết quả tìm kiếm sẽ cho biết đị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 cần chỉ định một khu vực cho phiên bản Cloud SQL gần nhất với vị trí 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 cấp chỉ có ở một số khu vực. Đối với phần gcloud của hướng dẫn, chúng ta chỉ tạo một phiên bản siêu nhỏ, vì vậy, 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

Lệnh tạo chính thực thể sẽ có dạng như sau (đừng quên thay thế <AUTHORIZED_IP > bằng IP mà bạn nhận được từ trình duyệt hoặc lệnh dig, <REGION > bằng một 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 mất vài phút để hoàn tất.

Sau khi hoàn tất, đầu ra trên CLI sẽ có PRIMARY_ADDRESS của thực thể được liệt kê. Sao chép mã đó để chuyển sang bước tiếp theo.

3. Kiểm tra kết nối và kết thúc

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

psql "host=<IP copied from previous step> port=5432 sslmode=disable user=postgres"

Sau đó, hãy chỉ định mật khẩu mặc định của người dùng 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 thứ diễn ra đúng quy trình, bạn sẽ thấy lời nhắc Postgres và có thể chạy các lệnh đối với 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