Назад | Перейти на главную страницу

SSH-туннель к MySQL, работающий на FreeBSD (Heidi SQL)

Я пытаюсь использовать 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. Вы даете ценные мелочи, но мы можем сказать следующее:

Заблуждения:

  • "Root" системы FreeBSD и "root" пользователи MySQL не связаны!
  • Вам не нужно входить в систему FreeBSD как «root», чтобы работать в базе данных MySQL как «root» MySQL.
  • Вам не нужно использовать учетную запись, которая является членом колеса (потому что вам не нужно использовать su для "root")
  • Любой пользователь FreeBSD может подключиться к MySQL, используя любой Имя пользователя MySQL. Доступ к MySQL ограничен по именованным каналам или TCP. MySQL не заботится о том, к какой системе (FreeBSD) подключается пользователь.

Вы пытаетесь связать вместе 3 технологии: MySQL, SSH-туннель и HeidiSQL.

Для устранения неполадок необходимо убедиться, что каждый компонент работает индивидуально. А пока кажется, что ты пытаешься исправить все сразу. Но нам нужно установить первопричину (не путать ни с «корнем» FreeBSD, ни с «корнем» MySQL :-))

FreeBSD

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

Но если у вас есть брандмауэр (обычно «pf»), вам может потребоваться разрешить доступ к порту 3306 (MySQL) для localhost (127.0.0.1). Это особенно верно, если вы бегаете в тюрьмах. Я предполагаю, что вы используете брандмауэр, потому что пытаетесь туннелировать трафик. И я заметил, что у вас SSH работает на порту 12345, а не 22.

Если вы сомневаетесь в правильности настройки брандмауэра и работаете в надежной сети, отключите «pf» на время тестирования. Это сделает вашу жизнь намного проще!

MySQL

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

  1. SSH к серверу FreeBSD с любой учетной записью
  2. Доступ к базе данных 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).

Выше приведены шаги, которые я бы выполнил сам, чтобы отладить такую ​​проблему, как ваш.