質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.32%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

0回答

465閲覧

AWS(EC2)からWindowsサーバーのDBへ接続ができない

entaro12345

総合スコア76

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2025/03/20 02:11

編集2025/03/22 23:19

実現したいこと

■環境
・AWSサーバー(EC2インスタンスのLinuxサーバー) ※以下、Linuxサーバーとします
・Windowsサーバー(Xampp環境) ※以下、Windowsサーバーとします

●やりたいこと
LinuxサーバーからPDOを使用してWindowsサーバーにあるMySQLへ接続をしてデータ取得等がしたいです

発生している問題・分からないこと

実行すると、接続タイムアウトが発生してしまっています

エラーメッセージ

error

1SQLSTATE[HY000] [2002] Connection timed out

該当のソースコード

PHP

1<?php 2// テスト 3$dsn = 'mysql:host=WindowsサーバーのIPアドレス;dbname=hotcall'; 4$user = ユーザー名; 5$password = パスワード; 6 7try{ 8 $dbh = new PDO($dsn, $user, $password); 9 $sql = 'select カラム名 from テーブル名'; 10 foreach ($dbh->query($sql) as $row) { 11 echo 'OK'; 12 } 13}catch (PDOException $e){ 14 echo $e->getMessage(); 15} 16?>

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

・WindowsサーバーのMySQLのユーザの確認および権限について確認を行った
→正常に登録されていることおよび権限が付与されていることを確認
・Linuxサーバーのセキュリティグループの確認を行った
→アウトバンドルールは特に何もしていないことを確認
・Windowsサーバーのファイアウォールでポート3306を開放
・tracerouteコマンドを使用して到達しているかを確認
→途中までしか到達してないことを確認
【traceroute結果】

列1列2列3
TTL1XX.XX.XX.XX12.375ms
TTL2XX.XX.XX.XX21.443ms
TTL3XX.XX.XX.XX31.393ms
TTL4YYY.ne.jp2.815ms
TTL5XX.XX.XX.XX43.461ms
TTL6XX.XX.XX.XX55.730ms
TTL7**
TTL30**

補足

EC2インスタンス(Linux t2.micro)
Windowsサーバー

言語:PHP 8.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tabuu

2025/03/20 23:24

Windowsサーバーはどこにあるのでしょうか?
entaro12345

2025/03/21 00:00

コメントありがとうございます。 Windowsサーバーは、物理サーバーとして存在しており、場所は完全に別のネットワーク帯に存在しています。 回答になっていますでしょうか?
tabuu

2025/03/21 00:30

AWSのセキュリティ設定のアウトバウンドでブロックされていないですか? WindowsサーバーにグローバルIPアドレスを設定して直接インターネットに公開していますか? 公開していない場合はルーター等でポートフォワーディングされていますか?ルーター等でブロックするような設定になっていないですか?
entaro12345

2025/03/21 01:14

AWSのセキュリティ設定のアウトバウンドルールは問題ありませんでした。 Windowsサーバーのルーター設定について確認してみます。
yu_1985

2025/03/21 06:20

詳細・結果のところは「問題ない」だけ記載されてもそれは自己申告でしかないので、具体的にどうなってるのかを記載してください Windowsサーバーは別のネットワーク帯にあるということなので、まずは両者のネットワーク間で疎通ができるかの確認が必要ではないでしょうか
entaro12345

2025/03/21 14:02

コメントありがとうございます。 アウトバウンドルールについて記載しました。 おっしゃる通りですので、両社のネットワーク間での確認を行います。
yu_1985

2025/03/21 15:00

> アウトバンドルールは特に何もしていない これではどうなっているかわかりません。 具体的な設定を記述してください。 ちなみにセキュリティグループのアウトバウンドはデフォルトだと全開放になっているはずです。 タイムアウトなのでネットワークのどこかで問題を抱えている可能性が高いです。 tracerouteの結果は重要な情報になりそうですが、どうでしょうか
AbeTakashi

2025/03/21 17:27

切り分けした方が良いと思います。まずはAWSからではなく普通にPCからグローバル経由(例えば自宅から)でデータベースにアクセスしたらどうなりますか? 問題なくアクセスできるならAWS側に原因がある可能性が高いです。逆にアクセスできないならWindowsサーバがあるネットワーク内の問題(ルーターやスイッチ、FWの設定など)、もしくはWindowsサーバが置かれている側のネットワーク回線の問題の可能性が高いです(IPv4 over IPv6の回線だったりすると接続はまず無理です)。tracerouteの結果も合わせてとなりますが、現状の情報だけだとピンポイントで回答が出てくるのはかなり厳しそうです。
bsdfan

2025/03/22 09:28

自分がWindowsサーバーの管理者の立場だったとして、外部からインターネット経由でデータベースに簡単に接続可能な構成にすることは、あまりしないと思います。 Windowsサーバーやそのネットワーク周りの管理も質問者さんがされているのでしょうか? そうでないなら管理を担当されている方に聞くべきだと思います。
entaro12345

2025/03/22 23:11

遅くなりましてすみません >これではどうなっているかわかりません。 >具体的な設定を記述してください。 アウトバウンドルールは全開放(0.0.0.0/0)となっています >tracerouteの結果は重要な情報になりそうですが、どうでしょうか プロバイダ(ISPのドメイン)までは到達していることが確認できています その先で、止まってしまっている状況です(結果を質問内容に貼り付けます) >切り分けした方が良いと思います コメントありがとうございます。 まず、切り分けをしてみます >Windowsサーバーやそのネットワーク周りの管理も質問者さんがされているのでしょうか? コメントありがとうございます。 Windosサーバー側は私ではなく、別の方が管理をしていて、 そこに対してアクセスをしてほしいということが要件となっています AWSは私のほうで管理をしています
yu_1985

2025/03/23 07:09

恐らくAWS側ではなく、接続先のネットワークやWindowsサーバー側に起因していそうです 一応聞いておきますが、tracerouteはちゃんとポート指定していますか? 他の方が管理しているなら、その方と連絡を取り合いながらトラブルシュートしてください。 phpからではなく、普通にmysqlクライアントで接続できるか確認するといいでしょう。 ところで、Windowsサーバーは別のネットワークにあるとのことですが、これはVPNやDirect Connectを経由せずインターネット経由で接続するということでしょうか? そもそもの話としてインターネットからDBアクセス可能なポリシーには普通しないと思いますが… 物理サーバーの置かれるネットワーク自体がmysqlのポートのアクセスを弾いたりしてませんか?
entaro12345

2025/03/23 23:31

tracerouteはポート指定しておりませんでしたので指定して再度状況が変化するか試してみます 物理サーバーのネットワーク環境がわかりえない範疇のため、ルータの設定等含めて相手方に確認をしております
yu_1985

2025/03/24 07:13

> tracerouteはポート指定しておりませんでしたので こういうことが起こるので、「何かをした」とき結果だけじゃなくて「具体的に何をしたか」をわかるように提示するようにしましょう。 打ったコマンドを極力具体的に載せるとか、どこでどの操作をした、とか。 今回でいうとインプットが誤っていることを確認するのに質問が一往復必要でした。 これはここでの質問だけではなく、例えば問い合わせをするときにも有用です。 tracerouteはデフォルトだとUDPでの接続をしますが、今回したいのはTCPでMySQLのポートでの接続が可能かどうかですよね? その点を踏まえてオプションを設定してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.32%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問