Я настроил экземпляр AWS RDS и экземпляр AWS EC2, и я считаю, что настроил группу безопасности, чтобы разрешить как внутреннему IP-адресу, так и общедоступному IP-адресу экземпляра EC2 доступ к экземпляру RDS. если я подключаюсь к экземпляру EC2 через ssh-клиент, и набираю команду:
mysql -u xxx -p -h AWS_RDS_endpoint.com
Соединение успешно. Я создал тестовый файл php с именем index.php в корневом веб-каталоге экземпляра EC2, такой код:
<?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";
?>
если я наберу «php index.php» в терминале ssh, он покажет «успешно подключен», но если в веб-браузере я попробовал http на экземпляр EC2, например http://xxxx.us-east-2.computer.amazonaws.com (который является общедоступным DNS EC2), он возвращает "Ошибка подключения: в доступе отказано".
Может кто подскажет, как решить эту проблему?
Если вы хотите подключиться к AWS RDS MySQL из экземпляра EC2 Linux, вам понадобится идентификатор экземпляра. Кроме того, убедитесь, что вы добавили общедоступный IP-адрес в группу безопасности БД, которая принадлежит RDS. Убедитесь, что ваш идентификатор пользователя имеет правильные разрешения как для экземпляра EC2 Linux, так и для базы данных MySQL - изменение / чтение доступа к расположению MySQL и самой БД.
Затем убедитесь, что вы создали группу безопасности БД для внешнего доступа и ваш пользователь включен в нее. Вы можете сделать это, используя инструкции по следующей ссылке: http://docs.amazonwebservices.com/AmazonRDS/latest/GettingStartedGuide/AuthorizeAccess.html