Подключение к Google Cloud SQL

Я установил Google Cloud SQL, который отлично работает, однако у меня возникают проблемы с подключением с помощью любого из методов, приведенных в документации:

PDO

$db = new PDO('mysql:unix_socket=/cloudsql/hello-php:my-cloudsql-instance;charset=utf8','<username>','<password>');

mysql_connect

$conn = mysql_connect(':/cloudsql/hello-php:my-cloudsql-instance', '<username>', '<password>');

mysqli

$sql = new mysqli(null, '<username>', '<password>', null, null, '/cloudsql/hello-php:my-cloudsql-instance');

Я могу подключиться удаленно из рабочей среды MySQL, но всякий раз, когда я пытаюсь с веб-сайта использовать вышеуказанные функции, я получаю сообщение «Потеряно соединение с сервером MySQL при« чтении начального пакета связи »», но я предоставил доступ к Cloud SQL через авторизованные сети и проверил IP данный. Я считаю, что это как-то связано с тем, что я пытаюсь подключиться не из Google App Engine, а из моей собственной базы данных разработки. Как мне подключиться вне Google !?

ОБНОВЛЕНИЕ: я проверил свой IP во всех направлениях, но этот код все еще не работает.

$host="173.xxx.xx.xxx" <-- given from Google Developers COnsole
$db_username="root";
$db_pasword="xxxx"; <-- password I set after creating the instance

mysql_connect("$host", "$db_username", "$db_password")or die("cannot connect");

Эта страница дает ошибку:

Предупреждение: mysql_connect () [function.mysql-connect]: потеряно соединение с сервером MySQL при «чтении начального пакета связи», системная ошибка: 111 в /..../connect.php в строке 5 не может подключиться

Когда я пробую это соединение PDO, я также получаю сообщение об ошибке:

$dsn = 'mysql:host=173.xxx.xx.xxx;dbname=database_name';
$username = 'root';
$password = 'xxxx';

$dbh = new PDO($dsn, $username, $password);

Неперехваченное исключение «PDOException» с сообщением «SQLSTATE [HY000] [2003] Не удается подключиться к серверу MySQL на« 173.xxx.xx.xxx »(111)»


person user2727128    schedule 12.03.2014    source источник


Ответы (1)


Вы не можете подключиться удаленно с помощью сокета unix (который работает только на локальном компьютере), вам необходимо подключиться по сети.

У Google есть краткое описание того, что вам нужно сделать, чтобы это произошло, но в основном это сводится к тому, что вам необходимо авторизовать номер / диапазон IP-адресов, с которых вы хотите подключиться, и подключиться к базе данных, используя общедоступный IP-адрес экземпляра.

person Joachim Isaksson    schedule 12.03.2014
comment
Спасибо за быстрый ответ. Это то, что я изначально пробовал, но все равно дает ту же ошибку. Хост: instance-ip, Пользователь: root, Пароль: установленный мной пароль. Есть идеи, почему это привело бы к этой ошибке, если бы я отправил общедоступный IP-адрес сайта? - person user2727128; 12.03.2014
comment
Очень странно, если вы открыли сеть для подключения со своего IP-адреса, она должна работать. Не могли бы вы показать используемую вами строку подключения PDO? (пожалуйста, запутайте IP и пароль, я просто хочу увидеть общую структуру) - person Joachim Isaksson; 12.03.2014
comment
Ваше редактирование действительно похоже на проблему с брандмауэром. Вы уверены, что открыли диапазон IP-адресов для доступа к базе данных? (т.е. шаг 1 по ссылке в ответе) - person Joachim Isaksson; 12.03.2014
comment
Я не устанавливал диапазон - только общедоступный IP-адрес, обнаруженный при пинге моего веб-сайта. Должен ли я установить его как-нибудь еще? - person user2727128; 12.03.2014
comment
@ user2727128 Вы должны установить IP, с которого вы пытаетесь подключиться, с, т.е. машину, на которой вы запускаете клиент, иначе CloudSQL не разрешит соединение. - person Joachim Isaksson; 12.03.2014
comment
Я могу нормально подключиться с моего локального компьютера через MySQL Workbench, но когда я пытаюсь подключиться с моего размещенного сайта, это не работает. - person user2727128; 12.03.2014
comment
Только что поговорил с хостинговой компанией. Они сказали, что указанный IP-адрес не разрешается, и указывают на другое место. Надеюсь, это будет исправление, но я отвечу через 3-7 часов после обновления. - person user2727128; 13.03.2014
comment
Все исправлено с моим IP-адресом и по-прежнему ничего. Я использую ipage - есть ли какие-то настройки, которые мне нужно где-то изменить, которые могут быть причиной? - person user2727128; 14.03.2014
comment
Вы добавили IP-адрес своего размещенного сайта к разрешенным IP-номерам в Google SQL? - person Joachim Isaksson; 14.03.2014
comment
да. Следует ли мне также добавить адреса серверов имен? Нужно ли мне указывать имя экземпляра или проекта в любом месте моего php? - person user2727128; 14.03.2014