11

次のコードを使用して、ローカル マシンの仮想ホストからリモートの MySQL サーバーに接続しようとしています。

$conn = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die(mysql_error());
        mysql_select_db($dbname, $conn) or die(mysql_error());

私の問題は、ローカルに接続できず、次のエラーが表示されることです。

「xxx.xxx.xxx.xxx」で MySQL サーバーに接続できません (10060)

これは、同じ PHP ファイルをサーバーにアップロードする場合には当てはまりません。問題なくデータベースにクエリを実行できます。

コマンドラインからも接続できませんが、cPanel にアクセスできるため、IP が誤って禁止される可能性を排除できます。

私のローカル サーバーは PHP 5.2.9 を実行しており、リモート サーバーは 5.2.12 です。

4

4 に答える 4

18
  • サーバーのファイアウォールは、ポート 3306 で受信接続を有効にするように設定する必要があります。
  • %(任意のホスト)からの接続が許可されている MySQL のユーザーが必要です(詳細については、マニュアルを参照してください)。

現在の問題は最初の問題ですが、解決した直後に 2 番目の問題が発生する可能性があります。

于 2009-12-20T09:03:56.130 に答える
3

PHPを使用してリモートMySQLサーバーに接続するのは非常に簡単です。あなたがしなければならないことは次のとおりです。

  1. リモート サーバーで MySQL ユーザーを作成します。

  2. ユーザーに完全な権限を付与します。

  3. PHP コードを使用してサーバーに接続します (以下にサンプルを示します)。

$link = mysql_connect('your_my_sql_servername or IP Address', 'new_user_which_u_created', 'password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}

echo 'Connected successfully';

mysql_select_db('sandsbtob',$link) or die ("could not open db".mysql_error());
// we connect to localhost at port 3306
于 2011-10-14T10:27:39.130 に答える
2

私はちょうどこの種の問題を解決しました。私が学んだことは次のとおりです。

  1. my.cnfを編集して設定する必要bind-address = your.mysql.server.addressがあります[mysqld]
  2. skip-networking フィールドをコメントアウトする
  3. mysqld を再起動します
  4. 実行されているかどうかを確認します

    mysql -u root -h your.mysql.server.address –p 
    
  5. ドメインとして % を使用してユーザー (usr など) を作成し、問題のデータベースへのアクセスを彼女に許可します。

    mysql> CREATE USER 'usr'@'%' IDENTIFIED BY 'some_pass';
    mysql> GRANT ALL PRIVILEGES ON testDb.* TO 'monty'@'%' WITH GRANT OPTION;
    
  6. ポート 3306 のファイアウォールを開きます (iptables を使用できます。reveryone のポートを必ず開いてください。セキュリティが厳重な場合は、クライアント アドレスのみを許可してください)。

  7. ファイアウォール/iptables を再起動します

これで、クライアント サーバーの php スクリプトから mysql サーバーに接続できるはずです。

于 2012-07-07T18:46:31.057 に答える