web-dev-qa-db-ja.com

エラーの取得SQLSTATE [HY000] [2002]接続が拒否されましたNAS Synology

SynologyNASでホストされている建設中のページを作成しています。

訪問者は自分の電子メールで購読し、Webサイトが利用可能になる時期を知ることができます。

データベースと、データベースに電子メールを追加する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;

なぜこのエラーが発生するのですか?

3
VâneVâne

私は同じ問題を抱えていました:

SQLSTATE[HY000] [2002] Connection refused

synologyで実行されているMariaDBデータベースに接続しようとしたときNAS 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);

ポート名は、SynologyNASのメインメニューからMariaDB10プロパティウィンドウを開いたときに見つかります。どうやら、port=3307仕様は効果がありませんが、エラーメッセージも表示されません。

4
PassionPete

Synology WitchにmariaDBをインストールしたため、MySQLのデフォルトポートを3306から3307に変更したため、接続が拒否されました。

2
VâneVâne

ちょうど同じ問題がありました、そしてこれが私がそれを修正した方法です。私はDSM6.2.2-24922 Synologyディスクステーションで実行しています。Nginx、PHP 5.6、およびMariaDB 10(およびphpmyadmin)を使用してWebステーションをインストールしました。

私が見つけた修正は、最初にphp構成でpdo_mysql拡張機能をアクティブ化することでした。

次に、Coreタブに移動し、pdo_mysql)を探します。 default_socket

デフォルトで私は持っていた

/tmp/mysql.sock
/run/mysqldmysql10.sock
0
Ben