コマンドラインを使用してリモート MySQL データベースを接続する
分散環境で作業する場合は、リモート接続が必要です。このチュートリアルは、コマンドラインを使用してリモート MySQL データベースに接続する方法を説明するステップバイステップガイドです。
コマンドラインを使用してリモート MySQL データベースを接続する
先に進む前に、まずいくつかのことを行う必要があります。コマンドラインまたはターミナルウィンドウへのアクセスと、別の場所で実行されている MySQL サーバー(リモート MySQL サーバー)です。
また、リモートマシンとローカルマシンでの root または sudo 権限も必要になります。MySQL サーバーに直接アクセスできない場合は、ssh を使用してリモート接続することもできます。
ssh を使用して接続する場合は、この記事を使用できます。
このチュートリアルでは、コマンドラインを使用して MySQL データベースとのリモート接続を確立する方法について説明します。次の手順が含まれます。
- MySQL
configファイルを編集します - リモート接続を許可するようにファイアウォールを構成します
rootログインをリモートで許可します- リモートの MySQL サーバーに接続します
以下は、すべてのステップの詳細です。
MySQLconfig ファイルを編集する
次のコマンドを使用して、テキストエディタで config ファイルを開きます。nano テキストエディタを使用していますが、使い慣れた任意のテキストエディタを使用できます。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
config ファイルのパスを忘れたかわからないとすると、find コマンドを使用して config ファイルの場所を知ることができます。config ファイルを開いたら、[mysqld] セクションを検索します。
[mysqld] セクションで bind-address を見つけ、その値を 127.0.0.1 から 0.0.0.0 に変更するか、# 記号を使用してこの行にコメントします。
bind-address オプションを更新する理由は何ですか?デフォルト設定により、IP アドレスが 127.0.0.1 のローカルマシンを使用してこのサーバーに接続できます。
# 記号を使用してこのオプションにコメントするか、その値を 0.0.0.0 に置き換えることにより、すべてのマシンがこのサーバーにリモートで接続できるようにします。
リモートで接続するマシンを 1つだけにする場合は、0.0.0.0 の代わりにホストマシンの IP アドレスを書き込むことができます。変更が完了したら、それらを保存してファイルを終了します。
更新を適用するには、次のコマンドを使用して MySQL サーバーを再起動します。
sudo systemctl restart mysql
リモート接続を許可するようにファイアウォールを構成する
config ファイルで bind-address を構成しているときに、デフォルトの MySQL ポートが 3306 であることに気付いたかもしれません。ここでは、MySQL のデフォルトポートである 3306 へのリモートトラフィックを許可するように設定を調整します。
トラフィックを開く前に、ファイアウォールを構成する必要があります。完了したら、以下のコマンドを使用して、この特定のポートのトラフィックを開くことができます。
Ubuntu 20.04 を使用しているため、ufw(複雑でないファイアウォール)を使用します。
sudo ufw allow from your_remote_ip_address to any port 3306
Enterを押すとすぐに、ルールが正常に更新されたことがわかります。
ルートログインをリモートで許可する
デフォルト設定のため、ローカルマシンを使用して root に接続できます。リモートマシンがルートとして接続できるようにするには、いくつかの変更を加える必要があります。
これを行うには、次のコマンドを使用します。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
mysql> UPDATE mysql.user SET host='%' WHERE user='root';
次に、次のように systemctl を使用して MySQL サーバーを再起動します。
sudo systemctl restart mysql
リモート MySQL サーバーに接続する
リモート MySQL サーバーがリモート接続を受け入れる準備ができたら、次のコマンドを使用してリモート MySQL サーバーと接続できます。
mysql -u your_username -h your_mysql_server_ip -p
ここで、your_username をユーザー名に置き換え、your_mysql_server_ip を IP に置き換えます。MySQL サーバーのホスト名を使用することもできます。
-p は、上記のコマンドで使用したユーザー名のパスワードを入力するように求めます。
すべてを正しく行うと、最終的にリモート MySQL サーバーに接続されます。データベースへのリモートアクセスを許可するために、次のクエリを実行できます。
mysql> update db set Host='ip_address' where
-> Db='yourDB_name';
mysql> update user set Host='ip_address' where
-> user='username';
username、Host、および Db を指定した値に置き換えます。その後、リモートの場所から指定されたデータベースにアクセスできるようになります。
