Ошибка подключения к PHP: SQLSTATE [HY000] [2002] Соединение отклонено
Я пытаюсь использовать соединение PHP для подключения базы данных MySQL, которая находится на phpmyadmin. Ничего особенного в соединении просто пытаюсь увидеть, успешно оно установлено или нет. Я использую MAMP для размещения базы данных, соединение, которое я пытаюсь использовать, это:
<?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-адрес, который дал мне отказ в соединении, и я понятия не имею, что не так.
Любая помощь по этому поводу будет принята с благодарностью.
Ответы
Ответ 1
Я нашел причину, по которой соединение не работало, потому что соединение пыталось подключиться к порту 8888, когда ему нужно было подключиться к порту 8889.
$conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password);
Это устранило проблему, хотя изменение имени сервера на localhost все еще дает ошибку.
Не удалось выполнить соединение: SQLSTATE [HY000] [2002] Нет такого файла или каталога
Но он успешно соединяется, когда IP-адрес вводится для имени сервера.
Ответ 2
В моем случае сервер MySQL не работал. Я перезапустил сервер MySQL, и проблема была решена.
//on ubuntu server
sudo /etc/init.d/mysql start
Чтобы избежать проблемы остановки MySQL, вы можете использовать утилиту "initctl" в Ubuntu 14.04 LTS Linux, чтобы убедиться, что служба перезапускается в случае сбоя или перезагрузки. Пожалуйста, подумайте о том, чтобы сделать снимок корневого тома (с остановленным mysql) перед выполнением этой операции с целью сохранения данных [8]. Вы можете использовать следующие команды для управления сервисом mysql с помощью утилиты initctl с остановкой и запуском операций.
$ sudo initctl stop mysql
$ sudo initctl start mysql
Чтобы проверить работоспособность, вы можете проверить состояние службы и получить идентификатор процесса (pid), смоделировать сбой, убив процесс "mysql" и проверить его состояние как выполняющееся с новым идентификатором процесса через некоторое время (обычно в течение 1 минуты) используя следующие команды.
$ sudo initctl status mysql # get pid
$ sudo kill -9 <pid> # kill mysql process
$ sudo initctl status mysql # verify status as running after sometime
Ответ 3
Используя MAMP, я изменил host=localhost
на host=127.0.0.1
. Но пришла новая проблема "соединение отказано"
Решил это, поместив 'port' => '8889'
в 'Datasources' => [
Ответ 4
Я получил решение, запустив эту команду в терминале.
sudo killall mysqld