
我想在 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 上的該 IP 上dan
的使用者設定的使用者名稱和密碼dan
,連線就會逾時。
在研究了 和 的一些文檔iptables
,mysql
並查看了有關該主題的數十個論壇帖子後,但沒有找到任何我尚未嘗試過的可能線索,我現在將這個問題發佈在 ServerFault 上。
鑑於我已執行上述所有步驟,但仍然無法遠端存取 MySQL 實例,我可以採取哪些步驟來尋找問題?
最後一個細節:在iptables
上面的列表中,我已將其從 更改為INPUT DROP [3;120]
-:INPUT ACCEPT [0;0]
以防產生影響(但事實並非如此)。我打算等這個問題解決後再改回來。