Проблема не в Heroku, в прошлом я мог успешно подключаться к внешним базам данных у своего хостинг-провайдера.Вам необходимо использовать эту запись:
$pdoconn = new PDO('mysql:host=' . $host . ';dbname=' . $db, $user, $pwd, array( PDO::ATTR_PERSISTENT => false));
С другой стороны, в Media Temple есть политика, позволяющая только определенным IP-адресам подключаться к экземпляру mysql, запущенному на вашем Grid-сервере, из внешнего местоположения.
Вы можете изменить этот список, выполнив следующие действия:
Ваш домен> Администратор> Управление базами данных> Пользователи и настройки> Внешние базы данных> Добавить IP
Проблема здесь заключается в основномпри определении IP-адреса вашего сервера Heroku, доступного для MediaTemple, так как адрес будет меняться со временем.
Чтобы определить ваш открытый IP-адрес, вы можете создать новый файл ipcheck.php
со следующим содержанием:
<?php
$homepage = file_get_contents('http://www.whatsmyip.org/');
echo $homepage;
?>
Затем просмотрите эту страницу после развертывания на своем экземпляре heroku, и вы увидите, что ваш IP-адрес сильно отличается при каждом запросе.
Единственный способ обойти это - предоставить статический IP-адрес через Proximo.addon или аналогичный, затем настройка MediaTemple для разрешения внешних подключений с этого IP.
Вероятно, дешевле запустить сервер hostgator для вашей базы данных mysql (база данных hostgator mysql допускает внешние подключения из любого места).