Все задействованные компьютеры являются компьютерами Mac OS X 10.6.x.
Я на компьютере A, и на нем запущен mysql, и я могу подключиться к нему как A~ $ mysql -u punkish -p database
и так далее.
У меня есть доступ к компьютеру B, на котором также запущен mysql. Я могу ssh в B через порт 2200 с настроенными парами ключей ssh, и как только я могу подключиться к БД,
A~ $ ssh -p 2200 punkish@B
B~ $ mysql -u punkish -p database
Однако я хочу настроить переадресацию портов через ssh на моем компьютере, чтобы все запросы, сделанные для mysql на порт 3307 на моем компьютере A, фактически отправлялись на порт 3306 на B. Это позволит мне использовать программу с графическим интерфейсом (Quantum GIS), которая хочет подключиться к mysql, но не может сделать это через туннель. Итак, я делаю следующее
A~ $ ssh -p 2200 -L 3307:B:3306 punkish@B
B~ $
Вышеперечисленное регистрирует меня прямо в B. Я не уверен, установлен ли туннель, но я предполагаю, что это так. Однако следующее не удается (в другом терминале
A~ $ mysql -P 3307 -u punkish -p
Enter password:
ERROR 1045 (28000): Access denied for user 'punkish'@'localhost' (using password: YES)
Вот что интересно: у меня есть еще одна графическая программа под названием Sequel Pro (клиент MySQL для настольных компьютеров для Mac OS X), которая может просто установить соединение с mysql @ B через ssh. Итак, я знаю, что-то работает ... Я просто не знаю как.
Отвечая на мой собственный вопрос (потому что я не могу ответить менее чем за 8 часов)
Я нашел решение, но не понимаю почему. Вот оно --
Я использовал следующую команду, чтобы сделать туннель
user@compt_A ~$ssh -p 2200 -L 3307:compt_B:3306 ssh_user@compt_B cat -
Я должен изменить выше, чтобы
user@compt_A ~$ssh -p 2200 -L 3307:127.0.0.1:3306 ssh_user@compt_B cat -
Теперь следующие работы
user@compt_A ~$mysql -P 3307 -p -h 127.0.0.1 -u <db user@compt_B>
Причина, по которой это не имеет смысла для меня, состоит в том, что первая команда говорит: «установить SSH-туннель через порт 2200, перенаправив локальный порт 3307 на порт 3306 на компьютере B», и это имеет больше смысла, чем «установить SSH-туннель через порт 2200, переадресация локального порта 3307 на порт 3306 на 127.0.0.1 "
Тем не менее, это работает.
Ох, если я использую первую команду, то команда mysql завершится неудачно с сообщением
ERROR 1130 (HY000): Host 'compt_A' is not allowed to connect to this MySQL server