it-roy-ru.com

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-адрес, который дал мне отказ в соединении, и я понятия не имею, что не так.

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

28
Jack Smith

Я нашел причину, по которой соединение не работало, потому что оно пыталось подключиться к порту 8888, когда ему нужно было подключиться к порту 8889.

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

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

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

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

28
Jack Smith

В моем случае сервер 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
0
vinod