2015-04-01 2 views
18

Ситуация в этом, я пытаюсь использовать соединение PHP для подключения моей базы данных MySQL, которая находится на phpmyadmin. Ничего не связано с соединением, просто пытающимся выяснить, успешно ли установлено соединение. Я использую MAMP для размещения базы данных, соединение Я пытаюсь использовать это:Ошибка подключения к PHP: SQLSTATE [HY000] [2002] Соединение отклонено

<?php 
$servername = "127.0.0.1"; 
$username = "root"; 
$password = "root"; 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=AppDatabase", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    echo "Connected successfully"; 
} 
catch(PDOException $e) 
{ 
    echo "Connection failed: " . $e->getMessage(); 
} 
?> 

Я использую почтальон, чтобы проверить, чтобы увидеть, если соединение работает, но я все время получаю сообщение об ошибке:

ошибка подключения: SQLSTATE [HY000] [2002] Соединение отклонено

Раньше я получаю сообщение об ошибке из:

Соединение не удалось: SQLSTATE [HY000] [2002] Нет такого файла или каталога

Это было связано с тем, что я установил имя сервера на localhost, изменив его на IP-адрес, который дал мне отказ в соединении, и я не знаю, что не так.

Любая помощь в этом отношении была бы оценена, спасибо.

+0

Похоже, что ваш сервис MySQL не прослушивает 127.0.0.1 TCP. Если он вообще запущен, возможно, он находится в локальном сокете, но не в TCP. Действительно ли имеет значение mysql: localhost; dbname = AppDatabase'? –

+0

... или был «нет такого файла или каталога», который происходит с «localhost»? Если это так, либо путь сокета был неправильным в php.ini, либо MySQL вообще не работает. –

ответ

19

я нашел причину, почему связь не работает, это произошло потому, что подключение пытается подключиться к порту 8888, когда необходимых для подключения к порту 8889.

$conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password); 

Это устранило проблему, хотя изменение имени сервера на localhost по-прежнему дает ошибку.

Ошибка подключения: SQLSTATE [HY000] [2002] Нет такого файла или каталога

Но он подключается успешно, когда IP-адрес вводится имя сервера.

+1

Попробуйте сделать «ping localhost», чтобы увидеть, как он пингирует адрес петли. Могут быть файлы ваших хостов повреждены. Использование IP-адреса по имени хоста обеспечит небольшое повышение производительности в любом случае – DarkBee

+2

Как вы определили правильный порт? Не по умолчанию локальный хост-порт 8080? Это изменяется при использовании протокола tcp? –

+0

Я считаю, что это имеет отношение к ipv6. Хост localhost для меня разрешает «:: 1», поэтому я подозреваю, что основной клиент mysql не поддерживает ipv6 (даже для локальных адресов). Изменение его до 127.0.0.1 разрешило его для меня, как и в предыдущей строке ответа. –

Смежные вопросы