Дано: iptables запись на месте; my.cnf правильно настроен; Пользователь и права доступа MySQL установлены правильно, но по-прежнему не могут получить удаленный доступ к MySQL: предложения?
Я хотел бы получить доступ к MySQL удаленно на экземпляре Amazon EC2 CentOS (я предполагаю, что это 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
). Фактически, в какой-то момент я перезапустил сервер.
Пароль установлен для пользователя dan
в MySQL одинаково для записей "localhost" и "24.91.66.190".
Я получил IP-адрес, с которого я пытаюсь получить доступ к серверу (24.91.66.190
) через простой URL http://whatismyip.com
, который я набрал в Chrome на моем клиентском компьютере с Windows.
Я пытаюсь получить доступ к удаленному экземпляру с компьютера Windows с помощью программы SQLYog.
Примечательно: когда я SSH в этот экземпляр EC2, я использую
ssh -i myprivatekey.pem ec2-user@x.x.x.x
(т.е. я использую логин с открытым / закрытым ключом, без пароля - я не уверен, что это актуально). Я использую программу Windows под названием "SecureCRT" для входа в мою сессию SSH - я не использую PuTTy.
Когда я пытаюсь получить доступ к базе данных MySQL с моего компьютера Windows по указанному IP (24.91.66.190
), с именем пользователя dan
и пароль, установленный для пользователя dan
при этом IP на MySQL на удаленном сервере соединение просто прерывается.
Исследовав оба документа для обоих iptables
а также mysql
, а также просматривая десятки сообщений на форуме по этой теме, но, не найдя никаких возможных подсказок, которые я еще не пробовал, я сейчас публикую этот вопрос на ServerFault.
Учитывая, что я предпринял все вышеперечисленные шаги и до сих пор не могу получить удаленный доступ к экземпляру MySQL, каковы рекомендации для следующих шагов, которые я мог бы предпринять, чтобы отследить проблему?
Одна последняя деталь: в iptables
перечисляя выше, я изменился с INPUT DROP [3;120]
в :INPUT ACCEPT [0;0]
- в случае, если это имело значение (это не так). Я планирую вернуть его обратно, как только эта проблема будет решена.