Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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