Я пытаюсь использовать SSH-туннель для доступа к MySQL-серверу, работающему на сервере FreeBSD 10.1. Эти попытки выполняются с помощью Heidi SQL (http://www.heidisql.com/).
Демон SSH на сервере FreeBSD не разрешает вход в систему с правами root. Сначала мы должны использовать учетную запись, входящую в группу wheel, а затем использовать SU для получения root-прав.
Я думаю, возникает вопрос: нужно ли демону SSH разрешать вход в систему с правами root, чтобы можно было подключиться к серверу MySQL? Потому что, что бы я ни пытался, сервер MySQL отвечает «Доступ запрещен».
Вывод из HeidiSQL:
/* [SRV03 Live (SSH)] Connection to 127.0.0.1 closed at 2015-07-16 13:20:00 */
/* Connecting to 127.0.0.1 via MySQL (SSH tunnel), username ******, using password: No ... */
/* Attempt to create plink.exe process, waiting 4s for response ... */
/* C:\Program Files\Putty\plink.exe -ssh username@111.222.333.444 -pw "******" -P 12345 -N -L 3307:127.0.0.1:3306 */
SELECT CONNECTION_ID();
/* Connected. Thread-ID: 1913 */
/* Characterset: utf8mb4 */
SHOW STATUS;
SHOW VARIABLES;
/* Entering session "SRV03 Devel (SSH)" */
/* Access is denied */
Любые мысли по этому поводу были бы очень признательны.
Спасибо,
Ваша проблема, скорее всего, связана с MySQL. Меньше HeidiSQL и меньше всего FreeBSD. Вы даете ценные мелочи, но мы можем сказать следующее:
Заблуждения:
Вы пытаетесь связать вместе 3 технологии: MySQL, SSH-туннель и HeidiSQL.
Для устранения неполадок необходимо убедиться, что каждый компонент работает индивидуально. А пока кажется, что ты пытаешься исправить все сразу. Но нам нужно установить первопричину (не путать ни с «корнем» FreeBSD, ни с «корнем» MySQL :-))
FreeBSD
Когда вы пытаетесь подключиться к серверу MySQL, это происходит через сетевой стек. Если у вас нет брандмауэра, все готово.
Но если у вас есть брандмауэр (обычно «pf»), вам может потребоваться разрешить доступ к порту 3306 (MySQL) для localhost (127.0.0.1). Это особенно верно, если вы бегаете в тюрьмах. Я предполагаю, что вы используете брандмауэр, потому что пытаетесь туннелировать трафик. И я заметил, что у вас SSH работает на порту 12345, а не 22.
Если вы сомневаетесь в правильности настройки брандмауэра и работаете в надежной сети, отключите «pf» на время тестирования. Это сделает вашу жизнь намного проще!
MySQL
Убедитесь, что у вас есть работающий пользователь MySQL и что вы можете подключиться к базе данных с помощью подключения к локальной сети.
Доступ к базе данных MySQL с помощью клиента MySQL
mysql -u USERNAME –h 127.0.0.1 –p
В -h
важно, так как вы затем используете TCP-соединение, а не только именованный канал. Убедитесь, что у вас есть доступ к схеме, которую вы хотите использовать.
mysql> USE databasename
mysql> SELECT * FROM tablename LIMIT 10
HeidiSQL
Если вы можете подключиться через клиент MySQL, мы можем начать тестирование HeidiSQL. Если у вас нет брандмауэра на сервере FreeBSD, убедитесь, что вы можете выполнить прямое подключение из HeidiSQL, используя имя пользователя и пароль MySQL.
Если у вас есть брандмауэр, я бы попытался открыть порт 3306 с вашего IP-адреса для тестирования. Если вы используете «pf», используйте одно из следующих:
pass in on $ext_if proto tcp from any to any port 3306
pass in on $ext_if proto tcp from YOURIPADDRESS to any port 3306
Этим вы снова можете подтвердить, что можете правильно подключиться к MySQL из HeidiSQL без туннеля. Вы можете удалить это правило, когда закончите тестирование.
Наконец, вы можете протестировать, запустив туннель вручную. Закройте HeidiSQL и введите в командной строке следующее:
"C:\Program Files\Putty\plink.exe" -ssh username@111.222.333.444 -pw "******" -P 12345 -N -L 3307:127.0.0.1:3306
Это должно соединить вас с вашим сервером FreeBSD и установить туннель. Если это успешно, вы можете запустить HeidiSQL и попытаться установить обычное соединение с MySQL (но через порт 3307).
Выше приведены шаги, которые я бы выполнил сам, чтобы отладить такую проблему, как ваш.