Mysqlはリモート接続を受け入れません


1

CentOS 6.5 64ビットサーバーでMySQLを構成し、任意のIPからリモート接続を受け入れるように構成しました。

HeidiSQLを介して接続しようとすると、次のエラーが表示されます。

SQL Error (2003): Can't connect to MySQL server on 'ip' (10060)

私の設定は次のとおりです。

/etc/my.conf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=SERVERIP
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

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

MySQLユーザー:

mysql> SELECT User, Host, Password FROM mysql.user;
+--------+--------------------+-------------------------------------------+
| User   | Host               | Password                                  |
+--------+--------------------+-------------------------------------------+
| root   | localhost          | *|
| root   | nl.-----------.net | *|
| root   | 127.0.0.1          | *|
| radius | localhost          | *|
| radius | %                  | *|
| root   | %                  | *|
+--------+--------------------+-------------------------------------------+

iptables:

[root@nl ~]# iptables-save
# Generated by iptables-save v1.4.7 on Sat Aug  2 08:39:22 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2269:299675]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Sat Aug  2 08:39:22 2014

SELinux設定:

SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

私のホストは、ポートがブロックされていないという。PCでファイアウォールを無効にしましたが、それでも同じエラーが発生しました。MySQLはサーバー上で実行されています。

前もって感謝します

回答:


0

最も可能性の高い問題は次のとおりです。

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

ルールの順序が間違っています。iptablesルールは「上から下」に評価され、一致する最初のルール(例外はほとんどありません)が最後のルールです。あなたは持っているREJECT、先行するルールACCEPTのルールを、そうインクルードルールが優先され、接続が拒否されREJECT。

ルールセット内のこれら2つのルールの順序を逆にすると、エラーがなくなる可能性があります。

私もお勧めしたいあなたは、MySQLの使用してリモートログインを許可しないことをrootあなたがに基づいてやっているように見えるよう、アカウントをmysql.userテーブルの内容、特にあなたがインターネット接続上から許可されている場所を制限するために何もしていないからです。代わりに、専用のアカウントを使用して、適切なデータベースに必要なアクセス許可を付与し、IPレベルでのセキュリティの強化も検討してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.