はじめに
同じローカルマシンでデータベースとWebサーバーをホストすることは珍しくありません。ただし、現在、多くの組織がより分散した環境に移行しています。
別のデータベースサーバーを使用すると、セキュリティとハードウェアパフォーマンスが向上し、リソースを迅速に拡張できます。このようなユースケースでは、リモートリソースを効果的に管理する方法を学ぶことが優先事項です。
このチュートリアルでは、MySQLデータベースへのリモート接続を有効にする方法を示します。
前提条件
- ターミナルウィンドウ/コマンドラインへのアクセス
- リモートMySQLサーバー
- 須藤 またはルート ローカルマシンとリモートマシンの特権
MySQLServerリモート接続
リモートMySQLサーバーへの接続を許可することは、次の3つのステップで設定されます。
- MySQL構成ファイルを編集する
- ファイアウォールを構成する
- リモートMySQLサーバーに接続します
ステップ1:MySQL構成ファイルを編集する
1.1mysqld.cnfファイルにアクセスする
好みのテキストエディタを使用して、 mysqld.cnfを開きます。 ファイル。この例では、Ubuntu18.04のnanoテキストエディターを使用しています。コマンドラインインターフェイスに次のコマンドを入力して、MySQLサーバー構成ファイルにアクセスします。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
ファイルの場所は、使用しているディストリビューションとバージョンによって異なる場合があります。 MySQL構成ファイルがデフォルトの場所でない場合は、Linux find
を使用してみてください それを検出するコマンド。
1.2バインドアドレスIPの変更
これで、MySQLサーバー構成ファイルにアクセスできます。 bind-addressまで下にスクロールします 回線を接続し、IPアドレスを変更します。現在のデフォルトIPは127.0.0.1に設定されています。このIPは、ローカルマシンへのMySQL接続を制限します。
新しいIPは、MySQLサーバーにリモートでアクセスする必要があるマシンのアドレスと一致する必要があります。たとえば、MySQLを0.0.0.0にバインドすると、MySQLサーバーに到達するすべてのマシンもそれに接続できます。
必要な変更を加えたら、構成ファイルを保存して終了します。
1.3MySQLサービスを再起動します
MySQLサービスを再起動して、MySQL構成ファイルに加えた変更を適用します。
sudo systemctl restart mysql
次に、デフォルトのMySQLポートへのトラフィックを許可するように、現在のファイアウォール設定を調整する必要があります。
ステップ2:リモートMySQL接続を許可するようにファイアウォールを設定する
構成ファイルを編集しているときに、デフォルトのMySQLポートが 3306であることに気付いたと思います。 。
MySQLサーバーにファイアウォールをすでに構成している場合は、この特定のポートのトラフィックを開く必要があります。使用中のファイアウォールサービスに対応する以下の手順に従ってください。
オプション1:UFW(Uncomplicated Firewall)
UFWはUbuntuのデフォルトのファイアウォールツールです。ターミナルウィンドウで、次のコマンドを入力してトラフィックを許可し、IPとポートを一致させます。
sudo ufw allow from remote_ip_address to any port 3306
ルールが正常に更新されたことをシステムが確認します。
オプション2:FirewallD
CentOSのfirewalld管理ツールはゾーンを使用します 許可するトラフィックを指示します。
新しいゾーンを作成して、MySQLサーバートラフィックのルールを設定します。この例のゾーンの名前はmysqlruleです。 、前の例のIPアドレスを使用しました 133.155.44.103 :
sudo firewall-cmd --new-zone=mysqlrule --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlrule --add-source=133.155.44.103
sudo firewall-cmd --permanent --zone=mysqlrule --add-port=3306/tcp
sudo firewall-cmd --reload
ファイアウォールでポート3306を正常に開きました。
オプション3:iptablesでポート3306を開く
iptables ユーティリティは、デフォルトでほとんどのLinuxディストリビューションで使用できます。次のコマンドを入力して、MySQLポート3306を無制限のトラフィックに開放します。
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
特定のIPアドレスへのアクセスを制限するには、代わりに次のコマンドを使用します。
sudo iptables -A INPUT -p tcp -s 133.155.44.103 --dport 3306 -j ACCEPT
このコマンドは、133.155.44.103へのアクセスを許可します。リモート接続用のIPに置き換える必要があります。
iptablesルールに加えた変更を保存する必要があります。 Ubuntuベースのディストリビューションでは、次のコマンドを入力します。
sudo netfilter-persistent save
sudo netfilter-persistent reload
次のコマンドを入力して、CentOSに新しいiptablesルールを保存します。
service iptables save
ステップ3:リモートMySQLサーバーに接続する
これで、リモートサーバーは接続を受け入れる準備ができました。次のコマンドを使用して、リモートMySQLサーバーとの接続を確立します。
mysql -u username -h mysql_server_ip -p
-u username
コマンド内はMySQLユーザー名を表します。 -h mysql_server_ip
MySQLサーバーのIPまたはホスト名です。 -p
オプションを選択すると、MySQLユーザー名のパスワードを入力するように求められます。
以下のような出力が表示されます。
Connection to mysql_server_ip 3306 port [tcp/mysql] succeeded!
新しいMySQLデータベースへのリモートアクセスを許可する方法
データベースがまだない場合は、MySQLシェルで次のコマンドを入力することでデータベースを簡単に作成できます。
CREATE DATABASE ‘yourDB’;
特定のデータベースへのリモートユーザーアクセスを許可するには:
GRANT ALL PRIVILEGES ON yourDB.* TO [email protected]’133.155.44.103’ IDENTIFIED BY ‘password1’;
データベースの名前、ユーザー名、リモートIP、およびパスワードは、リモート接続に使用する情報と一致している必要があります。
既存のMySQLデータベースへのリモートアクセスを許可する方法
既存のデータベースのユーザーにリモートアクセスを許可するには、次の2つのコマンドのセットが必要です。
update db set Host=’133.155.44.103' where Db='yourDB';
update user set Host=’133.155.44.103' where user='user1';
User1 yourDBにアクセスできるようになりました IPによって識別されるリモートロケーションから133.155.44.103 。