MySQLサーバーを複数のIPアドレスにバインドする方法は?


260

MySQLを複数のIPアドレスにバインドする秘密の方法はありますか?

私の知る限り見ることができるようにバインドアドレスのmy.cnfのパラメータを複数のIPをサポートしていないと、あなたは複数回それを持つことはできません。

回答:


242

いいえ、ありません(1時間前に確認しました)。my.cnfでバインドアドレスをコメントできます:

#skip-networking
#bind-address                   = 127.0.0.1

2つのIPのみが必要な場合は、ファイアウォールを使用する必要があります。


31
正しい。バインドは、サーバー上の0、1、またはすべての IPアドレスに制限されます。
ジョー

7
ただし、socketbind-addressオプションの両方を指定することで、ローカルUNIXソケットとネットワークソケットの両方を公開および提供できることに注意してください。
-danorton

5
今日の時点でまだ真実です。
デニス・ノルティ

22
それはばかげている。
フィリップ


78

127.0.0.xにバインドしても、すべてのデバイスで利用できるわけではなく、ローカルでのみ利用可能になります。すべてのインターフェイスで使用できるようにする場合は、0.0.0.0を使用する必要があります。複数のインターフェースからアクセスするが、すべてのインターフェースよりもアクセスしたくない場合は、0.0.0.0にバインドし、アクセスしたくないインターフェースをファイアウォールで遮断する必要があります。

また、セキュリティの2番目のレイヤーとして、すべてのMySQLユーザーが%(つまり、任意のホスト)以外に設定されたホストフィールドを持っていることを確認する必要があります。


1
ネットワークスタックが破損していない限り、TCPポートをアドレス0.0.0.0にバインドできません。
ジョンガーデニアス

26
あなたはでき 0.0.0.0に特異的に結合します。ただルーティングすることはできません。Linuxの場合(またはWindowsの場合でも、Windows用のnetcatをインストールするだけ)、次のことを試してください。それに接続します。
グレイパンサー

私は...あなたは壊れたネットワークスタックを持っていない限り、言ったように
ジョンGardeniers

1
@JohnGardeniersそれが、特別なアドレスで定義されているlinux ip(7)のマニュアルページにあるのはなぜINADDR_ANY (0.0.0.0) means any address for binding;ですか?
ebyrob

2
Debianでは、/etc/mysql/conf.d/bindaddress.cnfコンテンツを含むファイルファイルを作成します[mysqld] \n bind-address = 0.0.0.0
Yves Martin

41

複数のIPアドレスにバインドすることはできませんが、代わりに使用可能なすべてのIPアドレスにバインドすることができます。その場合、次のように、0.0.0.0MySQL構成ファイル(/etc/mysql/my.cnfなど)のバインディングアドレスに使用します。

bind-address    = 0.0.0.0

アドレスが0.0.0.0の場合、サーバーはすべてのサーバーホストIPv4インターフェイスでTCP / IP接続を受け入れます。

さらに、アドレスがの::場合、サーバーはすべてのサーバーホストIPv4およびIPv6インターフェイスでTCP / IP接続を受け入れます。このアドレスを使用して、すべてのサーバーインターフェイスでIPv4接続とIPv6接続の両方を許可します。

または、単にbind-address=すべてコメントアウトして、すべてのアドレスにバインドすることができます。ただしskip-networking、リモート接続も許可する場合は、my.cnfで有効になっていないことを確認してください(詳細:MySQL:リモート接続とローカル接続の両方を許可する)。

バインディングアドレスを変更したら、次の方法でMySQLサーバーを再起動することを忘れないでください。

sudo service mysql restart

最終的に、マスター/スレーブレプリケーションを使用して、単一のマシン(異なるポート)でMySQLの複数のインスタンスを実行することを検討できます。レプリケーションにより、1つのMySQLデータベースサーバー(マスター)から1つ以上のMySQLデータベースサーバー(スレーブ)にデータをコピーできます。

続きを読む:


これは正常に機能します。ただ、第三、どんなIPアドレス、すべてのユーザーがその2日からの接続を許可するかどうかを確認することを忘れない
gies0r

21

いいえ、あなたがすることはできません。リンクするページには次のように明記されています:

バインドするIPアドレス。選択できるアドレスは1つだけです。このオプションを複数回指定すると、最後に指定したアドレスが使用されます。

アドレスまたは0.0.0.0が指定されていない場合、サーバーはすべてのインターフェイスでリッスンします。


12

他の人が答えたように、複数のインターフェースに選択的にバインドする方法はまだありません。

Linuxには、それを可能にするTCPツールがいくつかあります。このセットアップでは、127.0.0.1でリッスンするようにmysqlを構成し、redirを使用して任意のインターフェイスで公開します。

私はこれを使用して、仮想マシンのゲストがホストマシンにインストールされたmysqlを確認できるようにしました。

redir --laddr=192.168.33.1 --lport=3306 --caddr=127.0.0.1 --cport=3306 &

注MySQL> = 8.0.13では、複数のインターフェースにバインドできます。
txyoji


5

MySQL 8.0.13より前では、-bind-addressは単一のアドレス値を受け入れます。これは、単一の非ワイルドカードIPアドレスまたはホスト名、または複数のネットワークインターフェースでのリスニングを許可するワイルドカードアドレス形式の1つを指定できます(*、0.0 .0.0、または::)。

MySQL 8.0.13の時点で、--bind-addressは、上記の単一の値、またはコンマ区切りの値のリストを受け入れます。オプションが複数の値のリストに名前を付ける場合、各値は単一の非ワイルドカードIPアドレスまたはホスト名を指定する必要があります。ワイルドカードアドレス形式(*、0.0.0.0、または::)を指定することはできません。

ソース:https : //dev.mysql.com/doc/refman/8.0/en/server-options.html


3

my.cnfの変更(通常はLinux上で/etc/mysql/my.cnfや窓をチェックし、この答えを。

bind-address                   = 127.0.0.1

bind-address                   = 0.0.0.0

次に、Windowsでmysqlを(Ubuntu サービスmysql restartで再起動します。通常はWin + R services.mscを介してサービスを再起動します。

0.0.0.0は、my.cnfでも指定されているポートを使用して、使用可能なすべてのIPにバインドするように指示します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.