Подключитесь к Amazon RDS с помощью PHP
Я пытаюсь подключить мой экземпляр RDS с моим файлом подключения PHP.
Вот что у меня в файле:
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'User Name');
define('DB_PASSWORD', 'Password');
define('DB_DATABASE', 'DATABASE');
$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error());
$database = mysql_select_db(DB_DATABASE) or die(mysql_error());
Я заменил localhost своим URL-адресом конечной точки (rds thing), именем пользователя и паролем на моего пользователя RDS Instance, а также пароль и имя базы данных, которые я установил при создании экземпляра. Но это не похоже на работу.
Есть ли что-то еще, что я должен сделать, о котором я не знаю, или это должно работать?
7 ответов
Некоторые идеи:
- Попробуйте использовать фактический IP-адрес экземпляра, тогда он должен работать.
- Вы авторизовали доступ к вашему экземпляру БД?
- Возможно, вы захотите взглянуть на Начало работы с Amazon RDS, чтобы правильно настроить свой экземпляр RDS.
Экземплярам RDS не присвоен статический IP-адрес, вы всегда используете конечную точку для хоста. Например:
database1.jlsdfjhgsdf.us-east-1.rds.amazonaws.com
Если вы подключаетесь к экземпляру с именем пользователя, отличным от учетной записи корневой базы данных, вам необходимо предоставить привилегии пользователя.
Проверьте настройки группы безопасности. Если вы подключаетесь из другого экземпляра EC2 на Amazon, вам нужно присоединить эту группу безопасности. Если вы пытаетесь подключиться из-за пределов AWS, вам потребуется внести в белый список IP-адрес, с которого вы осуществляете доступ.
Я сталкивался с подобной проблемой при попытке подключить сервер Apache EC2 с помощью PHP к экземпляру RDS MySQL. Как ни странно, я мог установить соединение через CLI - однажды в состоянии выполнения mysql скажет вам, с каким пользователем вы вошли, плюс порт, имя сервера и т. Д. Оказалось, что некоторые образы AMI имеют принудительное применение SELinux - то есть сервер apache не может отправлять сетевые запросы указал этот господин ( http://www.filonov.com/2009/08/07/sqlstatehy000-2003-cant-connect-to-mysql-server-on-xxx-xxx-xxx-xxx-13/)
Другие моменты:
- Убедитесь, что входящие порты установлены для вашей БД RDS
- В MySQL убедитесь, что для хоста установлено значение "%", а не для localhost.
- Всегда используйте строку конечной точки для подключения при изменении RDS IP
Недавно у меня тоже было много проблем с этим, но я смог это исправить. Я удостоверился, что мои группы безопасности (для RDS и для EC2) позволяли друг другу. Я смог запустить свой скрипт из терминала и подключиться к своей базе данных также из терминала, но я не смог заставить скрипт запустить / подключиться к MySQL из браузера. Оказывается, у меня не установлен mysql-сервер - после того, как я установил его и перезапустил httpd и mysqld, он заработал как чудо.
Именно эта статья привела меня к установке mysql-сервера, и служба запускается / перезапускается. Надеюсь, поможет! - http://www.rndmr.com/amazon-aws-ec2-easy-web-serverset-up-guide-with-a-mac-and-coda-2-256/
У меня также была проблема соединения между ec2 (сервер apache + php) и RDS (сервер Mysql), когда я следовал учебному руководству на http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateDBInstance.html
Я решил это с помощью двойной кавычки при указании значения соединения, в то время как руководство использует одинарные кавычки.
define('DB_SERVER', "localhost");
define('DB_USERNAME', "User Name");
define('DB_PASSWORD', "Password");
define('DB_DATABASE', "DATABASE");
Я пытался подключиться к моему экземпляру БД, используя node-mysql. Я обнаружил, что конечная точка, которую RDS предоставил мне, сделала поиск DNS. Следил за этим и изменил URL на этот. До этого момента я мог подключаться к MySQL только через командную строку. Когда после поиска я изменил его на конечную точку, node-mysql наконец смог подключиться.