sash-kan писал(а): ↑07.02.2012 23:09
теоретически, возможно, сработает и вариант:
$ mysql -h localhost -u <пользователь> -p<пароль> <база данных>
нет, параметра "-h localhost", скорее всего, будет недостаточно·
по крайней мере у меня и в этом случае mysql пытался соединиться с mysqld именно через файловый сокет·
TTATPuOT
так что используйте параметр "--protocol=TCP"
у меня сработало·
убеждаюсь, что порт 3306 на моей машине никто не слушает
$ telnet localhost 3306
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
$
создаю туннель к машине server
$ ssh -CfNL 3306:localhost:3306 server
$
теперь видно, что кто-то слушает порт 3306 на моей машине
$ telnet localhost 3306
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
5
5.0.51aLDkl^rA.`,�3yaXt`f^%;:PbConnection closed by foreign host.
$
ну, можно и клиентом попробовать подключиться
$ mysql -u someuser -p somedatabase
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
$
упс! забыл указать протокол!
с протоколом — всё океу
$ mysql --protocol=TCP -u someuser -p somedatabase
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 69217
Server version: 5.0.51a Mandriva Linux - MySQL Standard Edition (GPL)
Copyright © 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit
Bye
$
по поводу параметров к ssh, которые я использовал·
я добавил "-f", чтобы процесс ssh уходил в бэкграунд, и "-N", чтобы он при этом не ругался на то, что не указана команда (мне же надо только туннелировать трафик, а выполнять на удалённой стороне команды мне сейчас не нужно)·
этот процесс ssh присутствует в списке процессов:
вот он
$ ps ax | grep 'ssh -CfNL 3306:localhost:3306 server'
3185 ? Ss 0:00 ssh -CfNL 3306:localhost:3306 server
$
и выполняет свою работу: переправляет все обращения к локальному порту 3306 на порт 3306 машины server (и возвращает ответы)·
остановить его можно командой kill:
kill <номер процесса>
$ kill 3185
$
чтобы не смотреть список процессов на предмет номера интересующего процесса, можно воспользоваться программой pkill (в кавычки надо подставить полный текст команды, которой запускался ssh-туннель):
Shell
$ pkill -f 'ssh -CfNL 3306:localhost:3306 server'
$