3

Недавно я прочитал это руководство, в котором объясняется, как можно легко перенастроить локальную установку phpMyAdmin для подключения к удаленной базе данных. Кажется, что функциональность поддерживается, но не включена по умолчанию. Я следовал руководству, но когда я пытаюсь подключиться к удаленному хосту, проверка не проходит.

Кто-то объяснил мне в комментариях к связанному вопросу, что логин MySQL принимает формат имени username@IPAddress . Удаленная база данных ожидает username@remotemachineIP , а phpMyAdmin отправляет username@mylocalIP .

Если он прав в этом, тогда это может быть моей проблемой. Это сбивает с толку, хотя, потому что статья не упоминает об этом.


  1. Могу ли я действительно подключиться к удаленному серверу (расположенному на Amazon EC2) с помощью phpMyAdmin?

  2. Может ли это быть реальной проблемой в моей попытке подключения?

  3. Если так, как я могу решить это?

2 ответа2

1

phpMyAdmin может подключиться к удаленной базе данных, просто настроив ее с помощью хоста, пользователя и пароля удаленного компьютера. Пока порт MySQL открыт на хосте, MySQL, работающий на нем, настроен на разрешение сетевых подключений, и у вашего пользователя есть разрешение на удаленное подключение.

На компьютере с phpMyAdmin или на любом другом компьютере (не на сервере MySQL) запустите клиент командной строки, чтобы проверить, возможно ли подключение:

$ mysql -h<ip> -u<user> -p<password> <database>

Где ip - это IP-адрес сервера MySQL, база данных - это имя вашей базы данных, а пользователь и пароль - учетные данные вашего пользователя в MySQL. Это должно дать вам приглашение клиента mysql на успех. Или правильное описание ошибки.

ОБНОВИТЬ

Сервер MySQL обычно настраивается для прослушивания только локального сокета. По умолчанию он не привязан к TCP-порту 3306. Для правильной настройки вам нужно отредактировать файл конфигурации сервера (обычно /etc/my.cnf)

[mysqld]
bind-address            = 10.0.0.5

Вы должны заменить IP в этом примере на IP-адрес вашего сервера. И вы должны убедиться, что опция «пропуск сети» не активирована. Потому что это предотвратит привязку MySQL к настроенному IP.

После перезагрузки вы можете проверить, прослушивает ли MySQL следующую команду в оболочке сервера:

# netstat -nap | grep mysqld
tcp        0      0 10.0.0.5:3306                0.0.0.0:*                   LISTEN      3547/mysqld
unix  2      [ ACC ]     STREAM     LISTENING     13554  3547/mysqld         /var/lib/mysql/mysql.sock

Здесь вы должны увидеть строку, похожую на первый вывод. Номер 3306 является портом MySQL по умолчанию, и вы должны открыть его для входящих TCP-соединений, если у вас есть брандмауэр, защищающий сервер.

После этого вы сможете подключиться к MySQL. Но все же у вас могут возникнуть проблемы при входе в систему, если ваши права доступа не установлены должным образом. Пользователи MySQL имеют имя пользователя и хост в форме user @ host, поэтому, если вы создадите пользователя my_user @ localhost и попытаетесь войти в систему с чего-либо другого, кроме localhost, доступ будет запрещен. Давайте подумаем, что ваш клиент работает на компьютере с IP-адресом 10.0.0.33, и вы хотите дать разрешение на доступ к базе данных. Ваш пользователь должен быть my_user@10.0.0.33 или my_user @%, который является вторым пользователем без ограничений для подключения с любого компьютера. Чего лучше избегать, если вы заранее знаете IP своего клиента.

0

Вы должны разрешить пользователю MySQL входить с удаленного компьютера. Для этого на сервере mysql необходимо выполнить следующую команду:* GRANT ALL PRIVILEGES ON . TO 'USERNAME' @ '%' ИДЕНТИФИЦИРОВАНО ПАРОЛЕМ *

Более того, вы должны отключить привязку IP на сервере MySQL, отредактировав файл конфигурации

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .