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