コマンドラインを使用してリモート 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
を指定した値に置き換えます。その後、リモートの場所から指定されたデータベースにアクセスできるようになります。