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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

XAMPP

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

Q&A

解決済

2回答

4506閲覧

ApacheとMySQLとでポートが違うのはなぜですか?

WeilSpinor

総合スコア170

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

XAMPP

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

0グッド

0クリップ

投稿2019/03/28 13:42

編集2019/03/28 22:46

XAMPPを利用しています。
Apacheはサーバーシステムそのものなので、

『MySQLが設置されているサーバーの管理システムであるApache』
を起動していないとMySQLは使用できない、
ということはわかりました。

そして、私の設定では、
Apacheはポート8080、MySQLはポート3306
を使用しています。

###疑問
疑問は以下の通りです。

クライアントがMySQLに接続しようとするとき、
まず、サーバーであるApacheにアクセスしないとしょうがないので、
「Apacheのポート8080に接続する」
ことになると思います。

ということは、
MySQLのポート3306に直接アクセスできるわけではない
ということだと思うのですが、あっていますでしょうか?

すると、
MySQLはApacheの支配下にあるわけですから、
つまり、
「Apacheのポート8080の下に、MySQLポート3306が置かれる」
という感じに、ポートの階層構造が形成されている、という解釈はあっていますでしょうか?

ご回答宜しくお願いします。

ちなみに、phpMyAdminはポート8080から起動されますが、
これはちゃんとMySQLにもつながっているのでしょうか?

併せてご回答いただけると幸いです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

ポートとはデータの(データだけではないですが)やりとりをする窓口です。
郵便局でも銀行でも、あるいは役所でもいいですが、やってもらいたいことに対してそれぞれ別の窓口があるように、ある機能を提供するための窓口は、他の窓口と共用しないのが普通です。

Apache と MySQL はまったく別の機能を提供しているので、窓口が別(そもそも窓口同士の連携もない)なのです。

phpMyAdmin は、Apache 上で動く PHP を用いて MySQL を管理するためのシステムであって、Apache が MySQL を管理しているわけではありません。

投稿2019/03/29 00:09

tacsheaven

総合スコア13703

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

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

WeilSpinor

2019/03/29 04:30

ご回答ありがとうございます。 同じXAMPPパッケージの中には入ってはいるが、Apache(サーバーシステム)とMySQL(DB管理システム)は、何の関連性もない全く違うネットワークアプリケーションなので、当然ポートもちがう、ということですね。 今回phpMyAdminを使った時、ポート8080なのにポート3306のMySQLにアクセスされたように見えたのは、 phpMyAdminはPHPで作られたアプリケーションで、PHP自体はApache上でないと動かないので、 ブラウザ自体はhttpで8080のApacheに接続し、そこからphpmyadminを起動して、phpmyadminはtcpで3306のmysqlに接続する、という感じですね。 ブラウザーーーーポート8080『Apache』> phpMyAdminーーーーポート3306『MySQL』 そもそもブラウザはhttp、MySQLはtcpなので、ブラウザからMySQLに接続しても何も返されない、ということだったんですね。 本来コマンドプロンプトなどtcp通信で操作するものであるMySQLを、 phpMyAdminの力を借りてhttpで無理やりブラウザ操作しよう、 としたのが、事をややこしくしていたみたいですね。 はじめのうちはわかりやすいように、コマンドプロンプトでMySQLを使えばよかったかもしれません…。(基礎をすっ飛ばして応用に首を突っ込んでしまった気分です…)
ikedas

2019/03/29 08:18

そのコメントを読む限り、まだ混乱していらっしゃるようですので、こういう場所の回答を読んだだけでイメージで理解しようとするのではなく、きちんとした解説書や教科書を読んで基礎を勉強したほうがいいとおもいます。
guest

0

ApacheとMySQLとでポートが違うのはなぜですか?

同じポートに2つのサーバを待たせられないからです。

MySQLのポート3306に直接アクセスできるわけではない

ということだと思うのですが、あっていますでしょうか?

間違っています。ポート開放すれば、外部から直接3306番にアクセスすることができます(もっとも、データベースサーバをインターネットからアクセス可能にするのは危険性が高いのでやめたほうがいいですが)。

「Apacheのポート8080の下に、MySQLポート3306が置かれる」

という感じに、ポートの階層構造が形成されている、という解釈はあっていますでしょうか?

間違っています。ApacheとMySQLは別個に動いています。

投稿2019/03/28 13:46

編集2019/03/28 14:36
maisumakun

総合スコア145184

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

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

WeilSpinor

2019/03/28 14:55

ご回答ありがとうございます。 では、外部のブラウザは、 MySQLのポート3306を開放さえすれば、 MySQLのポート3306から直接MySQLにアクセスすることは可能だが、 セキュリティ上危険なので、ふつうは、 いったんApacheのポート8080からアクセスさせ、 そのあとにそこからMySQLのポート3306へ移動する、 という形をとっている、 という感じでしょうか? 実は以下の質問、 https://teratail.com/questions/181795 において、phpmyadminのログインの仕方がわからなくて困っていました。 この質問に記載してあるエラーは、MySQLのポート3306をポート開放していないせいで発生したもの、という感じでしょうか?
m.ts10806

2019/03/28 21:52

逆になぜそっちの質問を回答ついてるのに放置してこの質問をしたのかと。
maisumakun

2019/03/29 00:23

> この質問に記載してあるエラーは、MySQLのポート3306をポート開放していないせいで発生したもの、という感じでしょうか? 違います。404が出るということは、phpMyAdminにすらアクセスできていないということです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問