0

リモート Mysql サーバーに接続しようとすると、次のエラーが発生します。

php_network_getaddresses: getaddrinfo failed: Hôte inconnu.(翻訳: Host unknown).

con.php :

<?php 
  $db_host     = 'http://xxx.xxx.xxx.xxx';
  $db_username = 'xxx';
  $db_password = 'xxx';
  $db_name     = 'xxx';

  $con = mysql_connect($db_host,$db_username,$db_password);

  $select_db = mysql_select_db($db_name,$con);

?>

localhost への接続はすべてうまくいきますが、リモート接続の場合は機能しませんでした。

4

2 に答える 2

5

$db_host = 'xxx.xxx.xxx.xxx';その代わり

両方とも異なるポートで実行され、異なるプロトコルを使用するため、Mysql にプロトコル HTTP を使用することはできません。

さらに HTTP (Web サービス) = 80 Mysql (データベース) = 3306 BenM が述べたように、これがデフォルトのポートであることに注意してください。ほとんどの場合、これは変更されません。ただし、そのポートを他のポートに変更します (他のサービスでできるように)。

さらに、Mysql_ 関数は廃止される予定であり、新しいシステムや古いシステムでも使用するのは危険であるため、 PDOを調べてください。

PDOの設定方法に関する私の回答の1つを見てください

編集 1

コメントで benM の回答について述べたように、「ターゲット マシンが積極的に拒否したため、接続できませんでした。」

したがって、データベースがホストされている実際のサーバーにルートアクセス権がある場合は、サーバーかどうかを確認する必要があります(私の場合の例はubuntuサーバーです)

このコマンドを実行します:

sudo netstat -pan | grep mysql

また、この写真を見てください:TCPポートがリッスンしているかリストされていないかを示しています(ここではリッスンしています)

ここに画像の説明を入力

繰り返しますが、これは、実際の linux / (サーバーに関係なく) へのルート アクセス権があることを前提としています。私は ubuntu に精通しているだけですが、他のサーバー情報についてもお手伝いできます。

于 2013-04-18T14:36:35.613 に答える
4

HTTP プロトコルを使用して MySQL に接続することはできません (つまり、ポートの競合のため)。パラメータは IP 文字列である必要があります。次のようにプロトコルを削除しhttpます。

$db_host     = 'xxx.xxx.xxx.xxx';
$db_username = 'xxx';
$db_password = 'xxx';
$db_name     = 'xxx';

$con = mysql_connect($db_host, $db_username, $db_password);
$select_db = mysql_select_db($db_name, $con);

localhostまた、MySQL は、ユーザー アカウントへのアクセス以外を禁止するように構成できることにも注意してください。使用しているユーザーが任意のドメインからデータベースにアクセスできることを確認してください。

最後に、mysql_*関数のファミリは現在廃止されているため、新しいコードには使用しないでください。代わりに、MySQLiまたはPDOを確認してください。

于 2013-04-18T14:37:38.913 に答える