给定:iptables 条目已到位;my.cnf 已正确设置;MySQL 用户和权限已正确设置 - 但仍然无法远程访问 MySQL:有什么建议吗?

给定:iptables 条目已到位;my.cnf 已正确设置;MySQL 用户和权限已正确设置 - 但仍然无法远程访问 MySQL:有什么建议吗?

我想在 Amazon EC2 CentOS 实例上远程访问 MySQL(我假设它是 CentOS,因为我用它yum来更新已安装的应用程序和库)。

我相信iptables设置正确,my.cnf设置正确,并且 MySQL 用户设置正确。

我在接下来的章节中列出了所有相关设置。


内容iptables

# Generated by iptables-save v1.4.18 on Tue Mar  3 18:02:27 2015
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2620:387248]
[0:0] -A INPUT -i lo -j ACCEPT
[9189:1027277] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[216:12376] -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
[0:0] -A INPUT -s 24.91.66.190/32 -p tcp -i eth0 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Tue Mar  3 18:02:27 2015

内容my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd

bind-address=0.0.0.0
port=3306

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

相关MySQL设置:

mysql> select user, host from mysql.user;
+-------------+--------------+
| user        | host         |
+-------------+--------------+
| root        | 127.0.0.1    |
| dan         | 24.91.66.190 |
| root        | ::1          |
| dan         | localhost    |
| glassbiller | localhost    |
| root        | localhost    |
+-------------+--------------+
6 rows in set (0.00 sec)

mysql> select user, host, db, select_priv, insert_priv from mysql.db;
+-------------+--------------+------------------+-------------+-------------+
| user        | host         | db               | select_priv | insert_priv |
+-------------+--------------+------------------+-------------+-------------+
| dan         | 24.91.66.190 | glassbiller_test | Y           | Y           |
| glassbiller | localhost    | glassbiller\_%   | Y           | Y           |
| dan         | localhost    | glassbiller_test | Y           | Y           |
+-------------+--------------+------------------+-------------+-------------+
3 rows in set (0.00 sec)

服务器和客户端MySQL工具的详细信息:

来自wget -qO- http://instance-data/latest/meta-data/public-ipv4(见https://stackoverflow.com/a/7536318/368896) 我已经确认了我必须从我的远程机器访问的 IP 地址,并且我正在使用它。

我已重启iptables( sudo service iptables restart) 和mysql( sudo service mysqld restart)。事实上,我曾重启过服务器。

MySQL 中为用户设置的密码dan对于“localhost”和“24.91.66.190”条目是相同的。

我获得了 IP 地址24.91.66.190我正尝试通过简单的 URL访问服务器( ) http://whatismyip.com,该 URL 是我在客户端 Windows 机器上运行的 Chrome 中输入的。

我正在尝试使用 SQLYog 程序从 Windows 机器访问远程实例。

值得注意的是:当我使用 SSH 连接到此 EC2 实例时,我使用

ssh -i myprivatekey.pem [email protected](即,我使用公钥/私钥登录,没有密码 - 我不确定这是否相关)。我使用名为“SecureCRT”的 Windows 程序登录到我的 SSH 会话 - 我不使用 PuTTy。


24.91.66.190当我尝试从我的 Windows 机器上的指定 IP ( )访问 MySQL 数据库时,使用在远程服务器上的 MySQL 上为该 IPdan的用户设置的用户名和密码dan,连接就会超时。

在调查了和的一些文档iptablesmysql查看了有关该主题的数十个论坛帖子后,但没有找到任何我尚未尝试过的可能线索,因此我现在在 ServerFault 上发布了这个问题。

鉴于我已完成上述所有步骤,但仍然无法远程访问 MySQL 实例,对于我可以采取的后续步骤,有哪些建议可以用于追踪问题?


最后一点:在iptables上面的列表中,我已将 改为INPUT DROP [3;120]-:INPUT ACCEPT [0;0]以防万一(但事实并非如此)。我计划在问题解决后立即将其改回来。

相关内容