LINUX.ORG.RU
ФорумAdmin

Не получается подключиться к mysql через ssh-тунель

 ,


0

1

Не получается подключиться к mysql через ssh-тунель.
Делаю так:
Запускаю в фоне ssh, для поднятия тунеля:

[iskatel@mastersrv ~]$ (ssh -L 33061:127.0.0.1:3306 iskatel@192.168.212.1 &)
И пытаюсь обратиться:
[iskatel@mastersrv ~]$ echo 'SHOW DATABASES;' | mysql --port=33061 --user=root -t mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)


Локально подключиться получается:
iskatel@siplant:~$ echo 'SHOW DATABASES;' | mysql --user=root -t mysql
+--------------------+
| Database           |
+--------------------+
| information_schema |
| acl_siplant        |
| mysql              |
| siplant            |
| siplant_new        |
+--------------------+
Привелегии следующие:
iskatel@siplant:~$ echo 'SELECT Host,User,Password FROM user;' | mysql --user=root -t mysql
+-----------+------------------+-------------------------------------------+
| Host      | User             | Password                                  |
+-----------+------------------+-------------------------------------------+
| localhost | root             |                                           |
| siplant   | root             |                                           |
| 127.0.0.1 | root             |                                           |
| localhost | debian-sys-maint | *F930640RRD01399ABB590522FABCD52A39E7947E |
| localhost | plannet          | *28A09A9RR3E263FBEA39AFA86ABCD2AD2444C711 |
| 127.0.0.1 | siplant          | *6138D32RRD61508507CAB0E28ABCD9E10872F4D1 |
| localhost | siplant          | *6138D32RRD61508507CAB0E28ABCD9E10872F4D1 |
| %         | rsiplant         | *B76AC77RR1C7F2D63119812C0ABCDA6568CDC1FF |
+-----------+------------------+-------------------------------------------+
iskatel@siplant:~$ echo 'SELECT Host,Db,User FROM db;' | mysql --user=root -t mysql
+-----------+-------------+---------+
| Host      | Db          | User    |
+-----------+-------------+---------+
| 127.0.0.1 | siplant     | siplant |
| localhost | acl_siplant | siplant |
| localhost | elcom       | plannet |
| localhost | siplant     | siplant |
| localhost | siplant_new | siplant |
+-----------+-------------+---------+

★★★★★

In MySQL, the localhost keyword is reserved for connection using the MySQL socket and you should use the ip-address 127.0.0.1 for TCP connections to the MySQL network port on 127.0.0.1. This means that both the server must grant privileges to users from specifically 127.0.0.1, and the client must use -h 127.0.0.1 to go through the tunnel instead of connecting to a local socket.

To allow you access using the SSH port forwarding you need something like:

GRANT SELECT ON *.* TO user@`127.0.0.1` and then run

FLUSH PRIVILEGES; and possibly

FLUSH QUERY CACHE; If it still doesn't work, restart the server process.

vvviperrr ★★★★★ ()
Последнее исправление: vvviperrr (всего исправлений: 1)
Ответ на: комментарий от sunny1983

я предположил, что юзеру запрещено подключаться по сети, только через unix сокет. если запрещено - надо разрешить.

попробуй локально подключиться, указав не localhost, а 127.0.0.1

если в привилегиях ничего менять нельзя

обратиться к вашему системному администратору

vvviperrr ★★★★★ ()
Последнее исправление: vvviperrr (всего исправлений: 2)
Ответ на: комментарий от vvviperrr

Сейчас хотел снова попробовать и что-то у меня не получается создать ssh-тунель. Вернее получается подключиться по ssh с созданием тунеля:

[iskatel@mastersrv ~]$ ssh -L 33061:127.0.0.1:3306 iskatel@192.168.212.1
А вот если я хочу запустить ssh в фоне, чтобы продолжить вводить команды получается следующее:
iskatel@mastersrv ~]$ (ssh -L 33061:127.0.0.1:3306 iskatel@192.168.212.1 &)
[iskatel@mastersrv ~]$ Pseudo-terminal will not be allocated because stdin is not a terminal.
iskatel@192.168.212.1's password: 
Permission denied, please try again.
iskatel@192.168.212.1's password: 
Permission denied, please try again.
iskatel@192.168.212.1's password: 
Permission denied (publickey,password).

sunny1983 ★★★★★ ()
Ответ на: комментарий от thesis

Фокус не удался:

[iskatel@mastersrv ~]$ ssh -fN -L 33061:127.0.0.1:3306 iskatel@192.168.212.1 &
[1] 1158
[iskatel@mastersrv ~]$ echo 'SHOW DATABASES;' | mysql --host=127.0.0.1 --port=33061 --user=root -t mysql
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
И да, я проверил, опции skip-networking в my.cnf на удалённом сервере нет, опция bind-address закоментирована.

sunny1983 ★★★★★ ()
Ответ на: комментарий от thesis
[iskatel@mastersrv ~]$ fg
ssh -fN -L 33061:127.0.0.1:3306 iskatel@192.168.212.1

И гугл говорит, что ошибка 2003 проявляется когда в my.cnf опция bind-address не закоментирована. Но у меня-то как раз закоментирована.

sunny1983 ★★★★★ ()
Ответ на: комментарий от sunny1983

Мне все-таки кажется, что у тебя не устанавливается туннель. Может, ssh ждет ввожа (например, у меня доступ парольный, поэтому после выполнения команды надо вызвать fg и ввести пароль), или может у тебя предыдущие инкарнации ssh сокет не отпустили.

Удостоверья на 100% что ssh подключен и локальный сокет слушает, и что ты к этому локальному сокету можешь телнетом подключиться.

thesis ★★★★★ ()
Ответ на: комментарий от thesis

Точняк! Когда задавался вопросом, совсем забыл что клиент на ssh-сервере как-то аутентифицироваться должен. Всё, теперь всё работает.

sunny1983 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.