約束の地

あの日あの時のキャロの想い出

Ubuntu 16.04 LTS で MySQL にポート番号を指定して「正しく」接続する方法

「正しく」とは

ポート番号を指定した際に、そのポートに本当に接続している状態が「正しい」とします*1

MySQL の複数インスタンスを作ろうと試行錯誤してた過程で、今さらなことを理解したので書き留めておきます。

MySQL にポート番号を指定して接続するコマンド

皆さんご存知のとおりです。--port=12345または-P 12345をオプションとして指定します。

$ mysql -u root -p -P 12345

正しくないポート指定

ところが上記のコマンドだとポート指定が意味をなしていません。設定していないポートでも(すなわちどのポートでも)接続できてしまいます。

理由

公式ページのとおりです。

ローカルサーバーへの接続にもポート番号を指定できます。ただし前述のように、Unix では localhost への接続にはデフォルトでソケットファイルが使用されます。前述のように TCP/IP 接続を強制しないと、ポート番号を指定するすべてのオプションは無視されます。

次のコマンドでは、Unix ではプログラムはソケットファイルを使用し、--port オプションは無視されます。

shell> mysql --port=13306 --host=localhost

ポート番号を使用するようにするには、プログラムを次のいずれかの方法で呼び出します。

shell> mysql --port=13306 --host=127.0.0.1
shell> mysql --port=13306 --protocol=TCP

*1:当たり前ですが

Powered by はてなブログ