1

あいさつStackoverflow。

私は現在、MySQLデータベース/サーバープロバイダーとして000webhost.comを使用しています。PHPを使用して、彼らのサービスは素晴らしい働きをしています!

MySQLのユーザー名、パスワード、ホスト、DBなどを含む一連の変数を作成しました。次のように見えます:

$mysql_host = "mysql3.000webhost.com";
$mysql_database = "a1966938_AtMarke";
$mysql_user = "a1966938_admin";
$mysql_password = "**********";
$mysql_table = "MarketDatas";

そして、私は「mysql_connect($ mysql_host、$ mysql_user、$ mysql_password);」を使用しています。サーバーに接続します。繰り返しますが、これはすべて完璧に機能しています。ただし、を介してデータベースに接続しようとしている場合。クライアント(C#)接続できません。または、同じ変数を宣言し、同じ変数と手順を使用してPHPを使用して別のIPからサーバーに接続しようとすると、接続できませんか?

私は混乱しています-どうすればよいので、すべてのIPが許可されますか?

4

2 に答える 2

2

他のIPからの接続が許可されない理由は2つあります。

  • そのGRANT PRIVILEGES ... TO user@IPIPには与えられていますが、他には与えられていません。データベースに対するGRANT特権を持っている場合は、それを修正できる可能性があります(FLUSH特権を忘れないでください)。
  • MySQLホスティングのファイアウォールは、独自のWebホスティングサーバーからの接続のみを許可する場合があります。この場合、何もできない可能性がありますが、サポート担当者に問い合わせてみてください。

通常、PHPで記述された薄いRESTレイヤー(Googleの「MySQLREST PHPインターフェース」など)を実装して、Webホスティングに接続し、それらのインターフェース(もちろん開いている-それ以外の場合はWebホスティングは機能しません)。これは、HeidiSQLが一部のセットアップで行ったことであり、それらのコードはどこかに浮かんでいる可能性があります。次に、C#MySQLライブラリではなく、HTTPライブラリを使用して作業を行います。より面倒ですが、よりポータブルです(ポート3306 / tcpがアウトバウンドオープンであると期待できるすべての場所ではないため:ホームADSL上にありますが、多くの分散型キャリアおよび企業は、アウトバウンドポート80、443、110、25のみを許可しますIP、およびその他の12個-および3306はその中には含まれていませんが、これはC#クライアントで何を計画しているかによって異なります)。

ただし、「ポートを解決できません」というメッセージが表示された場合は、クライアントライブラリが原因である可能性があり、MySQL接続ポートの値を手動で指定する必要がある場合があります。デフォルト値は3306であり、(通常)「myserver.host.com:3306」などのホスト名で指定できます。

于 2012-09-18T12:07:49.523 に答える
1

セキュリティのために、ホスティング会社は通常、MySQLサーバーをロックダウンして、ネットワーク上のWebホストのIPアドレスにのみ応答します。

ですから、私が恐れている簡単な答えは、おそらくすべてのIPを許可するように設定することはできないということです。

于 2012-09-18T12:06:27.673 に答える