
Amazon EC2 CentOS 인스턴스에서 원격으로 MySQL에 액세스하고 싶습니다( yum
설치된 애플리케이션과 라이브러리를 업데이트하는 데 사용하므로 CentOS라고 가정합니다).
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 주소를 얻었습니다~에서클라이언트 Windows 시스템에서 실행되는 Chrome에 입력한 24.91.66.190
단순 URL을 통해 서버( )에 액세스하려고 합니다 .http://whatismyip.com
SQLYog 프로그램을 사용하여 Windows 시스템에서 원격 인스턴스에 액세스하려고 합니다.
참고: 이 EC2 인스턴스에 SSH로 연결할 때 다음을 사용합니다.
ssh -i myprivatekey.pem [email protected]
(즉, 저는 비밀번호 없이 공개/개인 키 로그인을 사용합니다. 이것이 관련이 있는지 확실하지 않습니다.) SSH 세션에 로그온하기 위해 'SecureCRT'라는 Windows 프로그램을 사용합니다. PuTTy를 사용하지 않습니다.
원격 서버의 MySQL에 있는 해당 IP의 사용자에 대해 사용자 이름과 비밀번호가 설정된 상태 에서 표시된 IP( 24.91.66.190
) 의 Windows 시스템에서 MySQL 데이터베이스에 액세스하려고 하면 연결 시간이 초과됩니다.dan
dan
iptables
및 에 대한 일부 문서를 조사하고 mysql
해당 주제에 대한 수십 개의 포럼 게시물을 검토했지만 아직 시도하지 않은 가능한 단서를 찾지 못한 채 이제 이 질문을 ServerFault에 게시하고 있습니다.
위의 모든 단계를 수행했지만 여전히 원격으로 MySQL 인스턴스에 액세스할 수 없는 경우 문제를 추적하기 위해 취할 수 있는 다음 단계에 대한 제안 사항은 무엇입니까?
마지막 세부 사항: 위 목록에서 나는 에서 - 로 iptables
변경된 경우를 대비하여 변경했습니다 (그렇지 않았습니다). 이 문제가 해결되는 대로 다시 바꿀 예정입니다.INPUT DROP [3;120]
:INPUT ACCEPT [0;0]