web-dev-qa-db-ja.com

プライベートIPアドレスを使用してリモートのmysqlデータベースに接続する

データベースサーバーにはプライベートIPアドレスしかありません。アプリケーションサーバーからデータベースサーバーにSSH接続できます。アプリサーバーのIPアドレスを使用してユーザーを作成しました。

誰かがubuntu 16.04でdbサーバーのプライベートIPアドレスを使用してアプリサーバーからmysqlデータベースにアクセスする方法を教えてもらえますか?

1
TrickyExplorer

Mysqlサーバーはループバックアドレス(127.0.0.1または同等のipv6)にバインドされている可能性が高いため、LANネットワークまでそれを開く必要があります。これは、mysqlサーバーで次のコマンドを使用して確認できます。

# netstat -lntp | grep 3306
tcp        0      0 127.0.0.1:3306     0.0.0.0:*    LISTEN   20080/mysqld

Ipにバインドするためのそのオプションは、my.cnf、またはmysql構成ファイルがシステム上にある場所で構成され、すべてのipにバインドするように変更できます。

[mysqld]
bind-address                   = 127.0.0.1

への変更

[mysqld]
bind-address                   = 0.0.0.0

mysqlサーバーを再起動します。明らかに、mysqlサーバーで権限が正しく設定されていることを確認することが重要です。

設定ファイルが存在する場所は、使用しているmysqlのバージョンによって異なります。 mysql-server-core-5.7を実行しているUbuntu 16.04.3の/etc/mysql/mysql.conf.d/mysqld.cnfは別のCentOSボックスの/etc/my.cnfにあるので、現在の環境についてより具体的にする必要があるかもしれません...

Mysql-clientを使用してアプリサーバーからdbサーバーのプライベートIPに接続することで、機能しているかどうかをテストできます

# echo "show databases;"  | mysql -uroot -psomepass -h localhost

Database
information_schema
wp_is_annoying_db
mysql
performance_schema
sys

それがうまくいかない場合は、基本から始めるべきです

dbサーバーのプライベートIPアドレスをpingします。

$ ping 192.168.x.x
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.051 ms

telnetまたはnetcatを使用してポートをテストする

$ telnet localhost 3306
Trying 127.0.0.1...
Connected to localhost.

または、telnetがインストールされていない場合はnetcatを使用します。

nc -v localhost 3306
Connection to localhost 3306 port [tcp/mysql] succeeded!
3
Tom H

アプリサーバーからデータベースサーバーにping/telnet/ncを実行してみます。これでdbサーバーに接続できない場合。ファイアウォールを無効にします(ファイアウォールブロックである必要があり、それは私用でした!)

0
TrickyExplorer