Я настроил экземпляр AWS RDS и экземпляр AWS EC2, и я считаю, что я настроил группу безопасности, чтобы разрешить как внутреннему IP-адресу экземпляра EC2, так и общедоступному IP-адресу доступ к экземпляру 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
Я думаю, что на этот вопрос уже дан ответ в другой ветке SO. Но у меня была точно такая же проблема. В моем случае я использовал Centos 8 в качестве экземпляра EC2. Проблема связана с SELinux
sudo setsebool -P httpd_can_network_connect_db=1
Если вы уже можете подключиться с помощью инструмента командной строки mysql; тогда, очевидно, это не проблема с брандмауэром или разрешениями; вероятно SELinux