Получение ошибки SQLSTATE Соединение отказалось от NAS Synology

Я делаю страницу под строительство, которая размещается на моем NAS Synology.

Посетители могут подписаться на электронную почту и получать информацию, когда сайт будет доступен.

У меня проблемы с базой данных и PHP-кодом, которые добавляют электронное письмо в базу данных.

Если имя сервера является localhost , я получаю следующую ошибку:

SQLSTATE [HY000] [2002] Нет такого файла или каталога

Когда это 127.0.0.1 или 127.0.0.1:3306 , я получаю ошибку ниже:

SQLSTATE [HY000] [2002] Соединение отклонено

Я еще не нашел решение на Stackoverflow.

Здесь PHP-код:

 <?php $servername = "localhost"; $username = "id"; $password = "password"; $dbname = "dbname"; try { $conn = new PDO( "mysql:host=$servername;dbname=$dbname", $username, $password ); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sql = "INSERT INTO email ( email ) VALUES ( '$email' )"; $conn->exec( $sql ); echo "New record created successfully"; } catch( PDOException $e ) { echo $sql . "<br>" . $e->getMessage(); } $conn = null; 

Почему я получаю эту ошибку?

SQLSTATE[HY000] [2002] Connection refused что:

  • у вас нет прав или привилегий для доступа к базе данных с этим пользователем,

  • ваши параметры базы данных либо неверны, либо

  • на сервере, где у вас нет базы данных; он может быть отключен.

У меня есть ответ, соединение было отклонено, потому что я установил mariaDB на мою синологию, которая меняет порт по умолчанию для MySQL с 3306 по 3307.

У меня такая же проблема:

SQLSTATE [HY000] [2002] Соединение отклонено

при попытке подключиться к базе данных MariaDB, работающей на моем NAS Synology, с php. Предоставление только имени пользователя и пароля

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

не работает, указав номер порта, решение, найденное в другом месте, также не работает:

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

Что работает (для меня):

$ conn = new PDO ("mysql: host = $ servername: 3307; dbname = $ database", $ login, $ password);

Имя порта отображается при открытии окна свойств MariaDB 10 из главного меню на NAS Synology. По-видимому, спецификация «port = 3307» не имеет никакого эффекта, но также не дает сообщения об ошибке.