MySQLへのリモートアクセスを許可する方法

Note

多くのWebサイトとアプリケーションは、同じマシンでホストされているWebサーバーとデータベースバックエンドから開始します。 ただし、時間が経つにつれて、このようなセットアップは面倒でスケーリングが困難になる可能性があります。 一般的な解決策は、リモートデータベースをセットアップしてこれらの機能を分離し、サーバーとデータベースを自分のマシンで自分のペースで成長させることです。

リモートMySQLデータベースをセットアップしようとするときにユーザーが遭遇するより一般的な問題の1つは、MySQLインスタンスがローカル接続のみをリッスンするように構成されていることです。 これはMySQLのデフォルト設定ですが、MySQLはサーバーに到達できるexternal IPアドレスをリッスンできる必要があるため、リモートデータベースセットアップでは機能しません。 これを有効にするには、mysqld.cnfファイルを開きます。

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

bind-addressディレクティブで始まる行に移動します。 これは次のようになります。

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1
. . .

デフォルトでは、この値は127.0.0.1に設定されています。これは、サーバーがローカル接続のみを検索することを意味します。 このディレクティブを変更して、外部IPアドレスを参照する必要があります。 トラブルシューティングの目的で、このディレクティブをワイルドカードIPアドレス(*::、または0.0.0.0)のいずれかに設定できます。

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0
. . .

[。注意]##

Note: MySQL 8以降を実行している場合、bind-addressディレクティブはデフォルトではmysqld.cnfファイルに含まれません。 この場合、次の強調表示された行をファイルの下部に追加します。

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
bind-address            = 0.0.0.0

この行を変更した後、ファイルを保存して閉じ、MySQLサービスを再起動します。

sudo systemctl restart mysql

これに続いて、別のマシンからデータベースにリモートでアクセスしてみてください。

mysql -u user -h database_server_ip -p

データベースにアクセスできる場合は、構成ファイルのbind-addressディレクティブが問題であったことを確認します。 ただし、bind-address0.0.0.0に設定すると、任意のIPアドレスからサーバーに接続できるため、安全ではないことに注意してください。 一方、まだデータベースにリモートでアクセスできない場合は、他の何かが問題を引き起こしている可能性があります。 いずれの場合も、How To Set Up a Remote Database to Optimize Site Performance with MySQL on Ubuntu 18.04に関するガイドに従って、より安全なリモートデータベース構成をセットアップすると役立つ場合があります。

Related