Я установил 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)»