MySQLサーバの構築中に、クライアントPCからMySQLに接続できない事が有ったので、
備忘録のため記事にしました。(※ファイアウォール等のネットワーク環境は問題無しという前提です。)
MySQLのバージョン:8.0.20-0ubuntu0.19.10.1 for Linux on aarch64
状況を図で表すとこんな感じ。
使用しているディストリビューションやバージョンにより異なるのかもしれませんが、
MySQLサーバをインストールすると、デフォルトではlocalhostからの接続しか許可していないよいうです。
なので、サーバのターミナルからはmysqlに接続できるが、クライアントからは接続できないという事が発生します。
サーバのターミナルで、ss -antu
コマンドを打って、待ち受け中のポートを確認してみましょう。
(ssコマンドが無い場合はインストールしてください。Debian系の場合はsudo apt install iproute2
。)
Local Address:Port が 127.0.0.1:3306
になっており、localhostからの3306ポートしか待ち受けていないことが分かります。
こいつを、全てのIPアドレスからの3306ポートを待ち受けるように変更しなければなりません。
変更する設定ファイルは、/etc/mysql/mysql.conf.d/mysqld.cnf
です。
mysqld.cnf
を開くと下記画像の2か所がコメントアウトされていますので、コメントを外します。
そして、bind-address
の値が127.0.0.1になっていますので、これを0.0.0.0
に変更します。
0.0.0.0は、全てのIPアドレスを表す番号です。
編集し終えたら、上書き保存して、MySQLを再起動。
Debian系の場合 service mysql restart
コマンドをたたきます。
再起動後に、もう一度サーバのターミナルでss -antu
コマンドを打って、待ち受け中のポートを確認してみましょう。
Local Address:Port
が0.0.0.0:3306
に変わりました。
これですべてのIPアドレスからの3306ポートを待ち受けしてくれるようになりましたので、
クライアントからもMySQLサーバに接続できるようになります。