Подключение к 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 Cloud доступ через авторизованные сети и проверяю 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)"

1 ответ

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

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

Другие вопросы по тегам