2つの VPS サーバーがあり、両方とも MySQL がインストールされています。1つはテスト用、もう1つは開発用です。サーバーの1つで、外部から接続できません。ユーザーとともに;
'mytestuser' @ '%'
開いているポートFinder によると、問題のサーバーのポート3306は閉じているようです。 C++およびJavaプログラムを任意のポートで問題なくリッスンしています。なぜこれが起こっているのですか、どうすれば修正できますか?
インストールされているUbuntuはUbuntu 11.10(GNU/Linux 2.6.32-042stab072.10 x86_64)
netstat -Tuple
の結果tcp 0 0 localhost.lo:submission *:* LISTEN root 39967664 -
tcp 0 0 *:mysql *:* LISTEN mysql 1847519288 -
問題は、サーバーが内部でのみリッスンしていることでした。
bind-address 127.0.0.1
から/etc/mysql/my.cnf
行を削除すると、問題が解決しました。
Ubuntuの新しいバージョン(≥16.04)では、/etc/mysql/mysql.conf.d/mysqld.cnf
にこの行がある場合があります。
ポートが閉じられていることが確実な場合(VPSがそのポートを閉じるのはおかしいと思う)、MySQLの構成ファイルを変更して別のものを使用することをお勧めします。
ターミナルで構成ファイルSudo nano /etc/mysql/mysql.conf
を開き、[mysqld]
セクションを探します。その中で、port = 3306
という行を探します。使用されていない別のポートに変更し、ファイルを保存します。
次に、VPSを再起動するか、Sudo service mysql restart
などのサービスを再起動します。
ファイルmysql.conf
が上記のファイルにない場合、この他の場所にあることに注意してください。
/etc/my.conf
/etc/my.cnf
/etc/mysql/my.conf
service
コマンドが機能しない場合は、次を実行します。
Sudo /etc/init.d/mysql restart
問題が解決しない場合は、私の場合、 iptables (オプションである可能性がある場合は、新しく起動するためにiptablesのすべてを実際に削除します)またはその他のファイアウォール対応オプションをチェックします。
VPSなので、VPSコントロールパネルもチェックして、ポートをブロックできるオプションがあるかどうかを確認します。
それとは別に、VPSでnmap
を実行して、開いているポートを確認します。 VPSの外部から実行して、開いているポートを確認する必要があります。
netstat -tuplen
は、サーバー上で開いているポートとリッスンモードになっているポートを確認することもお勧めします。
私はこの方法を使用します:
Sudo ufw status
Sudo ufw allow XXXX/tcp
# use a port other than the default/predictable 3306
# work outside, and close the door when you are done
Sudo ufw deny XXXX/tcp
他の構成ファイルを変更する必要はなく、デフォルトで追加のポートを開く必要もありません。
bind-address 127.0.0.1
でbind-address 0.0.0.0
を/etc/mysql/mysql.conf.d
に変更することでこれを修正しました(MySQLがすべてのポートでリッスンするように)。
また、リモートで使用するmysqlユーザーアカウントを設定します( https://stackoverflow.com/a/24171107/132374 を参照)。
設定がディレクトリ/etc/mysql/mysql.conf.d/mysqld.cnf
にある場合があります。そうでない場合は確認してください。