web-dev-qa-db-ja.com

リモートサーバーのmysqlに接続できません

CentOSを実行しているマシンがいくつかあり、そのうちの1つはmysqlサーバーとして設定されています。私はしばらくこれを実行していましたが、リモートマシンからmysqlに問題なく接続できましたが、停電してすべてのPCを再起動した後、

ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.22.6' (113)

サーバーマシンでは、MySQLサーバーにローカルで問題なく接続できます。

ざっと検索すると、113は「ホストへのルートがない」ことを意味するため、これはネットワークの問題のようです。クライアントマシンから192.168.22.6にpingを送信し、それにSSHで接続できます。

サーバーPCでnetstat -lnp | grep mysql、私は得ます:

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                    LISTEN      1588/mysqld
unix  2      [ ACC ]     STREAM     LISTENING     13448  1588/mysqld         /var/lib/mysql/mysql.sock

そのため、ポート3306でリッスンしているようです。ただし、クライアントマシンに移動してnc -vz 192.168.22.6 3306、私は得ます:

nc: connect to 192.168.22.6 port 3306 (tcp) failed: No route to Host

これはファイアウォールの問題かもしれないと思っています。サーバー上でiptables --list-rule | grep 3306結果がありません。これは、ポート3306がファイアウォールによってブロックされていることを意味しますか(netstatがリスニングしていると示していても)?もしそうなら、どうすればそのポートの例外を追加できますか?それとも私はここで完全に間違った軌道に乗っていますか?

編集:my.cnfファイルが次のようになっていることにも注意してください。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
max_connections=500
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#bind-address = 192.168.22.6
slow_query_log=1
log-slow-queries = /var/log/mysql-slow.log
long_query_time = 10
log-queries-not-using-indexes

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

したがって、スキップネットワーキングはありません。 bind-addressが設定されていないことが問題かどうかはわかりませんか?

1
Steven Linden

ポートが開いていることを確認し、

firewall-cmd --get-active-zones

ポートを開かない場合は、

firewall-cmd --zone=public --add-port=port_id/tcp --permanent

次に、ファイアウォールをリロードします

firewall-cmd --reload

Mysqlユーザーが別のホスト経由でアクセスできるようにします。

GRANT ALL PRIVILEGES ON user_name.* TO 'db_name'@'192.168.1.%' IDENTIFIED BY 'password';

'192.168.1。%':192.168.1.x範囲のすべてのホストからのアクセスを許可するか、IPを指定できます。

1
vish