2016-05-31 5 views
0

私はPHPコード(mysqliの)mysqli_connect():(HY000/2002)の接続に失敗し、リモートサーバー

$host = 'myIP:3306'; 
$user = 'root'; 
$pass = 'pass'; 

$conn = mysqli_connect("$host", "$user", "$pass"); 

//check connection 
if (mysqli_connect_errno()) 
{ 
    echo "Error: " . mysqli_connect_error(); 
} 

を使用してリモートサーバのデータベースに接続しようとしている私は、データベースを作るためにMYIP/phpmyadminの使用しましたmysqlが正しく動作しているかどうかを確認するためにputtyを使用しました。私はまた、デフォルト(3306)だった私のサーバー上のmysqlのデフォルトポートを調べました。

与えられたエラーは、接続失敗/タイムアウト/応答なしと記載されています。

私もmysqliの代わりにPDOを使ってみましたが、同じ結果が出ました。他のすべての例では、localhostとそのポストで提供されている解決策についてsocketpathを使って接続しています(これはリモートのように私にとって解決策のようには見えません)。

学校によって提供されるLinuxサーバーです。 アイデア前もって感謝します。

host, username, password, dbname, port, socket 

ホストとポートが分離されている:mysqli_connect()で

+0

間にいくつかのファイアウォールのようなサウンドは、リクエストをブロックします。 – arkascha

+0

Linuxを使用している場合は、ファイアウォールに例外を追加できます。 Ubuntuでは、これは$ ufw allow 3306です。 – Ben

+0

'telnet myIp 3306'を試してみてください。それでも接続に失敗すると、ネットワークに問題があることがわかります。タイムアウト=ファイアウォールは静かにパケットをドロップします。 connection refused =そのip:portをリッスンしているもの、またはファイアウォールが積極的に接続を拒否しています。 –

答えて

0

は、あなたは6つのパラメータを使用することができます。

は、使用してみてください:

$conn = mysqli_connect("myIP", "$user", "$pass", "dbname", "3306"); 

また、デフォルトのポートはそうあなたはおそらくも、それを提供する必要はありません3306です。

+0

'$ user'と' $ pass'の引用符は役に立たない。 – Jocelyn

+0

@Jocelyn正解、私はコードからコピーしました – wtm

関連する問題