Tôi đã thiết lập phiên bản AWS RDS và phiên bản AWS EC2 và tôi tin rằng tôi đã thiết lập nhóm bảo mật để cho phép cả ip nội bộ và ip công khai của phiên bản EC2 truy cập phiên bản RDS. nếu tôi chuyển đến phiên bản EC2 thông qua ứng dụng khách ssh và nhập lệnh:

mysql -u xxx -p -h AWS_RDS_endpoint.com

Kết nối thành công. Tôi đã tạo tệp php thử nghiệm có tên là index.php trong gốc web phiên bản EC2, mã như thế này:

<?php
  $servername = "aws_rds_endpoint.com";
  $username = "username";
  $password = "password";

  // Create connection
  $conn = new mysqli($servername, $username, $password);

  // Check connection
  if ($conn->connect_error) {
      die("Connection failed: " . $conn->connect_error);
  } 
  echo "Connected successfully";
?>

nếu tôi nhập "php index.php" tại thiết bị đầu cuối ssh, nó sẽ hiển thị "Đã kết nối thành công", nhưng nếu trên trình duyệt web, tôi đã thử http đến phiên bản EC2 như http://xxxx.us-east-2.computer.amazonaws.com ( là DNS công cộng của EC2), nó trả về "Kết nối không thành công: Quyền bị từ chối"

Bất cứ ai có thể cho tôi biết làm thế nào để giải quyết vấn đề này?

answer

Tôi nghĩ rằng điều này đã được trả lời trong một chủ đề SO khác .. Nhưng tôi đã gặp vấn đề chính xác tương tự. Trong trường hợp của tôi, tôi đang sử dụng centos 8 làm phiên bản EC2 của mình. Vấn đề là với SELinux

sudo setebool -P httpd_can_network_connect_db = 1

Nếu bạn đã có thể kết nối bằng công cụ dòng lệnh mysql; thì rõ ràng đó không phải là vấn đề về tường lửa hoặc quyền; có lẽ là SELinux

Nếu bạn muốn kết nối với AWS RDS MySQL từ phiên bản Linux EC2, bạn cần có ID phiên bản. Ngoài ra, hãy đảm bảo bạn thêm địa chỉ IP công khai vào nhóm bảo mật DB thuộc RDS. Đảm bảo rằng ID người dùng của bạn có quyền chính xác đối với cả phiên bản Linux EC2 và MySQL DB - sửa đổi / đọc quyền truy cập vào vị trí MySQL và chính DB.

Sau đó, đảm bảo bạn đã tạo một nhóm bảo mật DB để truy cập bên ngoài và người dùng của bạn được bao gồm trong đó. Bạn có thể thực hiện điều đó bằng cách sử dụng các hướng dẫn được cung cấp trên liên kết sau: http://docs.amazonwebservices.com/AmazonRDS/latest/GettingStartedGuide/AuthorizeAccess.html